Ich versuche, komplexe Werte über TWebBrowser (mit TEmbeddedWB) mit dem bereitgestellten externen Objekt zu empfangen und möglicherweise zu senden. Zum Beispiel; in javascript würde ich versuchen, die freigelegte Methode mit einem Array als Parameter zu verwenden:Erhalten von komplexen Javascript-Werten über externe Schnittstelle
var test = [123, 'abc'];
external.someFunction(test);
//Or something more complex
var complexObject = {
someMethod : function(){ return 1; },
someProperty : 123,
someArray : ['xyz', 3.14]
}
external.someFunction(complexObject);
Überprüfung der VarType von diesen beiden Beispielen sagt mir, es ist ein IDispatch.
function TSomeClass.someFunction(var Param : OleVariant) : OleVariant;
var
vType : Integer;
begin
vType := (VarType(Param) and VarTypeMask); //Says 9 (varDispatch)
Result := true;
end;
Ich bin nicht vollständig vertraut mit COM und ich bin mir nicht sicher, wie man damit arbeitet.
Jede Hilfe wäre willkommen.
Sie haben Recht, Methoden und Eigenschaften zugänglich sind auf diese Weise. Ich hatte jedoch kein Glück mit den Arrays. Ich habe nicht versucht, ein einzelnes Element wie SomeArray [1] auszuwählen, das funktioniert, aber ich kann VarArrayHighBound (SomeArray, 1) oder niedrige Grenze nicht bekommen, um daran zu arbeiten. Es denkt nicht, dass es ein Array oder etwas ist. Dies ist der Fall, wenn ich ein Array alleine überlasse, anstatt das Array zu einer Eigenschaft eines Objekts zu machen. Hast du Erfahrung damit? – Tim