Post by just me » 15 May 2016, 05:35
Die Anführungszeichen in Deinem Array sind an sich nicht falsch, werden aber nicht gebraucht, wenn die Keys wie hier nur aus 'Wortzeichen' bestehen (
Assoziative Arrays).
Wenn Du die 'Objektsyntax'
sizeofDataType.datatype benutzt, muss der Keyname nach dem Punkt einem vorhandenen Key entsprechen. Deswegen funktioniert
sizeofDataType.Float 'natürlich'.
Und, wenn Du Dir ein globales Array gebastelt hast, brauchst Du eigentlich keine separate Funktion:
Code: Select all
Global sizeof := { UChar: 1, Char: 1
, UShort: 2, Short: 2
, UInt: 4, Int: 4
, UFloat: 4, Float: 4
, Int64: 8, Double: 8
, UPtr: A_PtrSize
, Ptr: A_PtrSize }
MsgBox, 0, Float, % sizeof["Float"]
DataType := "Double"
MsgBox, 0, Double, % sizeof[DataType]
Die in AutoHotkey_H eingebaute Funktion
sizeof() ist an sich recht zuverlässig, schwächelt aber zumindest immer dann, wenn sich der Entwickler einer Struktur dafür entschieden hat, von der Standardfeldausrichtung abzuweichen. Ich sähe da gern zwei zusätzliche Optionen:
- Packn, Pack32n (oder ähnlich) für die Feldausrichtung.
- X32 / X64 (oder ähnlich) für die Vorgabe der Zielarchitektur.
Die Anführungszeichen in Deinem Array sind an sich nicht falsch, werden aber nicht gebraucht, wenn die Keys wie hier nur aus 'Wortzeichen' bestehen ([url=https://ragnar-f.github.io/docs/Objects.htm#Usage_Associative_Arrays][b]Assoziative Arrays[/b][/url]).
Wenn Du die 'Objektsyntax' [c]sizeofDataType.datatype[/c] benutzt, muss der Keyname nach dem Punkt einem vorhandenen Key entsprechen. Deswegen funktioniert [c]sizeofDataType.Float[/c] 'natürlich'.
Und, wenn Du Dir ein globales Array gebastelt hast, brauchst Du eigentlich keine separate Funktion:
[code]Global sizeof := { UChar: 1, Char: 1
, UShort: 2, Short: 2
, UInt: 4, Int: 4
, UFloat: 4, Float: 4
, Int64: 8, Double: 8
, UPtr: A_PtrSize
, Ptr: A_PtrSize }
MsgBox, 0, Float, % sizeof["Float"]
DataType := "Double"
MsgBox, 0, Double, % sizeof[DataType][/code]
Die in AutoHotkey_H eingebaute Funktion [c]sizeof()[/c] ist an sich recht zuverlässig, schwächelt aber zumindest immer dann, wenn sich der Entwickler einer Struktur dafür entschieden hat, von der Standardfeldausrichtung abzuweichen. Ich sähe da gern zwei zusätzliche Optionen:
[list=1][*][c]Pack[i]n[/i][/c], [c]Pack32[i]n[/i][/c] (oder ähnlich) für die Feldausrichtung.
[*][c]X32[/c] / [c]X64[/c] (oder ähnlich) für die Vorgabe der Zielarchitektur.[/list]