NumPut()

Speichert eine binäre Nummer auf eine bestimmte Adresse + Offset.

NumPut(Nummer, VarOderAdresse , Offset := 0, Typ := "UPtr")

Parameter

Nummer

Die zu speichernde Nummer.

VarOderAdresse

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.

Offset

Eine Zahl (in Bytes), die mit VarOderAdresse addiert wird, um die Zieladresse zu bestimmen.

Typ

Eine der folgenden Zeichenketten (standardmäßig UPtr, wenn dieser Parameter weggelassen wird):
UInt, UInt64, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr oder UPtr

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.

Rückgabewert

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().

Allgemeine Bemerkungen

Ü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.

Siehe auch

NumGet(), DllCall(), VarSetCapacity()