AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit TObject

Ein Thema von Eppos · begonnen am 6. Dez 2007 · letzter Beitrag vom 7. Dez 2007
Antwort Antwort
Seite 1 von 3  1 23      
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#1

Problem mit TObject

  Alt 6. Dez 2007, 17:16
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit TObject

  Alt 6. Dez 2007, 17:17
FreeAndNil( Kopf);
Markus Kinzler
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem mit TObject

  Alt 6. Dez 2007, 17:29
wenn ich dann aber "kopf" wieder erstelle, bekomme ich eine Fehlermeldung(Access Violation).
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem mit TObject

  Alt 6. Dez 2007, 17:31
Könntest du mal ein bisschen mehr verraten, was du machst?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Problem mit TObject

  Alt 6. Dez 2007, 17:41
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
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Problem mit TObject

  Alt 6. Dez 2007, 18:06
Ich generiere ein TObject mit

kopf.create; In diesem kopf werden mehrere TObjects geladen.

Ich Lösche das TObject mit

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.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Problem mit TObject

  Alt 6. Dez 2007, 18:09
Zitat von Eppos:
Ich generiere ein TObject mit

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

kopf := TKopf.Create;
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...
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Problem mit TObject

  Alt 6. Dez 2007, 18:16
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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Problem mit TObject

  Alt 6. Dez 2007, 18:19
Was willst du?
Nach "Kopf:=TObject.create" ist A immer nil.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Problem mit TObject

  Alt 6. Dez 2007, 18:23
ja ist nil, ist richtig, aber ich kann den zweiten create Befehl nicht ausführen, weil ich eine Access Violation bekomme.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz