AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Probleme mit EnumDispatchProperties

Ein Thema von fuchsle · begonnen am 13. Dez 2011 · letzter Beitrag vom 19. Dez 2011
Antwort Antwort
fuchsle

Registriert seit: 22. Jul 2011
Ort: Heilbronn
35 Beiträge
 
Delphi XE3 Professional
 
#1

Probleme mit EnumDispatchProperties

  Alt 13. Dez 2011, 17:38
Hallo,

ich habe eine eigene COM-Schnittstelle wie folgt eingebunden:
Delphi-Quellcode:
var
Plugin: Variant;
Plugin := CreateOleObject('ClimaController.TFW_ClimaController') as IDispatch; Ich kann bisher auf die Properties zugreifen, dies geschieht jedoch "blind"
Delphi-Quellcode:
  Edit_PT1001.Text := FloatToStr(Plugin.PT1001);
  Edit_PT1002.Text := FloatToStr(Plugin.PT1002);
Wenn ich, was ich bisher gelesen habe, nicht falsch interpretiere, sollte ich über:
procedure EnumDispatchProperties(Dispatch: IDispatch; PropType: TGUID; VTCode: Integer; PropList: TStrings); Die Eigenschaften der IDispatch auslesen können.

Möchte einfach die Eigenschaften der eingebundenen Schnittstellen ermitteln können.
Kann mir da jemand weiterhelfen?
Entweder mit einem Beispiel zu der genannten Prozedur oder mit einem evtl. "besseren" Weg.

Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Probleme mit EnumDispatchProperties

  Alt 13. Dez 2011, 18:17
Komponente importieren ,ActiveX und die xxx_tlb einbinden?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
fuchsle

Registriert seit: 22. Jul 2011
Ort: Heilbronn
35 Beiträge
 
Delphi XE3 Professional
 
#3

AW: Probleme mit EnumDispatchProperties

  Alt 13. Dez 2011, 18:27
Komponente importieren ,ActiveX und die xxx_tlb einbinden?
Mit TLB läuft es wunderbar. Aber es soll ohne die TLB realisiert werden.
Darüber sollen "Plugins" angebunden werden und um es flexibel zu halten ohne TLB.
  Mit Zitat antworten Zitat
fuchsle

Registriert seit: 22. Jul 2011
Ort: Heilbronn
35 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Probleme mit EnumDispatchProperties

  Alt 14. Dez 2011, 10:13
Meine *.ridl sieht wie folgt aus.
Delphi-Quellcode:
// ************************************************************************ //
// WARNUNG
// -------
// Diese Datei wird von dem Typbibliotheks-Importer oder dem Typbibliothekseditor
// erzeugt. Außer Syntaxfehlern analysiert der Editor an der Datei vorgenommene
// Änderungen. Wenn Sie aber Änderungen mit dem Editor vornehmen, wird diese
// Datei neu erzeugt und Kommentare oder Formatänderungen gehen verloren.
// ************************************************************************ //
// Datei erzeugt am 14.12.2011 10:03:59 (- $Rev: 12980 $, 8529900).

[
  uuid(81DF182E-5186-4B80-BC0B-2B02CB6C5003),
  version(1.0)

]
library ClimaController
{

  importlib("stdole2.tlb");

  interface ITFW_ClimaController;
  coclass TFW_ClimaController;


  [
    uuid(8DF256B0-3FB9-428A-A4D4-DC256B9AF3BD),
    helpstring("Dispatch-Interface für TFW_ClimaController-Objekt"),
    dual,
    oleautomation
  ]
  interface ITFW_ClimaController: IDispatch
  {
    [propget, id(0x000000CA)]
    HRESULT _stdcall PT1001([out, retval] double* Value);
    [propget, id(0x000000CB)]
    HRESULT _stdcall PT1002([out, retval] double* Value);
    [propget, id(0x000000CC)]
    HRESULT _stdcall PT1003([out, retval] double* Value);
    [propget, id(0x000000CD)]
    HRESULT _stdcall PT1004([out, retval] double* Value);
    [propget, id(0x000000CE)]
    HRESULT _stdcall NO2([out, retval] double* Value);
    [propget, id(0x000000CF)]
    HRESULT _stdcall State([out, retval] int* Value);
    [propget, id(0x000000D0)]
    HRESULT _stdcall Error([out, retval] int* Value);
    [propget, id(0x000000D1)]
    HRESULT _stdcall ErrorMsg([out, retval] BSTR* Value);
    [propget, id(0x000000D2)]
    HRESULT _stdcall get_tSet([out, retval] double* Value);
    [id(0x000000D3)]
    HRESULT _stdcall set_tSet([in] double Param1);
    [propget, id(0x000000C9)]
    HRESULT _stdcall Chamber([out, retval] double* Value);
  }
;

  [
    uuid(12EE300E-BF96-4984-9467-88562F62E2F8),
    helpstring("TFW_ClimaController Objekt")
  ]
  coclass TFW_ClimaController
  {
    [default] interface ITFW_ClimaController;
  }
;

};
Dies wurde automatisch erzeugt, habe lediglich über den Assi die Methode und einige Eigenschaften hinzugefügt.

Wie für das late binding benötigt, würde ich nun davon ausgehen, dass eine IDispatch Schnittstelle realisiert wurde.
Nur wie komm ich in meinem Client an die Eigenschaften und Methoden ran ohne diese "blind" eingeben zu müssen?

Dabei geht es darum die vTable, welche sonst durch das Einbinden der TLB erzeugt wird, nun nach einem late binding zu erhalten.

Freue mich sehr über eure Hilfe, aktuell komm ich einfach nicht weiter.
  Mit Zitat antworten Zitat
fuchsle

Registriert seit: 22. Jul 2011
Ort: Heilbronn
35 Beiträge
 
Delphi XE3 Professional
 
#5

AW: Probleme mit EnumDispatchProperties

  Alt 19. Dez 2011, 13:39
Komponente importieren ,ActiveX und die xxx_tlb einbinden?

Habe es versucht zumindest so hin zu bekommen. Aber meine Listbox bleibt einfach leer.
Wo bin ich nun auf dem falschen Weg?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActiveX, ClimaController_TLB, StdCtrls, AxCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    ClimaController: IDispatch;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ClimaController := CoTFW_ClimaController.Create;
  EnumDispatchProperties( ClimaController , GUID_NULL, VT_EMPTY, ListBox1.Items);
end;

end.
Danke für eure Hilfe.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf