AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi lokale Variablen mit globaler Lebensdauer?
Thema durchsuchen
Ansicht
Themen-Optionen

lokale Variablen mit globaler Lebensdauer?

Ein Thema von sniper_w · begonnen am 13. Jul 2005 · letzter Beitrag vom 15. Jul 2005
 
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#22

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 14. Jul 2005, 17:41
Beispiel:


Delphi-Quellcode:

interface

type
  IPool = interface
    .. blabla
  end;

function NPool: IPool;

implementation

type
  TPool = class(TInterfacedObject, IPool);
    .. blabla
  end;

function NPool: IPool;
var
  Pool: IPool = nil;
begin
  if Pool = nil then Pool := TPool.Create;
  Result := Pool;
end;
Hier wird eine globale Variable Pool benutzt die aber nur in der Zugriffsfunktion NPool lokal sichtbar ist. Sinn und Zweck dieser Art der Programmierung war es:

1.) das Objekt TPool nur zu erzeugen wenn es gerbraucht wird, dann aber automatuisch
2.) die Funktion NPool: IPool dient als Zugriffs-Schutz-Funktion auf die Variable Pool
3.) es darf pro Anwednungssession nur EINE Kopie von Pool geben
4.) einmal Pool alloziert so darf er nie wieder DEALLOZIERT werden, das ist eine sehr WICHTIGE Rahmenbedingung

Nun, hätte man Pool ganz global deklariert so ist es aber möglich das der Delphi Compiler so smart ist diese globale Variable in der Finalisation Sektion auf NIL zu setzen ! Und genau dies widerspräche der Forderung 4.)
Ergo: in diesem Falle ist der Weg über eine globale Variable die aber nur lokal sichtbar sein darf der einzigste Weg der die geforderten Rahmenbedingungen erfüllen kann.

Fazit: das der Programmierer dieses Weg gewählt hat zeugt davon das er die Funktionalität seines Werkzeuges sehr genau kannte und auch ausgenutzt hat. Und das er das absichtlich so getan hat ist sein Stil.

Gruß Hagen
  Mit Zitat antworten Zitat
 


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 06:00 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