Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Сравнить две строки!   Найти похожие ветки 

 
KLAUS ©   (2006-05-20 14:11) [0]

Всем Привет!!
Народ подскажите как сравнить две строки по байтно?
Только без WildStringCompare!


 
Glex ©   (2006-05-20 14:19) [1]


function CompareStr(const s1, s2: string): boolean;
var i, N: integer;
begin
N := Min(length(s1), length(s2));
result:=true;
for i:=1 to Min do begin
 if s1[i]<>s2[i] then begin
   result:=false;
   exit;
   end;
 end;
if length(s1)<>length(s2) then result:=false;
end;


Это что ли? =))


 
KLAUS ©   (2006-05-20 18:40) [2]

THANKS вообще в самую точку!!!


 
AlexWlad ©   (2006-05-20 20:53) [3]

Если нужна скорость попробуй такую процедуру.

function AW_CompareMem(P1, P2: Pointer; Length: Integer): Integer; assembler;
asm
       PUSH    ESI
       PUSH    EDI
       MOV     ESI,P1
       MOV     EDI,P2
       MOV     EDX,ECX  // Length
       XOR     EAX,EAX
       AND     EDX,3    // число байт в хвосте - Length mod 4
       SHR     ECX,1    // div 2 - WORD
       SHR     ECX,1    // div 2 - DWORD
       REPE    CMPSD
       JE      @@1      // все DWORD равны, анализ хвоста
       SUB     ESI,4    // поиск байта-отличия в DWORD
       SUB     EDI,4
       MOV     EDX,4
@@1:    MOV     ECX,EDX  // сравнение в хвосте
       REPE    CMPSB
       JE      @@5      // все BYTE равны
       MOVZX   EAX,BYTE PTR [ESI-1]  // вычисление разницы байт
       MOVZX   EDX,BYTE PTR [EDI-1]
       SUB     EAX,EDX
@@5:    POP     EDI
       POP     ESI
end;


Пример использования

i := AW_CompareMem(@s1[1],@s2[1],Min(Length(s1),Length(s2)));



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

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.069 c
15-1146911452
Nic
2006-05-06 14:30
2006.06.04
Сколько бы Вы хотели иметь детей..


2-1147782837
Евгений Р.
2006-05-16 16:33
2006.06.04
Ввод данных в dbGrid посредством onSetText


1-1146000057
Volf_555
2006-04-26 01:20
2006.06.04
Как перевести HotKey1.HotKey в тип String?


2-1147939972
elena_pp
2006-05-18 12:12
2006.06.04
Как узнать и записать версию exe-ника в строковую переменную?


15-1147386244
Мнений
2006-05-12 02:24
2006.06.04
Классная штучка