Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Probleme mit Data (Pointer)

  Alt 25. Feb 2007, 10:04
Hmm... das könnte schief gehen. machs lieber so:

Delphi-Quellcode:
type
  PString = ^TStringRec;
  TStringRec = record
    str: string;
  end;
Und dann musst du das noch finalisieren:

Delphi-Quellcode:
if Assigned(ListItem.Data) then
begin
  Finalize(ListItem.Data);
  Dispose(ListItem.Data);
end;
Das Finalisieren ist wichtig, damit Delphi auch den String selbst freigibt. Ein String ist nänmlich eigentlich eine Klasse, und ich hab jetzt nicht genügend Code von dir um zu sehen, ob da alles koscher abläuft.

Du musst übrigens nicht casten, denn wenn du den Speicherbereich per New() alloziiert hast, weiß der MemoryManager, wie viel er an dieser Speicheradresse alloziiert hat. Und Dispose weiß dann auch ohne cast, wie viel freigegeben werden muss.

EDIT: Mooooment mal... ist "PString" schon in Delphi-Systemunits deklariert? Dann sollte die Compilermagic da eh kräftig mitmischen... zeigt mir das doch mal
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat