Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Pointer auf Record - Strings problematisch ?

  Alt 7. Okt 2009, 10:44
New entspricht
Delphi-Quellcode:
GetMem(NewClient, SizeOf(TClient));
Initialize(NewClient {, TClient}); // Strings, dynamische Arrays und Intefaces initialisieren

// bzw.

GetMem(NewClient, SizeOf(TClient));
ZeroMemory(NewClient, SizeOf(TClient));
Grund:
der String ist ein initialisierungspflichtiger Typ, da dessen Speicher von Delphi verwaltet wird
und ein "Leerstring" nunmal NIL ist.

ist der String jetzt nicht NIL und di versuchst diesem einen neuen Wert zuzuweisen, dann versucht Delphi den alten angeblich darin gespeicherten String freizugeben und dann knallt es natürlich.

[add]
PS: Dispose ist dann natürlich
Delphi-Quellcode:
Finalize(NewClient {, TClient}); // Strings, dynamische Arrays und Intefaces freigeben
FreeMem(NewClient);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat