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
 
#24

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 14. Jul 2005, 17:58
So nun das Gegen-Beispiel

Delphi-Quellcode:
interface

type
  IPool = interface
    .. blabla
  end;

function NPool: IPool;

implementation

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

var
  Pool: TPool = nil;

function NPool: IPool;
begin
  if Pool = nil then Pool := TPool.Create;
  Result := Pool;
end;
Hier wird nun Pool vom implementierenden Klassentyp sein, statt wie oben ein Interface. Ergo wirken auf die globale Variable Pool nicht die gleichen Wirkmechanismen wie sie bei Interfaces wirken. Damit ist also garantiert das Pool durch den Programmierer gegebenfalls manuell zerstört werden muß. Nun, das soll aber laut Rahmenbedingung nicht möglich sein. Relevant sind nun 3 Punkte:

1.) dieser Source wäre auch in neueren Delphi Versionen kompilierbar
2.) Pool ist in seiner Sichtbarkeit aber nicht auf NPool beschränkt, im nachfolgenden Source kann man also unbeabsichtigt darauf zugreifen
3.) da innerhalb von NPool das Object permanet bei jedemAufruf der Funktion erst in ein Interface umgewandelt werden muß ist die Performance dieser Funktion schlechter als im 1. Beispiel

Beides sind annehmbar gute Programmierstile und denoch gibt es große Unterschiede im schlußendlichen Laufzeitverhalten.

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