Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Zwei Objekte einer Klasse werden beide geändert

  Alt 8. Jan 2014, 17:38
Mit dieser Zeile Norm_Neu:=Norm; erzeugst du dir Speicherlecks, da deine Objekt-Referenz auf die Variable Norm überschrieben wird. Bau in deiner DPR-Datei mal die Zeile ReportMemoryLeaksOnShutdown := True; ein. Somit siehst du, welche Klassen beim Beenden deines Programms nicht sauber wieder freigegeben wurden.
Ich will es mal noch etwas Anfänger-like beschreiben

Mit Norm_Neu:=Norm überträgst Du lediglich den ZEIGER auf die Speicherstelle wo sich die Objektdaten befinden.
Wenn Du später beide Objektvariablen auflöst wird der Speicher von Norm wieder freigegeben und kann wieder neu benutzt werden.
Der reservierte Speicherplatz für Norm_Neu wird aber nicht mehr freigegeben und es bleibt beim (bzw. bis zum) Programmende blockierter Speicherplatz zurück. Das stört zwar andere Programme nicht, weist aber auf einen Fehler oder zumindest Unsauberkeit im eigenen Programm hin.


Ich habe jetzt das Problem unschön gelöst, indem ich die Load-Anweisung für beide Objekte durchlaufen lasse.

Da es sich nicht um Forms handelt, sondern nur um Objekte, werden an der Stelle noch keine Daten auf DB geändert.

Mit dieser Vorgehensweise läuft es jetzt erst einmal.

Vielen Dank für die Hilfe

Patrick
Was meinst Du genau? Wenn es läuft ist es schon mal gut, aber vielleicht geht es noch einfacher/besser/sicherer?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat