![]() |
Klasse in Varibale speichern?
Hallo Leute, bin neu hier im Forum :)
ich arbeite seit kurzem mit Delphi und beschäftige mich gerade mit Klassen. Mein derzeitiges Problem ist die "Speicherung" einer Klasse in einer Variabel ca. so:
Delphi-Quellcode:
So und im dem Create Ereignis bekomm ich ne Zugrifsverletztung. Kann das sein, dass ich die FVariable über
type
Klasse1 = Class private blabla public blalba constructor Create; end; type Klasse2 = Class private FVariable: Klasse1; public property Variable: Klasse1 read FVariable; constructor Create(AKlasse1: Klasse1); end; constructor Klasse2.Create(AKlasse1: Klasse1); Begin self.FVariable := AKlasse1; End;
Delphi-Quellcode:
erst erstellen muss? Aber das kann es doch auch nicht sein, ich möchte nachher bei klasse1 5 Eigenschaften bei der Erstellung mitgeben und wenn ich das bei klasse2 dann vortäuschen müsste nur damit ich das was ich erstelle danach wieder verwerfe, weil ich ja im constructor die FVariable dann wieder mit der übergebenen überschreibe?
FVariable := Klasse1.Create
FVariable := AKlasse1; Oder geht es doch so wie ichs gern hätte und ich hab nur vergessen was einzubauen o.ä.? Danke :) |
Re: Klasse in Varibale speichern?
Ich hab mir mal den Code angeschaut und in der Theorie sollte dieser auch funktionieren. Dein 2. Codeschnipsel produziert nur ein Speicherleck, welches der Compiler evtl. sogar wegoptimiert. Lösche mal alles was in dem Projektverzeichnis auf .dcu endet. Somit sagst du dem Compiler von Delphi, dass er doch bitte keinen Schrott produzieren soll.
Bernhard |
Re: Klasse in Varibale speichern?
lol vielen Dank, hat funktioniert xD
Mit dem "das was ich erstelle danach wieder verwerfe" war dein Speicherleck gemeint. nochmal danke, weiß zwar nicht wie Sowas passieren kann, aber was solls, hauptsache es läuft :) |
Re: Klasse in Varibale speichern?
Im Constructor der Klasse2 kann es eigentlich nicht zu einer Exception kommen.
Wie rufst du diesen denn auf? Und nein, wegoptimieren würde er dieses Speicherleck nicht. [edit] ohh, schon gelöst :) PS: Statt dem Löschen könnte man auch erstmal Shift+F9 versuchen. Dieses sollte auch alles neu kompilieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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