AGB  ·  Datenschutz  ·  Impressum  







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

Globale Variable - Definition

Ein Thema von haentschman · begonnen am 14. Mai 2011 · letzter Beitrag vom 15. Mai 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#11

AW: Globale Variable - Definition

  Alt 14. Mai 2011, 21:29
Ich hab das immer so
Delphi-Quellcode:
TSingletonClass = class(TObject)
private
  class var FInstance;
  class procedure Init();
  class procedure Finalize();
  constructor Create(); reintroduce;
public
  class function GetInstance(): TSingletonClass;
  destructor Destroy();
end;

function ShortcutName(): TSingletonClass;

implementation

class procedure TSingletonClass.Init();
begin
  { ... }
end;

class procedure TSingletonClass.Finalize();
begin
  { ... }
end;

class function TSingletonClass.GetInstance(): TSingletonClass;
begin
  if (not Assigned(TSingletonClass.FInstance)) then
    TSingletonClass.FInstance := TSingletonClass.Create();
  Resul := TSingletonClass.FInstance;
end;

function ShortcutName(): TSingletonClass;
begin
  Result := TSingletonClass.GetInstance();
end;

initialization
  TSingletonClass.Init();

finalization
  TSingletonClass.Finalize();
Bitte aber die ShortcutName()-Methode umbenennen
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

AW: Globale Variable - Definition

  Alt 14. Mai 2011, 21:33
gdBK sollte aber initialisiert werden!

Delphi-Quellcode:
function dBK: TdBK;
begin
  if not Assigned(gdBK) then
    gdBK := TdBK.Create;
  Result := gdBK;
end;

initialization
  gdBK:=nil;

finalization
  gdBK.Free;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#13

AW: Globale Variable - Definition

  Alt 14. Mai 2011, 21:36
Es ist zwar schon spät, aber fehlt da nicht ein ELSE-Teil?
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#14

AW: Globale Variable - Definition

  Alt 14. Mai 2011, 21:37
Wo genau? Ich glaube aber nein. Das Objekt muss ja immer zurückgegeben werden. Wenn es bisher nur noch nicht existiert, dann muss es vorher noch erzeugt werden.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Globale Variable - Definition

  Alt 14. Mai 2011, 23:39
@s.h.a.r.k: So ähnlich mach ich es auch. Aber sollte nicht der Destruktor auch privat sein?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.286 Beiträge
 
Delphi 12 Athens
 
#16

AW: Globale Variable - Definition

  Alt 15. Mai 2011, 00:09
gdBK sollte aber initialisiert werden!
Globale Variablen und Variablen in Objekten werden immer automatisch initialisiert. (mit 0 / nil / #0 / '' )

Nur bei den lokalen Variablen sieht das anders aus, denn dort wird es aus Performancegründen oftmals nicht gemacht (außer bei String dyn. Array und Interface)
und bei vielem Anderem, was sonst noch von irgendwo anders herkommt (z.B. GetMem und Co.).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Mai 2011 um 00:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#17

AW: Globale Variable - Definition

  Alt 15. Mai 2011, 04:43
@s.h.a.r.k: So ähnlich mach ich es auch. Aber sollte nicht der Destruktor auch privat sein?
So weit ich weiß geht das nicht. Hatte da schon viel probiert. Aber so ein richtiges Singleton Pattern kann Delphi leider nicht.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.286 Beiträge
 
Delphi 12 Athens
 
#18

AW: Globale Variable - Definition

  Alt 15. Mai 2011, 07:54
Private kann der Destructer überhaupt nicht sein.
Denn wir überschreiben ja diesen und ein Nachfahre möchte dieses auch gerne tun können, was mit Private nicht möglich wäre

Aber Protected wäre ein gutes Fleckchen dafür.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#19

AW: Globale Variable - Definition

  Alt 15. Mai 2011, 14:18
Private kann der Destructer überhaupt nicht sein.
Denn wir überschreiben ja diesen und ein Nachfahre möchte dieses auch gerne tun können, was mit Private nicht möglich wäre

Aber Protected wäre ein gutes Fleckchen dafür.
Hmm ja, ich habe dafür wahrscheinlich auch protected genommen. Private vermeide ich eher, weil jeder, der schon mal versucht hat, gewisse VCL-Klassen zu erweitern, weiß, wie ärgerlich es ist, wenn man später wider Erwarten doch noch mal Zugriff auf eine private Deklaration braucht...
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#20

AW: Globale Variable - Definition

  Alt 15. Mai 2011, 14:19
Aber so ein richtiges Singleton Pattern kann Delphi leider nicht.
Ist aber nicht schlimm oder sogar eher positiv zu sehen, denn wenn das Singleton Pattern gehäuft in einer Anwendung auftritt führt es zu negativen Effekten (z.B. mangelnde Testbarkeit, erschwerte Fehlersuche, starke Kopplung zwischen den Units,...).

Die Lösung der Probleme mit den globalen Variablen und Singleton bietet die Dependency Injection.
Es braucht aber einige Wochen oder Monate bis man es begriffen und akzeptiert hat.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:22 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