![]() |
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:
Leider komme ich so nicht an die Eigenschaften der einzelnen Karten heran.
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 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: |
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 |
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:
Danke das du mich wieder auf den richtigen Weg gebracht hast...
for i:=1 to DivaSystem.NumDevices do
begin Schöne Grüße, Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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