evo ti jedan primer koji eliminise prazan prostor u srtingu.
dobar tutorijal mozes da skines na
www.about.com
Function StringBezBlanko(String1:String):string;
var
L,StavrnaDuz:Cardinal;
PUlaz,PResult:PChar;
Rez:String;//U slucaju da dodeljujemo vrednost samom sebi korisiomo ga koao result
begin
L:=Length(String1);
SetLength(Result,L);
SetLength(Rez,L);
PUlaz:=PChar(String1);
PResult:=PChar(Rez);
StavrnaDuz:=0;
asm
PUSH ESI //uzimas prostor u memoriji za ulaz (poenter na string)
PUSH EDI // za izlaz
PUSH EBX //brojac
MOV EDI,PResult //Pokazivac na izlazni string
MOV EBX,L //Brojac U For Petlju
MOV ESI,PUlaz
@@Pocetak: CMP EBX,0
JE @@Kraj //ako je L na nulu izlazimo iz petlje
MOV AL,[ESI] // citamo jedan bajt iz stringa
CMP AL,32 // ako je blanko
JE @@Nastavak //sakacemo na deo koda za obradu
INC StavrnaDuz //ako nije 32 pomeramo pokazivac u memoriju za 1
MOV [EDI],AL// upisujemo u izlaz slovo
INC EDI // pomeramo pokazivac izlaznog stringa za 1
@@Nastavak:INC ESI //ako je npr. s[2]=''
DEC EBX
JMP @@Pocetak
@@Kraj: POP EBX //oslobacamo resurse u vezi je sa PUSH
POP ESI
POP EDI
end;
Result:=Copy(Rez,1,StavrnaDuz);
end;