Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verständnisproblem bei IInterface (https://www.delphipraxis.net/58338-verstaendnisproblem-bei-iinterface.html)

jensw_2000 5. Dez 2005 20:59


Verständnisproblem bei IInterface
 
Hallo Zusammen,

ich plage mich zur Zeit mit den Eicon Diva SDK herum.
Das Wichtigste funktioniert schon, aber bei den Sachen, die ich nur über Interfaces nutzen kann, komme ich nicht weiter...

z.B. möchte ich Informationen über installierten Eicon Karten in ein Logfile ausgeben ...


Delphi-Quellcode:
Procedure GetHardwareInfo;
  var DivaSystem:TDivaSystem;
      i:integer;
begin

  DivaSystem:=TDivaSystem.create(nil);
  try
    Log('Anzahl Karten    :'+ Inttostr(DivaSystem.NumDevices) );
    Log('B-Kanäle (gesamt) :'+ Inttostr(DivaSystem.TotalChannels) );
   
    for i:=0 to DivaSystem.NumDevices-1 do
    begin

      With DivaSystem.GetDevive(i) do // <<< gibt ein IInterface zurück
      begin                           // (vermutlich das Äquivalent zu TDivaDevice)
        connect;

        log('Serial No' + Inttostr(SerialNumber) ); << Geht nicht, "Undefinierter Bezeichner"
        log('Channels' + Inttostr(Channeld) ); << Geht nicht, "Undefinierter Bezeichner"
        log('ID' + Inttostr(Id) ); << Geht nicht, "Undefinierter Bezeichner"

        disconnect;
      end; // with

    end; //for

  finally
    FreeAndNil(DivaSystem);
  end; // try, finally

end; // GetHardwareInfo
Leider komme ich so nicht an die Eigenschaften der einzelnen Karten heran.

Ich habe auch schon versucht eine Instanz von TDivaDevice zu erzeugen und dieser das IInterface mit Assign zuzuweisen. Das was aber auch erfolglos "Inkompatible Typen TPeristent und IInterface".
Ein Typecast in TDivaDevice bzw. IDivaDevice funktioniert ebenfalls nicht... :coder2:

Vermutlich hat ActiveX eine Altersbegrenzung ...
Aus den Tutorials werde ich nicht wirklich schauer.
Sobald man glaubt, man hätte es verstanden kommen 100 neue Fragen und Access Violations :oops:


Kann mit Jemand in ein paar leicht verständlichen Schritten erklären, wie das funktioniert ?


Danke...

Schöne Grüße,
Jens
:hi:

marabu 5. Dez 2005 21:51

Re: Verständnisproblem bei IInterface
 
Hallo Jens,

du wirst mittels TLIBIMP oder ActiveX-Import eine Unit erzeugt haben, mit der du jetzt arbeitest. Schau in dieser Unit nach, welchen result type die Methode GetDevice() hat. Wenn das ein Interface ist, dann musst du dasjenige Interface suchen, welches die accessor methods für SerialNumber und ChanneldId aufweist. Du kannst dann mit "GetDevice() as DasBenoetigteInterface" auf die gewünschten Informationen zugreifen. Sorry für den Trockenkurs, aber ich habe keinen Zugang zu dieser Software.

Grüße vom marabu

jensw_2000 5. Dez 2005 22:20

Re: Verständnisproblem bei IInterface
 
Das entsprechende Interface ist IDivaDevice.

Der Typecast in IDivaDevice war einer meiner ersten Versuche.
Nachdem ich dann ständig AV's bekam habe ich den Ansatz verworfen und einen kompletten Urlaubstag erfolglos herumexperimentiert. :wall:

Dein Tip ist natürlich richtig.

Das Problem bestand nur darin,
das die DivaDevices nicht 0 basiert gezählt werden, sondern bei 1 anfangen :wall: AUA

Delphi-Quellcode:
    for i:=1 to DivaSystem.NumDevices do
    begin
Danke das du mich wieder auf den richtigen Weg gebracht hast...


Schöne Grüße,
Jens


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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