Hi,
danke für die schnelle Antwort!
ZitatUm Gottes willen! Nein,... Auf keinen Fall so xD
Du musst die Struktur glücklicherweise nur ein einziges mal eintippen
Darauf bin ich eh nicht scharf...
Aber ich bin mir in dem Fall nicht sicher, da das eine C-Struktur ist, wie das mit dem "alignment" läuft.
Oder da die Struktur nur aus durch 8 teilbare Anzahl von char-Arrays besteht brauch ich mir da keine Gedanken machen?
Bezüglich des Aufrufs.
Das "Struktur-Array" wird von der DLL-Funktion gefüllt. Es wird der Pointer auf das erste (Struktur-)Element und die Größe der Elemente angegeben. Falls die Funktion mehr Geräte finden sollte wird diese Anzahl zurückgegeben, aber eben nur die max. Anzahl an Strukturelementen befüllt.
Nach dem Aufrufen steht in dem Struktur-array die Daten der gefundenen Geräte.
Wenn ich das ganze in einem Array, so wie Du angegebn hast, steht das so hintereinander im Speicher wie in 'C'? Damit wenn die (DLL-)Funktion mit dem Pointer weitergeht die nächste Struktur ausgefüllt wird?
Ich stell mir das so vor (aber ob das funzt?):
(ist mal nur graue theorie, da heute ja SO & ich das erst morgen ausprobieren kann...)
Spoiler anzeigen
Global $i, $atDDA[5], $pStruct, $avRet, $ccSNR[5]
Global $tagDDA = 'ULONG snr;' & _
'CHAR name[256];' & _
'int dhcp;' & _
'CHAR ip[24];' & _
'CHAR netmask[24];' & _
'CHAR gateway[24];' & _
'int signature'
Global $tDDA = DllStructCreate($tagDDA)
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To UBound($atDDA) -1
$atDDA[$i] = $tDDA
Next
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit] [autoit][/autoit] [autoit]$pStruct = DllStructGetPtr($atDDA[0])
$avRet = DllCall('ChipControl.dll', 'int', 'CCGetAllDevsInArray', 'ptr', $pStruct, 'int', UBound($atDDA))
if $avRet[0] > UBound($atDDA) then
MsgBox(64,"CC-Scan", $avRet[0] & " Geräte gefunden!")
EndIf
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
For $i = 0 To $avRet[0]
$ccSNR[$i] = DllStructGetData($tDDA[$i],'snr') ;Hier bin ich mir sehr unsicher, ob das so geht!
Next