14-03-2013, 12:02 AM
و عليكم السلام
هذه طريقة سريعة باستخدام الأسمبلي
هذه طريقة سريعة باستخدام الأسمبلي

PHP كود :
// Coded By SMP3
type TInfo = record
Name :array [0..255] of AnsiChar ;
Age :array [0..255] of AnsiChar ;
Unknow :array [0..255] of AnsiChar ;
Country :array [0..255] of AnsiChar ;
end;
function FastGetInfo(s:AnsiString):TInfo;
var Info:TInfo ;
begin
FillChar(Info,sizeof(Info),#0);
asm
pushad
mov edi,s
xor ecx, ecx
not ecx
xor al, al
cld
repne scasb
not ecx
dec ecx
xor edx,edx
xor ebx,ebx
xor esi,esi
@NextChar:
push ecx
mov edi,s
mov al,byte ptr ds: [edi+edx]
cmp al,'='
je @nequ
jmp @ne
@nequ:
xor esi,esi
sub ecx,edx
inc ebx
@ne:
cmp ebx,0
je @name
jmp @nage
@name:
mov byte ptr [Info.Name][esi],al
@nage:
cmp ebx,1
je @age
jmp @nU
@age:
cmp al,'='
je @dnadd
mov byte ptr [Info.Age][esi],al
jmp @nU
@dnadd:
dec esi
@nU:
cmp ebx,2
je @Unknow
jmp @nCountry
@Unknow:
cmp al,'='
je @dnadd2
mov byte ptr [Info.Unknow][esi],al
jmp @nCountry
@dnadd2:
dec esi
@nCountry:
cmp ebx,3
je @Country
jmp @Fin
@Country:
cmp al,'='
je @dnadd3
mov byte ptr [Info.Country][esi],al
jmp @Fin
@dnadd3:
dec esi
@Fin:
inc edx
inc esi
pop ecx
cmp edx,ecx
jne @NextChar
popad
end;
Result:=Info;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s :Ansistring;
begin
s:='Mohamed=20yr=2.5=Algeria';
Edit1.Text:=FastGetInfo(s).Name;
Edit2.Text:=FastGetInfo(s).Age;
Edit3.Text:=FastGetInfo(s).Unknow;
Edit4.Text:=FastGetInfo(s).Country;
end;

