Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Substring an bestimmter Position im String?

  Alt 3. Aug 2006, 14:15
Nicht ausgiebig getestet, sollte aber funktionieren - und auch recht schnell.

Gibt True zurück wenn in s ab zeichen p ein mit substr identischer text steht. wenn p=0 dann wird p=1 angenommen
Gibt False zürück wenn s oder substr leer sind oder p>Length(s) ist oder nicht die obige bedingung zutrifft.


Delphi-Quellcode:
FUNCTION StrAtPos(const substr,s:string; p:integer):boolean;
asm
         push edi
         push esi
         test eax,eax
         je @Fail // substring leer
         test edx,edx
         je @Fail // s leer
         test ecx,ecx
         jne @1
         mov ecx,1
@1: mov esi,eax // @substr
         lea edi,[edx+ecx-1] // @s[p]
         mov eax,ecx // p
         mov ecx,[esi-4] // Lenght(substr)
         test ecx,ecx
         je @Fail // Lenght(substr)=0
         lea eax,[eax+ecx-1] // p+Length(substr)-1
         cmp eax,[edx-4]
         jbe @Cmp // Lenght ok
@Fail: xor eax,eax
         jmp @End
@Cmp: mov edx,ecx
         shr ecx,2
         repe cmpsd // (Lenght(substr) div 4) mal 4 Bytes vergleichen
         jne @SetRes
@Bytes: mov ecx,edx
         and ecx,3
         repe cmpsb // (Lenght(substr) and 3) Bytes vergleichen
@SetRes: sete al
@End: pop esi
         pop edi
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat