Hi Leute,
ist sowas ähnliches vllt. möglich?
Test([$a, $b, $c, $d])
Func Test($aArray)
; mach was
EndFunc
Hat was von python und anderen, hat jemand ne idee, ob das irgendwie möglich ist?
Danke!
Hi Leute,
ist sowas ähnliches vllt. möglich?
Test([$a, $b, $c, $d])
Func Test($aArray)
; mach was
EndFunc
Hat was von python und anderen, hat jemand ne idee, ob das irgendwie möglich ist?
Danke!
Die Frage ist wofür braucht mans^^
Du könntest es mit ner Funktion machen die ein Array zurückgibt
Also so in der art:
Test(Stringsplit(...))
An eine Funktion hatte ich auch schon gedacht. Ich brauche die Deklaration des Array nicht, so spare ich mir die Zeile und es wird übersichtlicher, vorallem wenn man mehrere Aufrufe der selben Funktion hat, aber mit anderen Parametern.
Dachte mir schon, das es nicht direkt möglich ist. Danke.
Wenn ich StringSplit benutze und ein Dictionary mit reingebe, verliert es logischerweise die Daten und sowieso kann ich nicht mit strings arbeiten, wo handles und IDs benötigt werden.
Ich brauch eine Funktion, die n-Parameter aufnimmt, daraus ein Array bildet und es zurückgibt.
Geht sowas?
Ich brauch eine Funktion, die n-Parameter aufnimmt, daraus ein Array bildet und es zurückgibt.
Geht sowas?
Mit undefiniert vielen Parametern geht das nicht. Wenn du aber weisst, dass z.B. nicht mehr als 10 Parameter jemals verwendet werden, kannst du sowas machen:
Function _bla($p1, $p2=Chr(0), $p3=Chr(0), $p4=Chr(0), $p5=Chr(0), $p6=Chr(0), $p7=Chr(0), $p8=Chr(0), $p9=Chr(0), $p10=Chr(0))
Local $aParam[10] = [$p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8, $p9, $p10]
For $i = 1 To 9
If $aParam[$i] = Chr(0) Then ExitLoop
Next
ReDim $aParam[$i]
Return $aParam
EndFunc
Jo danke BugFix, auch auf die Idee bin ich schon gekommen. Schade das AutoIt so viele limitations hat
Schade das AutoIt so viele limitations hat
Nichts, was sich nicht beheben lässt. Zumindest nicht in diesem Fall.
BugFix Dafür gibt es doch extra @NumParams:
[autoit]Func array($Value1, $Value2=0, $Value3=0, $Value4=0, $Value5=0, $Value6=0, $Value7=0, $Value8=0, $Value9=0, $Value10=0, $Value11=0, $Value12=0, $Value13=0, $Value14=0, $Value15=0, $Value16=0, $Value17=0, $Value18=0, $Value19=0, $Value20=0, $Value21=0, $Value22=0, $Value23=0, $Value24=0, $Value25=0, $Value26=0, $Value27=0, $Value28=0, $Value29=0, $Value30=0, $Value31=0, $Value32=0, $Value33=0, $Value34=0, $Value35=0, $Value36=0, $Value37=0, $Value38=0, $Value39=0, $Value40=0, $Value41=0, $Value42=0, $Value43=0, $Value44=0, $Value45=0, $Value46=0, $Value47=0, $Value48=0, $Value49=0, $Value50=0, $Value51=0, $Value52=0, $Value53=0, $Value54=0, $Value55=0, $Value56=0, $Value57=0, $Value58=0, $Value59=0, $Value60=0, $Value61=0, $Value62=0, $Value63=0, $Value64=0, $Value65=0, $Value66=0, $Value67=0, $Value68=0, $Value69=0, $Value70=0, $Value71=0, $Value72=0, $Value73=0, $Value74=0, $Value75=0, $Value76=0, $Value77=0, $Value78=0, $Value79=0, $Value80=0, $Value81=0, $Value82=0, $Value83=0, $Value84=0, $Value85=0, $Value86=0, $Value87=0, $Value88=0, $Value89=0, $Value90=0, $Value91=0, $Value92=0, $Value93=0, $Value94=0, $Value95=0, $Value96=0, $Value97=0, $Value98=0, $Value99=0, $Value100=0, $Value101=0, $Value102=0, $Value103=0, $Value104=0, $Value105=0, $Value106=0, $Value107=0, $Value108=0, $Value109=0, $Value110=0, $Value111=0, $Value112=0, $Value113=0, $Value114=0, $Value115=0, $Value116=0, $Value117=0, $Value118=0, $Value119=0, $Value120=0, $Value121=0, $Value122=0, $Value123=0, $Value124=0, $Value125=0, $Value126=0, $Value127=0, $Value128=0, $Value129=0, $Value130=0, $Value131=0, $Value132=0, $Value133=0, $Value134=0, $Value135=0, $Value136=0, $Value137=0, $Value138=0, $Value139=0, $Value140=0, $Value141=0, $Value142=0, $Value143=0, $Value144=0, $Value145=0, $Value146=0, $Value147=0, $Value148=0, $Value149=0, $Value150=0, $Value151=0, $Value152=0, $Value153=0, $Value154=0, $Value155=0, $Value156=0, $Value157=0, $Value158=0, $Value159=0, $Value160=0, $Value161=0, $Value162=0, $Value163=0, $Value164=0, $Value165=0, $Value166=0, $Value167=0, $Value168=0, $Value169=0, $Value170=0, $Value171=0, $Value172=0, $Value173=0, $Value174=0, $Value175=0, $Value176=0, $Value177=0, $Value178=0, $Value179=0, $Value180=0, $Value181=0, $Value182=0, $Value183=0, $Value184=0, $Value185=0, $Value186=0, $Value187=0, $Value188=0, $Value189=0, $Value190=0, $Value191=0, $Value192=0, $Value193=0, $Value194=0, $Value195=0, $Value196=0, $Value197=0, $Value198=0, $Value199=0, $Value200=0, $Value201=0, $Value202=0, $Value203=0, $Value204=0, $Value205=0, $Value206=0, $Value207=0, $Value208=0, $Value209=0, $Value210=0, $Value211=0, $Value212=0, $Value213=0, $Value214=0, $Value215=0, $Value216=0, $Value217=0, $Value218=0, $Value219=0, $Value220=0, $Value221=0, $Value222=0, $Value223=0, $Value224=0, $Value225=0, $Value226=0, $Value227=0, $Value228=0, $Value229=0, $Value230=0, $Value231=0, $Value232=0, $Value233=0, $Value234=0, $Value235=0, $Value236=0, $Value237=0, $Value238=0, $Value239=0, $Value240=0, $Value241=0, $Value242=0, $Value243=0, $Value244=0, $Value245=0, $Value246=0, $Value247=0, $Value248=0, $Value249=0, $Value250=0, $Value251=0, $Value252=0, $Value253=0, $Value254=0, $Value255=0)
Local $Array[@NumParams], $i
For $i = 1 To @NumParams
$Array[$i-1] = Eval("Value" & $i)
Next
Return $Array
EndFunc
BugFix Dafür gibt es doch extra @NumParams:
Ich weiß - aber dann muss man Eval nutzen, was ich möglichst vermeide.
Hi,
Zitat von BugFixIch weiß - aber dann muss man Eval nutzen, was ich möglichst vermeide.
Eval "muss" man ja nur benutzen, weil "man" zu faul ist, die Zeilen alle untereinander auszuschreiben...
Switch @NumParams
Case 3
$Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi)
Case 5
$Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1)
Case 7
$Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2)
Case 9
$Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3)
Case 11
$Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4)
Case 13
$Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5)
Case Else
Local $DllCallStr = 'DllCall($_KERNEL32DLL, $RetType, $_MFHookApi', $n = 1
For $i = 5 To @NumParams Step 2
$DllCallStr &= ', $Type' & $n & ', $Param' & $n
$n += 1
Next
$DllCallStr &= ')'
$Ret = Execute($DllCallStr)
EndSwitch