Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.066 Beiträge
 
Delphi 12 Athens
 
#8

Re: [ASM] Lange Strings als Function - Wert zurückgeben

  Alt 20. Jan 2008, 19:12
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 MSDN-Library durchsuchenLStrLen 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]
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat