Array Denkfehler?

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Array Denkfehler?

Re: Array Denkfehler?

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:
  1. Packn, Pack32n (oder ähnlich) für die Feldausrichtung.
  2. X32 / X64 (oder ähnlich) für die Vorgabe der Zielarchitektur.

Re: Array Denkfehler?

Post by HotKeyIt » 15 May 2016, 04:40

Code: Select all

global sizeofDataType := {   UChar:    1,  Char:     1
			             ,   UShort:   2,  Short:    2
			             ,   UInt:     4,  Int:      4
			             ,   UFloat:   4,  Float:    4
			             ,   Int64:    8,  Double:   8}
 
sizeof(datatype)
{   return sizeofDataType[datatype]
}
MsgBox % size := sizeof("Float")
Ich würde dir empfehlen einfach AutoHotkey_H zu benutzen, da gibt es bereits eine eingebaute sizeof() Funktion.

Array Denkfehler?

Post by Barbossa155 » 15 May 2016, 04:27

Hi

Habe grade einen wahrscheinlich kleinen Denkfehler und zwar möchte ich nur meine Datentypengröße über einen Array ausgeben lassen

Code: Select all

global sizeofDataType := {   "UChar":    1,  "Char":     1
			             ,   "UShort":   2,  "Short":    2
			             ,   "UInt":     4,  "Int":      4
			             ,   "UFloat":   4,  "Float":    4
			             ,   "Int64":    8,  "Double":   8}
			             
sizeof(datatype)
{   return sizeofDataType.datatype
}

; mit sizeofDataType.Float funktioniers natürlich..

size := sizeof(Float)		             		             
Ausgeben wird nichts.

Danke
..

Top