Hallo erstmal,
mein erster Post, also kurze Vorstellung:
Ich "programmiere" seit einigen Jahren in Delphi, bin erst kürzlich auf Autoit gestoßen, ein geniales Tool um Programme, die eigentlich nichts miteinander zu tun haben wollen zu "überreden". Deshalb auch meine erste Frage:
Ich will ein COM-Objekt steuern. geht auch alles gut bis Variablen übergeben werden:
Spoiler anzeigen
Dim $x,$y, $Z, $t, $r, $m
[/autoit] [autoit][/autoit] [autoit]$oZeiss = ObjCreate("CZ.EMParamMgrCtrl.1";)
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc";)
GUICreate ("Embedded ImageCompare control Test", 620, 425, -1, -1)
GUICtrlCreateObj($oZeiss, 0, 0 , 180, 185)
MsgBox(0,'',$oZeiss.GetRegDBPath())
[/autoit] [autoit][/autoit] [autoit]MsgBox(0,'',$x)
MsgBox(0,'',$oZeiss.GetStagePositionD($x, $y, $Z, $t, $r, $m))
MsgBox(0,'',$x)
Func MyErrFunc()
$HexNumber=hex($oMyError.number,8)
Msgbox(0,"","We intercepted a COM Error !" & @CRLF & _
"Number is: " & $HexNumber & @CRLF & _
"Windescription is: " & $oMyError.windescription )
SetError(1) ; something to check for when this function returns
Endfunc
Kurz: Die OCX wird also korrekt angesprochen und läßt sich steuern.
Nur wenn ich Variablen übergeben will, tritt ein Fehler der Art "Falscher Variablentyp" auf:
[autoit]MsgBox(0,'',$oZeiss.GetStagePositionD($x, $y, $Z, $t, $r, $m))
[/autoit]
geht also nicht.
Die Methode in der OCX hat folgendes Interface:
[id(0x000000a4)]
long GetStagePositionD(
double* x,
double* y,
double* z,
double* t,
double* r,
double* m);
Wie kann ich in Autoit Variablentypen deklarieren? Was macht Autoit bei einer Deklaration mit DIM eigentlich? Wird die Variable automatisch den Anforderungen angepasst?
p.s. ich komme mit dem code tag in dem Editor nicht klar, es werden alle Zeilenumbrüche gelöscht, daher kommt der Quelltext ohne code tag
Edit BugFix: Habe mal die Tags gesetzt
Edit Nogo: Danke!
[ spoiler ][ autoit ] Code [ /autoit ][ /spoiler ] ohne die Leerzeichen