Delphi-Quellcode:
// EAX = Zeiger auf String
TEST EAX, EAX
JZ @EmptyString // S = ''
MOV EDX, DWOD PTR [EAX - 4]
// EDX = StringLänge in Byte (ohne #0)
EAX zeigt auf @TAnsiStringInfo.Data
und TAnsiStringInfo[S].ElementCount = Length(S)
Delphi-Quellcode:
TAnsiStringInfo = packed Record
RefCount: LongInt;
ElementCount: LongInt;
Data: packed Array[1..High(Integer) - SDynArrayInfo] of AnsiChar;
End;
und
LStrLen macht intern sowas wie dein "
CMP byte ptr [EBX], $00"
PChar_Length(EAX) = LStrLen(EAX)
[edit=Matze]Code auf Wunsch von himitsu angepasst. MfG, Matze[/edit]