![]() |
Problem mit TObject
Hallo zusammen,
ich habe ein Problem mit TObject. Ich habe folgendes gemacht:
Delphi-Quellcode:
Der Kopf wird aber durch das Free nicht gelöscht?!
Kopf : TObject;
..... Kopf.Free; Was muss ich tun damit der Kopf gelöscht wird? Vielen Dank! |
Re: Problem mit TObject
Delphi-Quellcode:
FreeAndNil( Kopf);
|
Re: Problem mit TObject
wenn ich dann aber "kopf" wieder erstelle, bekomme ich eine Fehlermeldung(Access Violation).
|
Re: Problem mit TObject
Könntest du mal ein bisschen mehr verraten, was du machst?
|
Re: Problem mit TObject
Hi,
erstmal vorweg möchte ich Sirius voll zustimmen, es sind echt wenige Info's die Du da bereit stellst, das macht es nicht gerade einfach Dir zu helfen! Da Du aber von einem Kopf und Löschen sprichst, denke ich mal, dass Du eine Aufgabe hast, die das Thema Queue/Schlange oder verkettete Liste behandelt? Wenn dem so ist, dann wird kein einfacher Befehl das Löschen übernehmen. Da musst Du schon zeigen, wie Dein kompletter Ansatz bisher aussieht. Gelöscht wird der Kopf im übrigen mit dem Free schon (aus dem Speicher wird er entfernt), aber Du behälst noch eine Referenz auf diesen Speicherbereich (der allerdings kein gültiges Datum mehr enthält). Mit FreeAndNil sorgst Du dann dafür, dass die Referenz aut. auf nil zeigt, einen Speicherbereich von dem Du (und Delphi) weißt dass er nicht gültig sein kann. Mittels assigned kannst Du dann prüfen, ob der Kopf im Moment auf nil zeigt oder nicht (achtung, Du kannst nicht prüfen ob der Speicher schon frei gegeben wurde!) Gruß Der Unwissende |
Re: Problem mit TObject
Ich generiere ein TObject mit
Delphi-Quellcode:
In diesem kopf werden mehrere TObjects geladen.
kopf.create;
Ich Lösche das TObject mit
Delphi-Quellcode:
dann steht aber im Kopf noch sämtliche Daten drin.
kopf.free;
d.h. wenn ich das TObject nochmals erstelle, dann nimmt er die Daten aus dem vorherigen Kopf, obwohl ich diese mit free gelöscht habe. NilAndFree habe ich auch schon ausprobiert. Ich komme aber auf keinen grünen Zweig. |
Re: Problem mit TObject
Zitat:
Delphi-Quellcode:
kopf := TKopf.Create;
Zitat:
|
Re: Problem mit TObject
so ungefähr siehts aus...
Delphi-Quellcode:
TKopf = class(TObject)
A : TObject ... end; Kopf := TKopf.Create; ... Kopf.Free; Kopf := nil; ... Kopf := TKopf.Create; // Fehler Access Violation // Daten wurden aus vorherigem TKopf nicht gelöscht |
Re: Problem mit TObject
Was willst du?
Nach "Kopf:=TObject.create" ist A immer nil. |
Re: Problem mit TObject
ja ist nil, ist richtig, aber ich kann den zweiten create Befehl nicht ausführen, weil ich eine Access Violation bekomme.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz