Delphi & PEload

High-level languages programming questions
  • А вот если бы еще заняться вот этим:
    МЭФК ( KOS.dll ) viewtopic.php?f=39&t=3205
    который я когда-то начал писать на Delphi7, и связать его с DelphiPEload, то его бы можно было использовать вместо KlbrInWin. И было бы это лучше чем KlbrInWin, - запускать можно бы было проект в винде, и пошагово (кл.F7, кл.F8 )"прокурчивать" проект!
    Во как!
  • Кто хочет обновиться :-) вот пожалуйста
    Downloaded 414 times
    изменения в модулях и добавлено два примера DrawLine и DrawRect.
    Распаковать и перезаписать файлы в DelphiPEload.
    ====================
    Что !?... Мало кто хочет обновиться (DelphiPEload.zip [244.65 КБ] 1 скачивание ), - ну ничё, ничё, - просто еще не время! Придёт и «наше время», ой придёт! :-)
  • Собираюсь писать конвертировщик для строк, ANSItoKOS (KOStoANSI) . Может есть уже готовый код на любом ЯП киньте плиз ссылку на тот код (или в крайнем случае таблицу )
  • 0CodErr, мне в лс "красиво" всё расписал как можно использовать ShortString... :-))
    но дальше, чем просто присвоить строке статические данные, шото у меня дело не доходит!
    вот в реальности когда понадобиться делать, например, вот такое s1:=s1+s2+s3[2]....
    Так фиг оно работает! такая же картина с String, а PCar вообще не понятки!
    Еще раз говорю: может изначально другой подход выберем, например
    type stringKOS= array[0..256] of Char;
    или даже
    type stringKOS= array[0..256] of Byte;
    а не of Char;
    А ? С Char гляжу тоже непонятки когда делаешь S:=s+c; - не работает ведь!
    Пример моих эксперементов:

    Code: Select all

    Procedure DrawShortString(X, Y: Integer; Text: ShortString; ForeColor, BackColor, Flags: Integer);stdcall;
    Begin
      DrawText(X, Y, @Text[1], ForeColor, BackColor, Flags And Not DT_ZSTRING, Integer(Text[0]));
    End;
    Procedure DrawShortString2(Text: ShortString);
    begin
    DrawText( 10, 12, @Text[1], COLOR_BLACK, COLOR_WHITE,DT_CP866_6X9 + DT_FILL_OPAQUE + DT_ZSTRING, 0);
    end;
    
    
    Procedure RedrawString;
    Var i: Cardinal; s1,s2,s3:string; ss1,ss2,ss3:ShortString;
    c:Char; ck:Byte;
    begin
    //  c:=s[4];
    //c:='d';
    //ck:=ord('d');
    //s2:='2333333';s3:='Test DrawText'+'s sdfsdfsdf +'+s2[2];//#39;//chr(ck);//+c
    //ss2:='2333333';ss3:='Test DrawText'+'s sdfsdfsdf +'+s2[2];//#39;//chr(ck);//+c
    //  s1:='Test DrawText'+'s sdfsdfsdf +'+s2[2];//#39;//chr(ck);//+c
    //  s1:=ss2;//+ss3;
    // @S3[1]
    //DrawText( 10, 12, PChar(s1), COLOR_BLACK, COLOR_WHITE,DT_CP866_6X9 + DT_FILL_OPAQUE + DT_ZSTRING, 0);
    //DrawText( 10, 12, 'Test DrawText', COLOR_BLACK, COLOR_WHITE,DT_CP866_6X9 + DT_FILL_OPAQUE + DT_ZSTRING, 0);
    ss2:='dwdfsd sd';ss3:='2324243242';
    //ss1:=ss2+ss3;
    ss1:=ss2+'sdsd';//ss3;
    DrawShortString2(ss1);
    //DrawShortString( 10, 12, 'Test DrawText', COLOR_BLACK, COLOR_WHITE,DT_CP866_6X9 + DT_FILL_OPAQUE + DT_ZSTRING);
    end;
  • Собираюсь писать конвертировщик для строк, ANSItoKOS (KOStoANSI) .
    Не знаю уж, что ты там опять городить собрался.
    Но про строки я тебе уже давал ссылки, но ты видимо не проникся.
    Тонкости работы со строками: http://delphikingdom.com/asp/viewitem.a ... logID=1206
    Строки в Delphi: http://easyprog.ru/index.php?id=218&opt ... &task=view
    но дальше, чем просто присвоить строке статические данные, шото у меня дело не доходит!
    вот в реальности когда понадобиться делать, например, вот такое s1:=s1+s2+s3[2]....
    StrCopy\StrCat в помощь:

    Code: Select all

    Var
       MyStr1: Array[0..63] Of Char;
       MyStr2: Array[0..63] Of Char;
       MyStr3: Array[0..63] Of Char;
    ////////////////////////////////   
       MyStr1 := '12345';
       MyStr2 := '67890';
       StrCopy(MyStr3, MyStr1);
       StrCat(MyStr3, MyStr2);   
    ////////////////////////////////   
       DrawStr(10, 80, MyStr3, COLOR_BLACK, COLOR_RED, DT_CP866_6X9);  
  • 0CodErr wrote:
    Собираюсь писать конвертировщик для строк, ANSItoKOS (KOStoANSI) .
    Не знаю уж, что ты там опять городить собрался.
    Но про строки я тебе уже давал ссылки, но ты видимо не проникся.
    Тонкости работы со строками: http://delphikingdom.com/asp/viewitem.a ... logID=1206
    Строки в Delphi: http://easyprog.ru/index.php?id=218&opt ... &task=view
    Видимо нет! Не проникся! И даже понять не могу, чем мне те тексты помогут если я захочу написать "Привет мир" вместо стандартного "Hello world"!
    Ну да ладно, перечитаю еще раз!
    ==============
    дАрАгой, :-) а вот чего ты злишься? мы ведь с тобой про одно и тоже, - что СТРОКИ
    String, ShortString использовать (!!!АКТИВНО ИСПОЛЬЗОВАТЬ!!!) НЕЛЬЗЯ! и твой пример где есть:
    Var
    MyStr1: Array[0..63] Of Char;
    MyStr2: Array[0..63] Of Char;
    MyStr3: Array[0..63] Of Char;

    Array и Of Char; ВСЁ ТАКИ!, а не String, ShortString и PChar
    ЭТО ПОКАЗЫВАЕТ И ДОКАЗЫВАЕТ! Я только предложил немного по другому!
    Спасибо за пример. работает:

    Code: Select all

    Procedure RedrawString;
    Var
       MyStr1: Array[0..63] Of Char;
       MyStr2: Array[0..63] Of Char;
       MyStr3: Array[0..63] Of Char;
    begin
       MyStr1 := '12345';
       MyStr2 := '67890';
       StrCopy(MyStr3, MyStr1);
       StrCat(MyStr3, MyStr2);
    DrawShortString(10, 80, MyStr3, COLOR_BLACK, COLOR_RED, DT_CP866_6X9);
    end;
  • Видимо нет! Не проникся! И даже понять не могу, чем мне те тексты помогут если я захочу написать "Привет мир" вместо стандартного "Hello world"!
    Мдам... плохо быть тобой :lol:
    Array и Of Char; ВСЁ ТАКИ!, а не String, ShortString и PChar
    Если бы ты всё-таки прошёл по ссылкам и почитал, то у тебя бы таких вопросов больше не возникало. Вот, например, про не понятный тебе PChar
    PChar - нультерминальная строка

    pstr: PChar; - это нультерминальная строка (zero-terminated, иначе еще называется срока с завершающим нулем). Так называется, потому что представляет собой указатель на цепочку символов, заканчивающуюся терминальным нулем #0. Ее еще называют сишной строкой (из языка С, там она определяется как char*).
    А ShortString — это пожалуйста. В System есть _PStrCpy, _PStrCat и т.д.
    ЭТО ПОКАЗЫВАЕТ И ДОКАЗЫВАЕТ
    что ты большой лентяй :lol:
  • Попытаюсь объяснить популярно.
    Однажды я читая о дельфе и попалась мне тема о PChar. Я бегло прочитав, понял, что это не для меня, и что не зная особенности этой PChar, можно жить долго и счастливо :-) со string, и не париться на всякой фигне такой как PChar! И вот с тех пор я жил и жизни радовался со string, где всё вполне понятно и да выглядит симпатично! И даже если касалось где-то, что в процедуру необходимо передавать PChar, то я делал PChar(s), в самый последний момент, т.е. при самой передаче в процедура! И ву-аля!
    Вот и сейчас бы я тоже не парился, если бы проблема решалась, через PChar(s), в самый последний момент... Но ведь не работает так(!) при предшествующем подобном s1:=s2+s3; s1:=s2+s3[3], да и много чего не работает так как хочется! Ну нашёл я описание процедур по обработке PChar...
    Spoiler:Справочник по функциям Delphi. Функции работы со строками типа PChar

    А эта таблица содержит функции для работы со строками типа PChar (также находятся в модуле SYSUTILS):
    function StrLen(Str: PChar): Cardinal; Возвращает число символов в строке Str (без учета завершающего нулевого).
    function StrEnd(Str: PChar): PChar; Возвращает указатель на завершающий нулевой символ строки Str.
    function StrMove(Dest, Source: PChar; Count: Cardinal): PChar; Копирует из строки Source в строку Dest ровно Count символов, причем строки могут перекрываться.
    function StrCopy(Dest, Source: PChar) : PChar; Копирует Source в Dest и возвращает указатель на Dest.
    function StrECopy(Dest, Source: PChar): PChar; Копирует Source в Dest и возвращает указатель на завершающий символ Dest.
    function StrLCopy(Dest, Source: PChar; MaxLen: Cardinal): PChar; Работает как StrCopy, но копирует не более MaxLen символов.
    function StrPCopy(Dest: PChar; const Source: String): PChar; Копирует строку Source (типа string) в Dest и возвращает указатель на Dest.
    function StrPLCopy(Gest: PChar; const Source: string; MaxLen: Cardinal): PСhar; Работает как StrPCopy, но копирует не более MaxLen символов.
    function StrCat(Dest, Source: PChar): PChar; Дописывает Source к концу Dest и возвращает указатель на Dest.
    function StrLCat(Dest, Source: PChar; MaxLen: Cardinal): PChar; Работает как StrCat, но копирует не более MaxLen-StrLen(Dest) символов.
    function StrComp(Str1, Str2: PChar): Integer; Сравнивает две строки (посимвольно). Возвращает значение: <0 ? при StrKStr2, 0 ? при Strl=Str2, >0 ? при Strl>Str2.
    function StrIComp(Str1, Str2: PChar): Integer; Работает как StrComp, но без учета регистра символов.
    function StrLComp(Str1, Str2: PChar; MaxLen: Cardinal): Integer; Работает как StrComp, но сравнение происходит на протяжении не более чем MaxLen символов.
    function StrLIComp(Str1, Str2: PChar; MaxLen: Cardinal): Integer; Работает как StrLComp, но без учета регистра символов.
    function StrScan(Str: PChar; Chr: Char): PChar; Отыскивает первое вхождение символа Chr в строку Str и возвращает указатель на него или nil в случае отстутствия.
    function StrRScan(Str: PChar; Chr: Char): PChar; Работает как StrScan, но отыскивается последнее вхождение Chr.
    function StrPos(Str1, Str2: PChar): PChar; Отыскивает первое вхождение строки Str2 в строку Strl и возвращает указатель на нее или nil в случае отстутствия.
    function StrUpper(Str: PChar): PChar; Преобразует строку к верхнему регистру.
    function StrLower(Str: PChar): PChar; Преобразует строку к нижнему регистру.
    function StrPas(Str: PChar): String; Преобразует строку Str в строку типа string.
    function StrAlloc(Size: Cardinal): PChar; Размещает в куче памяти новую строку размером Size и возвращает указатель на нее.
    function StrBufSize(Str: PChar): Cardinal- Возвращает размер блока памяти, выделенного для строки при помощи функции StrAlloc.
    function StrNew(Str: PChar): PChar; Размещает в куче памяти копию строки Str и возвращает указатель на нее.
    procedure StrDispose(Str: PChar); Уничтожает строку, размещенную при помощи StrAlloc или StrNew.
    Глянул, - о ужас! Даже не ужас, а ужОс! А коснись в реальности, - еще ужасы какие-но "нарисуются"!

    А ведь 0CodErr так усердно "распинался" - "да всё тут будет как в дельфе! " Да нет, - не всё! Заморочки на заморочках! string не работает используй PChar... вот только если #0 попадётся в строке, то оно её на этом #0 и "отрубится", и концов не найдёшь! Ну так ведь? Да и эти PChar не реальные переменные, содержащие данные, а ссылки какие-то, так ведь ?
    И вот скажи пожалуйста нафига ты мене вместо аналога string предлагаешь разную фигню, ну ЯВНО НЕ БЛЕЩАЩУЮ И НЕ СРАВНИМУЮ со string?! Ну сотни раз уже "кругами" вокруг этих ShortString, String, - а 0CodErr, опять мне пишет: "В System есть _PStrCpy, _PStrCat и т.д.", - а я уже знаю(!), что попробую это, опять какая-то фигня "выползет"....
    И вот я принял решение создать самому то, что мне нужно. И вместо того, чтобы 0CodErr мне отписал: "... ну если уж самому делать, так тогда лучше всего за основу взять вот такое: type stringKOS= array[0..256] of Char; и будет тебе доступно всё, и соответственно сможешь сделать любую обработку этого массива данных какую только захочешь!...". Но нет, он мне все "вокруг" PChar, ShortString, String, которые, -
    ОЧЕРЕДНОЙ РАЗ ПОВТОРЯЮ: ИСПОЛЬЗОВАТЬ НЕЛЬЗЯ!