ActiveX object - VARIANT* Parameter

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Eclipticon
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

Beitrag von Eclipticon »

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!

Benutzeravatar
theo
Beiträge: 10900
Registriert: Mo 11. Sep 2006, 19:01

Re: ActiveX object - VARIANT* Parameter

Beitrag von theo »

Eclipticon hat geschrieben: Eigentlich sollen in vValue nur Types wie integer, float oder string transportiert werden und keine OLE-Objekte.
Wieso denkst du das?

Eclipticon
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

Beitrag von Eclipticon »

Weil das die Dokumentation der Methode sagt.

Benutzeravatar
theo
Beiträge: 10900
Registriert: Mo 11. Sep 2006, 19:01

Re: ActiveX object - VARIANT* Parameter

Beitrag von theo »

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?

Code: Alles auswählen

uses variants;
...
i:=Fetch('test');
bzw.
i:=Fetch(1);
?

Gibt es damit Probleme?

Eclipticon
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

Beitrag von Eclipticon »

Sorry, ich haette vielleicht dazu sagen solle, dass vValue ein Rueckgabewert von Fetch() ist, den ich auslesen moechte ...

Benutzeravatar
theo
Beiträge: 10900
Registriert: Mo 11. Sep 2006, 19:01

Re: ActiveX object - VARIANT* Parameter

Beitrag von theo »

Eclipticon hat geschrieben:Sorry, ich haette vielleicht dazu sagen solle, dass vValue ein Rueckgabewert von Fetch() ist, den ich auslesen moechte ...
Ich weiss aber immer noch nicht, wo es bei dir hakt, oder was der Ruckgabewert für einen Typ hat

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;   
Oder auch:

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));
...

Eclipticon
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

Beitrag von Eclipticon »

Hi,

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;   
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")

Benutzeravatar
theo
Beiträge: 10900
Registriert: Mo 11. Sep 2006, 19:01

Re: ActiveX object - VARIANT* Parameter

Beitrag von theo »

Hast du es jetzt herausgefunden? Du hast doch sicher zwischenzeitlich vieles ausprobiert.
Ich kann dazu leider nicht mehr sagen, mit den spärlichen Informationen.

Eclipticon
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

Beitrag von Eclipticon »

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.
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 ...

Eclipticon
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

Beitrag von Eclipticon »

Ausgebastelt. Haette ich Deinen Code etwas genauer angesehen, haette ich auch das

Code: Alles auswählen

var vValue: OleVariant
nicht uebersehen, das LazActiveX nicht eingefuegt hattte ...

Antworten