Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: [DLL] Problem mit langem String als PChar

  Alt 15. Mai 2011, 10:37
Du hast immer einen Pufferüberlauf, egal wie lang der String ist ... die 8 KB (4000 Zeichen) sind reiner Zufall, daß es da knallt.

GetMem(Buffer, (Len + 1) * SizeOf(Char)); .


PS: Das GetMem gehört vor das Try, denn wenn es schon beim Try knallt, dann hast du ein hier Problem, mit einer verfäschten Fehlermeldung.
GetMem > OutOfMemory > finally > Fehler beim Freigeben des Nichtexistierenden und nicht initialisierten Buffer.
Delphi-Quellcode:
resservieren;
try
  ...
finally
  freigeben;
end;
GetMem > OutOfMemory > finally wird nicht ausgeführt > OutOfMemory


Statt GetMem und FreeMem solltest du hier vielleicht auch besser auf was Anderes ausweichen ... ich weiß zwar grad nicht mehr was, aber es gibt irgendwo Equivalente dafür, welche die Länge in Chars und nicht in Bytes annehmen und PChar/PAnsiChar/PWideChar zurückgeben.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Mai 2011 um 10:47 Uhr)
  Mit Zitat antworten Zitat