AGB  ·  Datenschutz  ·  Impressum  







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

Interfaces: Ich werd' irre!

Ein Thema von Fingolfin · begonnen am 8. Jun 2004 · letzter Beitrag vom 11. Jul 2004
 
Fingolfin

Registriert seit: 7. Okt 2003
62 Beiträge
 
#1

Interfaces: Ich werd' irre!

  Alt 8. Jun 2004, 20:28
Hallöle, ich möchte per Interfaces ermöglichen, daß verschiedene Units an ein Objekt rankommen ohne es instantiieren zu müssen (quasi ein Singleton, der von überall nur duch Einbindung der Unit zugreifbar sein soll).

Ich habe es folgendermaßen versucht:

Code:
interface

type

  ITest = interface
  ['{74B2F6FC-1464-43E2-A5FB-74A889F723F2}']
    procedure Show;
  end;

  function Test: ITest;

implementation

uses
  Dialogs, SysUtils;

type

  TTest = class(TInterfacedObject, ITest)
  private
  public
    procedure Show;
  end;

var
  FTest: TTest;

function Test: ITest;
begin
  if not Assigned(FTest) then
    FTest := TTest.Create;
    Result := FTest as ITest;
end;

{TTest}

destructor TTest.Destroy;
begin
  inherited;
end;

procedure TTest.Show;
begin
  ShowMessage('');
end;

initialization
  FTest := nil;
finalization
  if Assigned(FTest) then
    FTest.Free;
Das Aufrufen von Test.Show im Hauptprogramm funktioniert auch erstmal gut. Wenn ich die Prozedur allerdings ein zweites Mal ausführe, crasht er mir weg, da vorher anscheinend schon alle Referenzen auf das Interface verschwinden (direkt nach dem ersten Aufruf von Test.Show). Anscheinend besteht das Objekt FTest aber trotzdem noch, da ich per Debugger den RefCount sehen kann.



Also wird anscheinend nach jedem Zugriff eine Funktion das Objekt FTest freigegeben, was ich eigentlich auch nicht möchte, da die Daten ja eine ganze Weile bereitstehen sollen.

Für Anmerkungen und Hilfe wäre ich sehr dankbar. Bitte bringt ein wenig Licht in mein Dunkel.

Bitte Bitte.

Fingolfin
  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 05:27 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