NumPut()

Speichert eine Binärzahl an einer bestimmten Adresse+Offset.

NumPut(Zahl, VarOderAdresse , Offset, Typ)
NumPut(Zahl, VarOderAdresse , Typ)

Parameter

Zahl

Die zu speichernde Zahl.

VarOderAdresse

Eine Speicheradresse oder Variable. Wenn VarOderAdresse eine Variable wie MeineVar ist, wird die Adresse des Zeichenkettenpuffers der Variable verwendet. Im Prinzip entspricht dies der Übergabe von &MeineVar, allerdings wird durch Weglassen von "&" eine bessere Performanz 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

Wenn leer oder weggelassen (oder wenn der 3-Parameter-Modus verwendet wird), wird standardmäßig 0 verwendet. Andernfalls geben Sie eine Zahl (in Bytes) an, die zur VarOderAdresse addiert wird, um die Zieladresse zu bestimmen.

Type

Wenn leer oder weggelassen, wird standardmäßig UPtr verwendet. Andernfalls geben Sie UInt, UInt64, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr oder UPtr an.

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 Integertypen, oder bei der Übergabe von reinen Integern, wird das Ergebnis nicht durch vorzeichenfähig vs. vorzeichenlos beeinflusst, da für die Darstellung von vorzeichenfähigen Integern das Zweierkomplement verwendet wird.

Im Gegensatz zu DllCall() müssen diese in Anführungszeichen gesetzt werden, wenn sie direkt angegeben werden.

Weitere Informationen finden Sie unter DllCall-Typen.

Rückgabewert

Wenn die Zieladresse ungültig ist, wird eine leere Zeichenkette zurückgegeben. Es ist jedoch möglich, dass einige ungültige Adressen nicht als solche erkannt werden, was zu unvorhersehbarem Verhalten führen kann.

Andernfalls wird die Adresse rechts vom gerade geschriebenen Element zurückgegeben. Dieser Rückgabewert wird häufig verwendet, wenn eine Folge von Zahlen unterschiedlichen Typs geschrieben wird, z.B. in einer Struktur für DllCall().

Allgemeine Bemerkungen

Wenn ein Integer den Wertebereich von Typ überschreitet, werden seine höchstwertigen Bytes ignoriert; z.B. würde NumPut(257, Var, 0, "Char") die Zahl 1 speichern.

Wenn nur drei Parameter vorhanden sind, kann der dritte Parameter entweder Offset oder Typ sein. Zum Beispiel wäre NumPut(x, var, "int") gültig.

NumGet(), DllCall(), VarSetCapacity()