Announcement

Collapse
No announcement yet.

Problem beim Erkennen eines Interfaces

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem beim Erkennen eines Interfaces

    Hallo zusammen,

    Ich habe ein kleines bis mittelgroßes Problem mit Interfaces.

    Es handelt sich um diverse Klassen zur Ansteuerung diverser OnlineTerminals. Da jedes OnlineTerminal bestimmte Administrations Funktionen benötigt, welche sich i.d.R. stark unterscheiden habe Ich jeder Klasse ein Administrations Object spendiert.

    Basis für Administrations Objecte
    [delphi]
    TTiOnlineTerminalAdmin = class (TInterfacedObject)
    protected
    FIFTerminal : TTiOnlineTerminalIF;
    public
    constructor create ( aTerminal : TTiOnlineTerminalIF );
    destructor destroy; override;
    end;
    [/delphi]

    Deklaration einer Adminstrations-Objekt Klasse

    [delphi]
    TTiOTHFT201Admin = class(TTiOnlineTerminalAdmin, ITiIFLogin, ITiIFInteractiveAdministration)
    public
    function Login : Boolean; stdcall;
    function Logout : Boolean; stdcall;

    function ExecuteCmd ( aCmd : String ) : Boolean; stdcall;
    function UpdateTerminalParams : Boolean; stdcall;

    constructor create (aTerminal: TTiOnlineTerminalIF);
    destructor destroy; override;
    end;
    [/delphi]

    Die Adminstrations Objekte werden im Create der eigentlich OnlineTerminal Klasse kreiert,
    und beim Destroy der selbigen wieder weggeschmissen.

    Das eigentliche Problem besteht jetzt darin, das wenn Ich die TerminalKlasse (bzw. das Administrations Object, der selbigen) aus meiner Anwendung per

    [delphi]
    with fDlgHWSettings do begin
    if Supports( HWCom.Terminal.Administration , IID_ITiIFInteractiveAdministration ) then
    cxOTIFInteractiveAdministration.Enabled := True;

    if Supports( HWCom.Terminal.Administration , IID_ITiIFLogin ) then
    cxOTIFLogin.Enabled := True;
    end;
    [/delphi]

    abfrage dann knallt (Zugriffsverletzung bei Adresse BlaBla) es immer, wenn ich zum 2ten mal Supports aufrufe. Die Objekte werden in der Zwischenzeit
    nicht weggeworfen und sind auch noch Assigned.

    Hat irgendjemand ne Idee, woran das liegen könnte??

    Viele Grüße,
    Christian

  • #2
    Nur eine Frage: Das Objekte, die von TInterfacedObject abgeleitet sind, über einen Referenzzähler automatisch freigegeben werden, ist Dir bekannt? Falls nicht, schaue Dir in der Doku die zugegebenermassen knappe Erklärung bei _Release an.<p>
    Mari
    Schöne Grüße, Mario

    Comment


    • #3
      Hi, und Danke!

      und genau da lag das Problem... das Object wurde weggeworfen :-(

      Hab Das ReferenceCounting überschrieben uns jetzt gehts :-

      Comment

      Working...
      X