Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Вниз

Binary search   Найти похожие ветки 

 
Jon ©   (2008-01-19 05:21) [0]

How can I search within a binary string for a substring?
Both Pos and IndexOfStr fail when a #$00 is encountered.


 
Vladimir Kladov ©   (2008-01-19 10:53) [1]

I"ll fix IndexOfStr (IndexOfChar) in the update (soon).


 
Jon ©   (2008-01-19 19:42) [2]

Works perfectly in v2.86 - many thanks!


 
Jon ©   (2008-01-20 06:16) [3]


> Works perfectly in v2.86 - many thanks!

Upon further testing I was wrong.

If the substring in IndexOfStr(String,Substring) is not found, the procedure locks up.

Also, if the substring contains #$00 such as IndexOfStr(String,#$00#$FF) the result is the position of first #$00 found.


 
Vladimir Kladov ©   (2008-01-20 11:27) [4]

PAS_VERSION works perfectly. Here is a fix for asm-version. When you test it, I"ll release an update.

function IndexOfStr( const S, Sub : String ) : Integer;
asm
       PUSH     EBX
       PUSH     ESI
       PUSH     EDI

       PUSH     EAX
       MOV      EAX, EDX
       PUSH     EDX
       CALL     System.@LStrLen
       MOV      EDI, EAX
       POP      EAX
       //CALL     System.@LStrToPChar
       CALL     EAX2PChar
       MOV      BL, [EAX]
       XCHG     EAX, [ESP]
       //CALL     System.@LStrToPChar
       CALL     EAX2PChar

       MOV      ESI, EAX

       DEC      EAX
@@1:    INC      EAX
       MOV      DL, BL
       MOV      ECX, [ESI-4]
       SUB      ECX, EAX
       ADD      ECX, ESI

       CMP      ECX, EDI
       JL       @@ret__1

       CALL     StrScanLen
       TEST     EAX, EAX
       JE       @@exit__1
       DEC      EAX

       POP      EDX
       PUSH     EDX

       MOV      ECX, EDI
       PUSH     EAX
       //CALL     StrLComp
       CALL     CompareMem
       TEST     AL, AL
       POP      EAX
       JZ       @@1

       SUB      EAX, ESI
       INC      EAX
       JMP      @@exit

@@ret__1:
       XOR      EAX, EAX
@@exit__1:
       DEC      EAX
@@exit:
       POP      EDX
       POP      EDI
       POP      ESI
       POP      EBX
end;


 
Jon ©   (2008-01-20 15:32) [5]


> PAS_VERSION works perfectly. Here is a fix for asm-version.
>  When you test it, I"ll release an update.


Yes, it works. Thank you and well done!



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
2-1239363580
dplz
2009-04-10 15:39
2009.05.24
Возможно ли в listbox зделать такое условие?


15-1237498202
Юрий
2009-03-20 00:30
2009.05.24
С днем рождения ! 20 марта 2009 пятница


2-1239057754
Dim
2009-04-07 02:42
2009.05.24
Совместный доступ к файлу


15-1237897102
Я
2009-03-24 15:18
2009.05.24
Выключение компа


3-1221113863
Fynjy
2008-09-11 10:17
2009.05.24
Dynamic SQL error SQL error code =-104





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский