AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Globale Variablen!

Ein Thema von tmode00 · begonnen am 6. Jul 2005 · letzter Beitrag vom 6. Jul 2005
Antwort Antwort
Robert_G
(Gast)

n/a Beiträge
 
#1

Re: Globale Variablen!

  Alt 6. Jul 2005, 19:18
Hmm, was ist effektiv der Unterschied zwischen SirTs Lösung und einer globalen Vatriablen?...

Um dich nicht mit Interfaces zuzuschütten empfehle ich dir erstmal ein Singleton welches aus einer absrtakten öffentlichen Klasse und einer versteckten Klasse besteht, die die seine Member implementiert.
Um zu verhindern, dass die Instanz zerstört wird, wird eine Exception im Destructor ausgelöst.

Delphi-Quellcode:
interface

type
   TSingletonMoneyDings = class
   private
      function getMoney: Currency; virtual; abstract;
      procedure setMoney(const aValue: Currency); virtual; abstract;
   public
      property Money: Currency read getMoney write setMoney;
      class function Instance: TSingletonMoneyDings;
   end;


implementation
uses
   SysUtils;

type
   TRichtigesMoneyDings = class(TSingletonMoneyDings)
   private
      fMoney: Currency;
      fAllowDestruction: Boolean;
      function getMoney: Currency; override;
      procedure setMoney(const aValue: Currency); override;
   public
      destructor Destroy; override;
   end;

   InvalidSingletonDestructionException = class(Exception)
   public
      constructor Create;
   end;

var
   staticMoneyDings : TRichtigesMoneyDings;

{ TSingletonMoneyDings }

class function TSingletonMoneyDings.Instance: TSingletonMoneyDings;
begin
   Result := staticMoneyDings;
end;

{ TRichtigesMoneyDings }

destructor TRichtigesMoneyDings.Destroy;
begin
   if fAllowDestruction then
      inherited
   else
      raise InvalidSingletonDestructionException.Create();
end;

function TRichtigesMoneyDings.getMoney: Currency;
begin
   Result := fMoney;
end;

procedure TRichtigesMoneyDings.setMoney(const aValue: Currency);
begin
   fMoney := aValue;
end;

{ InvalidSingletonDestructionException }

constructor InvalidSingletonDestructionException.Create;
begin
   inherited CreateFmt('%s can not be destroyed at this time.', [TMoneyDings.ClassName]);
end;

initialization
   staticMoneyDings := TRichtigesMoneyDings.Create();
   staticMoneyDings.fAllowDestruction := False;
finalization
   staticMoneyDings.fAllowDestruction := True;
   staticMoneyDings.Free();
end.


Benutzen kannst du sie von überall aus über Instanz:
TSingletonMoneyDings.Instance.Money := 1
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:12 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