Speichert eine binäre Nummer auf eine bestimmte Adresse + Offset.
NumPut(Nummer, VarOderAdresse , Offset := 0, Typ := "UPtr")
Die zu speichernde Nummer.
Eine Speicheradresse oder Variable. Wenn VarOderAdresse eine Variable wie MeineVar
ist, wird die Adresse des Zeichenkettenpuffers der Variable verwendet. Im Prinzip ist dies das gleiche wie, als würde man &MeineVar
übergeben, allerdings wird durch Weglassen von "&" eine bessere Leistung erzielt und sichergestellt, dass die Zieladresse + Offset gültig ist.
Übergeben Sie keine Variablenreferenz, wenn die Variable die Zieladresse enthält; übergeben Sie in diesem Fall einen Ausdruck wie MeineVar+0
.
Eine Zahl (in Bytes), die mit VarOderAdresse addiert wird, um die Zieladresse zu bestimmen.
Wenn dieser Parameter weggelassen wird oder leer ist, wird standardmäßig UPtr verwendet. Ansonsten können Sie UInt, UInt64, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr oder UPtr angeben.
UInt64 wird in [v1.0.48+] unterstützt, da große vorzeichenlose Werte als Zeichenketten übergeben werden können. In früheren Versionen und bei allen anderen Integer-Typen, oder bei der Übergabe von reinen Integern, hat der Unterschied zwischen vorzeichenfähig und vorzeichenlos keinen Einfluss auf das Ergebnis, weil zum Darstellen von vorzeichenfähigen Integern das Zweierkomplement genutzt wird.
Diese Typen müssen, im Gegensatz zu den Typen von DllCall(), in Anführungszeichen gesetzt werden, wenn sie direkt geschriebene Zeichenketten sein sollen.
Um mehr darüber zu erfahren, siehe DllCall-Typen.
Ist die Zieladresse ungültig, wird eine leere Zeichenkette zurückgegeben. Allerdings ist es möglich, dass einige ungültige Adressen nicht als solches erkannt werden, was zu unvorhersehbaren Verhalten führen könnte.
Ansonsten wird die Adresse ganz rechts des gerade geschriebenen Elements zurückgegeben. Dieser Rückgabewert wird häufig verwendet, wenn eine Folge von Nummern unterschiedlichen Typs geschrieben wird, wie in einer Struktur für DllCall().
Überschreitet ein Integer den Gültigkeitsbereich des angegebenen Typs, werden seine höchstwertigen Bytes ignoriert; z. B. würde NumPut(257, Var, 0, "Char")
nur die Zahl 1 speichern.
Sind nur drei Parameter vorhanden, kann der dritte Parameter entweder Offset oder Typ sein. Zum Beispiel wäre NumPut(x, var, "int")
gültig.