Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi globale Variablen (https://www.delphipraxis.net/129240-globale-variablen.html)

sirius 16. Feb 2009 15:07

Re: globale Variablen
 
Zitat:

Zitat von DeddyH
Stimmt, die globale Variable muss in den interface-Teil, ansonsten ist sie nicht von außen erreichbar.

Eben nicht. Es darf ja auch keiner die Instanzvariable verändern.

Edit1: Im Finalization wäre ein einfaches nilfree besser.
Edit2: Habe ich im Edit1 tatsächlich "nil" geschrieben, ich meinte natürlich free.

DeddyH 16. Feb 2009 15:08

Re: globale Variablen
 
Man sollte auch den ganzen Ursprungscode lesen :oops:

Pfoto 16. Feb 2009 16:50

Re: globale Variablen
 
Zitat:

Zitat von Hawkeye219
Hallo,

der Zugriff erfolgt über die Klassenmethode RetrieveInstance, die eine Referenz auf die (einzige) Instanz liefert:

Delphi-Quellcode:
uses
  GlobalRessources;

begin
  TGlobalRessources.RetrieveInstance.<Eigenschaft>
end;
Gruß Hawkeye

ich verstehe immer noch nicht den echten Vorteil, als wenn
ich direkt über die im interface zugängliche Instanz auf das
globale Objekt zugreife...

Ist es, damit man das globale Objekte nicht aus Versehen freigibt?

Würde -- wenn ich unbedingt Dummheiten machen will -- nicht
auch folgendes funktionieren?

Delphi-Quellcode:
  TGlobalRessources.RetrieveInstance.Free;

Gruß
Jürgen

squetk 16. Feb 2009 17:04

Re: globale Variablen
 
Ich denke, man sollte hier kein Dogma setzen.

Schreibe ich allein ein kleines Tool, muss ich nicht diese Sicherheiten einbauen. Da bediene ich mich hemmungslos globaler Variablen.

Handelt es sich um eine große Anwendung, an der mehrere Entwickler arbeiten, ist die Vorgehensweise der Kapselung jedoch sinnvoll.

Hawkeye219 16. Feb 2009 18:12

Re: globale Variablen
 
Hallo Jürgen,

Zitat:

Zitat von Pfoto
Würde -- wenn ich unbedingt Dummheiten machen will -- nicht
auch folgendes funktionieren?

Delphi-Quellcode:
  TGlobalRessources.RetrieveInstance.Free;

Wenn du eine Dummheit begehen möchtest, kann dich niemand davon abhalten - schon gar nicht Delphi.

Das singleton pattern bietet durchaus einige Vorteile. Neben den bereits erwähnten (Schutz vor mehrfacher Instanziierung, Schutz vor versehentlichem Überschreiben der globalen Variablen) möchte ich noch einen weiteren nennen: Verzicht auf unnötige Instanziierung. Die globalen Objekte werden erst dann erzeugt, wenn sie wirklich benötigt werden. Das ist insbesondere dann sinnvoll, wenn das Erstellen der Objekte sehr zeitaufwendig ist oder sie viel Speicherplatz benötigen.

Beispiel für Singletons findest du übrigens auch in der VCL. Schaue dir mal den Quelltext der Units ClipBrd und Printers an.

Gruß Hawkeye

Pfoto 16. Feb 2009 18:54

Re: globale Variablen
 
Danke Hawkeye, jetzt ist es verständlich geworden. Gruß Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Seite 3 von 3     123   

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