#include <StructureConstants.au3>
#include 'DLL_Arrays.au3'  ; <== hier ggf. anpassen, bei mir sind beide Dateien im selben Ordner
;==================================================================================================
;  Struktur: Pointer-Array
;==================================================================================================

; ===  Erstellen Integer Array
Local $aPtrInt = _PtrArray_Create('int', 10)

; === Werte setzen
_PtrArray_SetData($aPtrInt, '10,20,30,40,50,60,70,80,90,100', ',')

; === Auslesen alle Werte in Console
ConsoleWrite('Alle Werte als String, $aPtrInt:' & @CRLF)
_PtrArray_GetData($aPtrInt, 'int')

; === Auslesen eines Wertes in Console
ConsoleWrite(@CRLF & 'Wert 7 $aPtrInt:' & @CRLF)
_PtrArray_GetData($aPtrInt, 'int', 7)

; === Auslesen alle Werte in ein Array
ConsoleWrite(@CRLF & 'Alle Werte als Array, $aPtrInt:' & @CRLF)
Local $aRet = _PtrArray_GetData($aPtrInt, 'int', -1, 2)
For $i = 0 To UBound($aRet) -1
	ConsoleWrite($aRet[$i] & @CRLF)
Next
;==================================================================================================

; === Erstellen Zeichenkette Array
Local $aPtrChar = _PtrArray_Create('char[128]', 5)

; === Werte setzen
_PtrArray_SetData($aPtrChar, 'Anna,Lena,Magda,Isabell,Juliane', ',')

; === Auslesen alle Werte in Console
ConsoleWrite(@CRLF & 'Alle Werte als String, $aPtrChar:' & @CRLF)
_PtrArray_GetData($aPtrChar, 'char[128]')

; === Auslesen eines Wertes in Console
ConsoleWrite(@CRLF & 'Wert 3 $aPtrChar:' & @CRLF)
_PtrArray_GetData($aPtrChar, 'char[128]', 3)

; === Auslesen alle Werte in ein Array
ConsoleWrite(@CRLF & 'Alle Werte als Array, $aPtrChar:' & @CRLF)
$aRet = _PtrArray_GetData($aPtrChar, 'char[128]', -1, 2)
For $i = 0 To UBound($aRet) -1
	ConsoleWrite($aRet[$i] & @CRLF)
Next


;==================================================================================================
;  Struktur: Byte-Array
;==================================================================================================

; ===  Erstellen Array mit 3 RECT-Strukturen als Elementen
; Returnwert: ein echtes Array, $aByte[0] enthält die Variable, die an einen Dll-Aufruf zu übergeben wäre
Local $aByteRECT = _ByteArray_Create($tagRECT, 3)

; === Strukturen befüllen (für RECT mit API-Func: SetRect)
If Not _WinAPI_SetRect($aByteRECT[1], 20, 30, 200, 300) Then ConsoleWrite('Error: ' & @error & @CRLF)
If Not _WinAPI_SetRect($aByteRECT[2], 40, 50, 240, 350) Then ConsoleWrite('Error: ' & @error & @CRLF)
If Not _WinAPI_SetRect($aByteRECT[3], 60, 70, 260, 370) Then ConsoleWrite('Error: ' & @error & @CRLF)

; === Auslesen in Console
ConsoleWrite(@CRLF & 'Alle Werte der Strukturen im Byte-Array:' & @CRLF)
For $i = 1 To 3
	ConsoleWrite('RECT ' & $i & ':' & @CRLF)
	_Struct_GetValue($aByteRECT[$i])
Next



;===============================================================================
; Function Name:   _WinAPI_SetRect(ByRef $tRECT, $X1, $Y1, $X2, $Y2)
; Description:     Befüllt eine RECT-Struktur in einem Aufruf mit Werten
; Parameter(s):    $tRECT               RECT-Struktur
;                  $X1, $Y1, $X2, $Y2   Werte des Rectangle
; Return Value(s): Erfolg    > 0
;                  Fehler      0 set @error
; Author(s):       BugFix (bugfix@autoit.de)
;===============================================================================
Func _WinAPI_SetRect(ByRef $tRECT, $X1, $Y1, $X2, $Y2)
	Local $ret = DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($tRECT), 'long', $X1, 'long', $Y1, 'long', $X2, 'long', $Y2)
	If @error > 0 Then Return SetError(1,@error,0)
	Return $ret[0]
EndFunc  ;==>_WinAPI_SetRect

