Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu OOP (https://www.delphipraxis.net/56320-frage-zu-oop.html)

Airblader 3. Nov 2005 22:28


Frage zu OOP
 
Huhu :)

Ich hab mal ne kleine Frage zu OOP:
Ich hab in einer 2. Unit eine Klasse erstellt und will nun in der Hauptunit eine Instanz davon erzeugen.

Mein Problem ist, dass ihm die Klasse natürlich nichts sagt, wenn ich die Variable deklarier.
Wie kann ich also in der Hauptunit die Klasse verwenden und trotzdem eine Variable erstellen, die dann natürlich in der gesamtem Mainunit verfügbar ist? :gruebel:

air

3_of_8 3. Nov 2005 22:33

Re: Frage zu OOP
 
Wo genau ist dein Problem?

Delphi-Quellcode:
unit Main;

interface

uses Unit2;

var MyClass: TMyClass;

implementation

initialization
begin
MyClass:=TMyClass.Create;
end;

finalization
begin
MyClass:=nil;
end;

end.

Airblader 3. Nov 2005 22:36

Re: Frage zu OOP
 
Ok...dumme Frage, ich gebs zu. Das kommt davon, wenn man so Kopfweh hat und weitermachen will ;)
(Kurze Erklärung: Ich hatte die 2. Unit erst im uses im implemenation-Teil drin...)

Danke ;)

air

3_of_8 3. Nov 2005 22:37

Re: Frage zu OOP
 
Ich bin seit 3 Wochen im Halbschlaf. Wohl der Grund, warum ich auch nix hinkriege.

Der_Unwissende 3. Nov 2005 22:42

Re: Frage zu OOP
 
Zitat:

Zitat von 3_of_8
Wo genau ist dein Problem?

Delphi-Quellcode:
finalization
begin
MyClass:=nil;
end;

Vorsicht, man sollte eine Klasse immer mittels Destruktor freigeben (der räumt dann wirklich mal den Speicher auf. MyClass := nil setzt nur den Zeiger auf nil, der von MyClass reservierte Speicher bleibt natürlich belegt. So bekommt man ganz schnell Speicherlecks hin, die es in sich haben.
Besser:

Delphi-Quellcode:
finalization
begin
  // Aufruf des Destructors
  MyClass.Free;
end;
oder um sicher zu gehen, dass der Zeiger von MyClass nicht gesetzt bleibt :

Delphi-Quellcode:
finalization
begin
  FreeAndNil(MyClass);
end;

3_of_8 3. Nov 2005 22:44

Re: Frage zu OOP
 
Bin ein Newbie!

Der_Unwissende 3. Nov 2005 22:52

Re: Frage zu OOP
 
War nicht gegen dich gerichtet, wollte nur warnen. War auch mal Newbie (aber das liegt lange zurück, man wenn ich an die Zeit zurück denke, Gestern war schon komisch :wink:), nein, ich meine ich mach selbst jetzt noch häufig genug solche Fehler, ist nichts Schlimmes. Also nicht persönlich nehmen!
Nur aufpassen, bei ein paar hundert größeren Objekten (die hat man doch auch mal zusammen) kann da schnell der Speicher weg sein. Hatte das Problem auch mal in einer Tiff-Unit, aber egal, jedenfalls ist FreeAndNil fast immer das fehlerfreiste.

Gruß Der Unwissende

3_of_8 3. Nov 2005 23:01

Re: Frage zu OOP
 
Ich nehme so was nie persönlich. Wollte nur darauf hinweisen, dass ich es nicht besser weiß. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 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 by Thomas Breitkreuz