Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit TObject (https://www.delphipraxis.net/104576-problem-mit-tobject.html)

Eppos 6. Dez 2007 17:16


Problem mit TObject
 
Hallo zusammen,

ich habe ein Problem mit TObject.

Ich habe folgendes gemacht:

Delphi-Quellcode:
Kopf : TObject;

.....

Kopf.Free;
Der Kopf wird aber durch das Free nicht gelöscht?!
Was muss ich tun damit der Kopf gelöscht wird?

Vielen Dank!

mkinzler 6. Dez 2007 17:17

Re: Problem mit TObject
 
Delphi-Quellcode:
FreeAndNil( Kopf);

Eppos 6. Dez 2007 17:29

Re: Problem mit TObject
 
wenn ich dann aber "kopf" wieder erstelle, bekomme ich eine Fehlermeldung(Access Violation).

sirius 6. Dez 2007 17:31

Re: Problem mit TObject
 
Könntest du mal ein bisschen mehr verraten, was du machst?

Der_Unwissende 6. Dez 2007 17:41

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

Eppos 6. Dez 2007 18:06

Re: Problem mit TObject
 
Ich generiere ein TObject mit

Delphi-Quellcode:
kopf.create;
In diesem kopf werden mehrere TObjects geladen.

Ich Lösche das TObject mit

Delphi-Quellcode:
kopf.free;
dann steht aber im Kopf noch sämtliche Daten drin.
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.

Muetze1 6. Dez 2007 18:09

Re: Problem mit TObject
 
Zitat:

Zitat von Eppos
Ich generiere ein TObject mit

Delphi-Quellcode:
kopf.create;

Damit generierst du nix. Wenn, dann den Constructor der Klasse aufrufen:

Delphi-Quellcode:
kopf := TKopf.Create;
Zitat:

Zitat von Eppos
dann steht aber im Kopf noch sämtliche Daten drin.
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.

Weil du kein neue Instanz erzeugt hast, hast du natürlich alles beim alten...

Eppos 6. Dez 2007 18:16

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

sirius 6. Dez 2007 18:19

Re: Problem mit TObject
 
Was willst du?
Nach "Kopf:=TObject.create" ist A immer nil.

Eppos 6. Dez 2007 18:23

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.
Seite 1 von 3  1 23      

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