Ich übersetze einen Delphi Code in Purebasic. Hänge aber gerade bei dem Problem das ich in einem String eine weitere COMInstanz übergeben muss...
Purebasic Code
Code: Alles auswählen
Global ParamListObjekt.COMateObject
ParamListObjekt=Fakt\GetObjectProperty("CreateMakroParamList()")
ParamListObjekt\Invoke("AddParam('"+Parameter1$+"','"+Wert1$+"')")
ParamListObjekt\Invoke("AddParam('"+Parameter2$+"','"+Wert2$+"')")
Fakt\Invoke("StartMakroEx('"+MakroDateiName$+"',"+ParamListObjekt+")")
ParamListObjekt\GetStringProperty("count")
Doch ich erhalte eine Fehlermeldung bei dem letzten Befehl "Type mismatch in the method parameters"
Laut Doku der ComSchnittstelle die ich nutze hat die Funktion StartMakroEx folgende Beispielhaften (Pseudo) Aufruf
Code: Alles auswählen
procedure StartMakroEx(const
MakroDatei: WideString; const
ParamList: MakroParamList);
Code: Alles auswählen
var
makroParamList: OleVariant;
fakt: OleVariant; { Voraussetzung: Die
Variable fakt ist bereits initialisiert... }
makroParamList := Fakt.CreateMakroParamList;
makroParamList.AddParam('Param1',
'Param1_Wert');
makroParamList.AddParam('Param2',
'Param2_Wert');
{ usw. }
Fakt.StartMakroEx('MakroDatei.qdf',
makroParamList);
makroParamList := Unassigned;
Ich gehe davon aus das die Schnittstelle mein Objekt als reinen Integer interpretiert.... (MakroParamList!=Integer)
Ich habe auch folgendes ausprobiert
Code: Alles auswählen
Fakt\Invoke("StartMakroEx('"+MakroDateiName$+"',"+ParamListObjekt\GetCOMObject()+")")
Besten Dank
Viele Grüße
Andreas Rauscher