ActiveX object - VARIANT* Parameter
-
- Beiträge: 292
- Registriert: Sa 5. Feb 2011, 20:38
- OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
- CPU-Target: 32Bit
- Wohnort: Wien
ActiveX object - VARIANT* Parameter
Hi,
ich moechte ein ActiveX-Object in einem Free Pascal Projekt verwenden; eine Methode ist in C++ als
long Fetch(VARIANT* vValue)
deklariert. Import Type Library von LazActiveX hat das ganze in
function Fetch(vValue:OleVariant):Integer;
konvertiert. Eigentlich sollen in vValue nur Types wie integer, float oder string transportiert werden und keine OLE-Objekte. Passt das denn so mit OleVariant bzw. wie gehe ich richtig damit um?
Dankeschoen!
ich moechte ein ActiveX-Object in einem Free Pascal Projekt verwenden; eine Methode ist in C++ als
long Fetch(VARIANT* vValue)
deklariert. Import Type Library von LazActiveX hat das ganze in
function Fetch(vValue:OleVariant):Integer;
konvertiert. Eigentlich sollen in vValue nur Types wie integer, float oder string transportiert werden und keine OLE-Objekte. Passt das denn so mit OleVariant bzw. wie gehe ich richtig damit um?
Dankeschoen!
Re: ActiveX object - VARIANT* Parameter
Wieso denkst du das?Eclipticon hat geschrieben: Eigentlich sollen in vValue nur Types wie integer, float oder string transportiert werden und keine OLE-Objekte.
-
- Beiträge: 292
- Registriert: Sa 5. Feb 2011, 20:38
- OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
- CPU-Target: 32Bit
- Wohnort: Wien
Re: ActiveX object - VARIANT* Parameter
Weil das die Dokumentation der Methode sagt.
Re: ActiveX object - VARIANT* Parameter
Vielleicht verstehe ich deine Frage nicht ganz, aber ich denke das passt so, oder? Der Compiler sollte sich um eine kompatible Umwandlung kümmern.
Wie wendest du die Fkt. denn an?
?
Gibt es damit Probleme?
Wie wendest du die Fkt. denn an?
Code: Alles auswählen
uses variants;
...
i:=Fetch('test');
bzw.
i:=Fetch(1);
Gibt es damit Probleme?
-
- Beiträge: 292
- Registriert: Sa 5. Feb 2011, 20:38
- OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
- CPU-Target: 32Bit
- Wohnort: Wien
Re: ActiveX object - VARIANT* Parameter
Sorry, ich haette vielleicht dazu sagen solle, dass vValue ein Rueckgabewert von Fetch() ist, den ich auslesen moechte ...
Re: ActiveX object - VARIANT* Parameter
Ich weiss aber immer noch nicht, wo es bei dir hakt, oder was der Ruckgabewert für einen Typ hatEclipticon hat geschrieben:Sorry, ich haette vielleicht dazu sagen solle, dass vValue ein Rueckgabewert von Fetch() ist, den ich auslesen moechte ...
Also sowas funzt hier
Code: Alles auswählen
uses variants;
...
function Fetch(var vValue:OleVariant):Integer;
begin
vValue:='test';
end;
procedure TForm1.Button1Click(Sender: TObject);
var r:OleVariant;
begin
Caption:=inttostr(fetch(r));
if VarType(r)=varolestr then ShowMessage(VarToStr(r));
end;
Code: Alles auswählen
...
function FetchP(vValue: POleVariant):Integer;
begin
vValue^:='test';
end;
var r:OleVariant;
begin
Caption:=inttostr(FetchP(@r));
if VarType(r)=varolestr then ShowMessage(VarToStr(r));
...
-
- Beiträge: 292
- Registriert: Sa 5. Feb 2011, 20:38
- OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
- CPU-Target: 32Bit
- Wohnort: Wien
Re: ActiveX object - VARIANT* Parameter
Hi,
wenn ich das auf meinen Code anwende (die Source zu Fetch habe ich nicht), loest ein Aufruf von Fetch() eine EOleSysError (Type mismatch) aus.
Mit POleVariant scheitert leider die Compliluerung der TLB (Error: Type is not automatable: "POleVariant")
Code: Alles auswählen
uses variants;
...
procedure TForm1.Button1Click(Sender: TObject);
var r:OleVariant;
begin
Caption:=inttostr(fetch(r));
if VarType(r)=varolestr then ShowMessage(VarToStr(r));
end;
Mit POleVariant scheitert leider die Compliluerung der TLB (Error: Type is not automatable: "POleVariant")
Re: ActiveX object - VARIANT* Parameter
Hast du es jetzt herausgefunden? Du hast doch sicher zwischenzeitlich vieles ausprobiert.
Ich kann dazu leider nicht mehr sagen, mit den spärlichen Informationen.
Ich kann dazu leider nicht mehr sagen, mit den spärlichen Informationen.
-
- Beiträge: 292
- Registriert: Sa 5. Feb 2011, 20:38
- OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
- CPU-Target: 32Bit
- Wohnort: Wien
Re: ActiveX object - VARIANT* Parameter
Nein, ich bastle noch - dass die Informationen ziemlich spaerlich sind, ist mir bewusst, aber ich hab den Sourcecode zu dem ActiveX object leider nicht und noch dazu unterliegt dieses Teil einer Geheimhaltungsvereinbarung ...theo hat geschrieben:Hast du es jetzt herausgefunden? Du hast doch sicher zwischenzeitlich vieles ausprobiert.
Ich kann dazu leider nicht mehr sagen, mit den spärlichen Informationen.
-
- Beiträge: 292
- Registriert: Sa 5. Feb 2011, 20:38
- OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
- CPU-Target: 32Bit
- Wohnort: Wien
Re: ActiveX object - VARIANT* Parameter
Ausgebastelt. Haette ich Deinen Code etwas genauer angesehen, haette ich auch das
nicht uebersehen, das LazActiveX nicht eingefuegt hattte ...
Code: Alles auswählen
var vValue: OleVariant