![]() |
Globale Variable - Definition
Hallo alle...
ich bin verwirrt... Entweder zu spät oder überarbeitet. :oops: Ich habe eine Klasse welche über den gesamten Lebenszyklus der Anwendung existiert (Properties). Die einzige Instanz der Klasse soll von allen Formularen "erreichbar" sein. Da sowieso ein DataModule existiert dachte ich rein damit nach folgendem Muster.
Delphi-Quellcode:
die Frage: Zählt rein Definitionstechnisch die Instanz von dBK als globale Variable ?
.
. type TDataModuleCommon = class(TDataModule) . . procedure DataModuleCreate(Sender: TObject); procedure DataModuleDestroy(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var DataModuleCommon: TDataModuleCommon; dBK: TdBK; implementation {$R *.dfm} procedure TDataModuleCommon.DataModuleCreate(Sender: TObject); begin dBK:= TdBK.Create; end; procedure TDataModuleCommon.DataModuleDestroy(Sender: TObject); begin dBK.Free; end; Für Anregungen dankbar... :hi: |
AW: Globale Variable - Definition
Ja, das sollte so funktionieren. Alternativ würde ich aber die Instanz von dBK im initialization / finalization Part der Unit verarbeiten.
|
AW: Globale Variable - Definition
Warum wirfst du die Variable dBK nicht in die Klasse TDataModuleCommon rein?
|
AW: Globale Variable - Definition
Hatte ich zuerst. Da mußte aber noch jedesmal beim Aufruf DataModuleCommon davor.
Beispiel: DataModuleCommon.dBK.Properties.Database.Host war mir irgendwie zu lang jedesmal. Mit obigem Muster fällt dann im Aufruf DataModuleCommon weg. Nur ist das dann mit einer globalen Variable vergleichbar ? Danke... |
AW: Globale Variable - Definition
Ich mache es bisher immer so, dass ich Variablen in entsprechende Objekte kapsle. Bin ich dann mal zu faul es immer auszuschreiben baue ich mir eine "Shortcut"-Funktion, die mir eben das Objekt liefert :stupid: Ist vor allem dann hilfreich wenn ich Singleton-Pattern einsetze.
|
AW: Globale Variable - Definition
Delphi-Quellcode:
Wenn die DB auch schon existieren soll, dann müßte/könnte man dieses als class var und class property deklarieren und in initialzation der Unit erstellen.
type
TDataModuleCommon = class(TDataModule) . . procedure DataModuleCreate(Sender: TObject); procedure DataModuleDestroy(Sender: TObject); private { Private-Deklarationen } FdBK: TdBK; public { Public-Deklarationen } property dBK: TdBK; end; var DataModuleCommon: TDataModuleCommon; // DataModuleCommon.dBK |
AW: Globale Variable - Definition
Danke an alle...
@himi: das ist der normale Weg. Da hab ich immer noch DataModuleCommon davor. Ich bin halt schreibfaul und die Kettenaufrufe mag ich nicht. Mit Generics läßt sich das doch etwas verbessern... muß ich mal lesen. |
AW: Globale Variable - Definition
Ich wüßte jetzt nicht was hier jetzt die Generics helfen sollen,
aber die Generics funktionieren auch nur in Klassen. |
AW: Globale Variable - Definition
Wie wäre es mit einer eigenen Unit?
Delphi-Quellcode:
So ist keine projekt-globale-Variable vorhanden.
unit dBKU;
interface type TdBK = class : : end; function dBK: TdBK; implementation var gdBK: TdBK; function dBK: TdBK; begin Result:=gdBK; end; initialization gdBK:= TdBK.Create; finalization gdBK.Free; end. |
AW: Globale Variable - Definition
Delphi-Quellcode:
So sieht es doch auch nett aus.
function dBK: TdBK;
begin if not Assigned(gdBK) then gdBK := TdBK.Create; Result := gdBK; end; initialization finalization gdBK.Free; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 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