StrGet

Kopiert eine Zeichenkette von einer Speicheradresse oder aus einem Puffer (optional mit Codepage-Umwandlung).

Zkette := StrGet(Quelle , Länge, Kodierung)
Zkette := StrGet(Quelle , Kodierung)

Parameter

Quelle

Typ: Objekt oder Integer

Ein Buffer-ähnliches Objekt, das die Zeichenkette enthält, oder die Speicheradresse der Zeichenkette.

Es kann ein beliebiges Objekt mit einer Ptr- und Size-Eigenschaft verwendet werden, aber diese Funktion ist für das native Buffer-Objekt optimiert. Die Übergabe eines Objekts mit diesen Eigenschaften stellt sicher, dass die Funktion keinen Speicher aus einem ungültigen Bereich liest, was zu Abstürzen oder anderem unvorhersehbaren Verhalten führen kann.

Die Zeichenkette muss nicht nullterminiert sein, wenn ein Buffer-ähnliches Objekt bereitgestellt wird oder wenn Länge angegeben ist.

Länge

Typ: Integer

Wenn weggelassen (oder wenn der 2-Parameter-Modus verwendet wird), wird die aktuelle Länge der Zeichenkette verwendet, sofern die Zeichenkette nullterminiert ist. Andernfalls geben Sie die maximale Anzahl der zu lesenden Zeichen an.

StrGet kopiert standardmäßig eine Zeichenkette nur bis zur ersten binären Null. Wenn Länge negativ ist, bestimmt dessen Absolutwert die genaue Anzahl der Zeichen, die umgewandelt werden, einschließlich aller binären Nullen, die die Zeichenkette eventuell enthält, d.h. das Ergebnis wird immer eine Zeichenkette mit exakt dieser Länge sein.

Hinweis: Das Weglassen von Länge bei einer nicht-nullterminierten Zeichenkette kann zu einer Zugriffsverletzung führen, was eine Terminierung des Programms oder andere unerwünschte Nebeneffekte zur Folge hat. Die Angabe einer falschen Länge kann zu unerwartetem Verhalten führen.

Kodierung

Typ: Zeichenkette oder Integer

Wenn weggelassen, wird die Zeichenkette einfach kopiert, ohne dass eine Umwandlung stattfindet. Andernfalls geben Sie die Quellkodierung an, z.B. "UTF-8", "UTF-16" oder "CP936". Für numerische Identifikatoren kann das Präfix "CP" nur im 3-Parameter-Modus weggelassen werden. Geben Sie eine leere Zeichenkette oder "CP0" an, um die Standard-ANSI-Codepage des Systems zu verwenden.

Rückgabewert

Typ: Zeichenkette

Diese Funktion gibt die kopierte oder umgewandelte Zeichenkette zurück. Wenn die Quellkodierung korrekt angegeben wurde, verwendet der Rückgabewert immer die native Kodierung. Der Wert ist immer nullterminiert, aber der Nullterminator ist nicht in seiner Länge enthalten, außer wenn Länge negativ ist, wie oben beschrieben.

Fehlerbehandlung

Es wird ein ValueError ausgelöst, wenn ungültige Parameter erkannt werden.

Es wird ein OSError ausgelöst, wenn die Umwandlung nicht durchgeführt werden konnte.

Bemerkungen

Beachten Sie, dass der Rückgabewert immer in der nativen Kodierung der aktuellen EXE-Datei von AutoHotkey ist, während Kodierung angibt, wie die gelesene Zeichenkette aus der angegebenen Quelle interpretiert werden soll. Wenn keine Kodierung angegeben ist, wird die Zeichenkette einfach kopiert, ohne dass eine Umwandlung stattfindet.

Mit anderen Worten, StrGet wird verwendet, um Text aus einem Speicherbereich oder Puffer abzurufen oder um Text in ein Format umzuwandeln, das das Skript versteht.

Bei einer Codepage-Umwandlung kann die Länge des Rückgabewerts von der Länge der Quellzeichenkette abweichen.

Zeichenkettenkodierung, StrPut, Binärkompatibilität, FileEncoding, DllCall, Buffer-Objekt, VarSetStrCapacity

Beispiele

Länge oder Kodierung kann direkt nach Quelle angegeben werden, aber in diesem Fall muss Kodierung nicht-numerisch sein.

Zkette := StrGet(Adresse, "cp0")  ; Codepage 0, unbestimmte Länge
Zkette := StrGet(Adresse, n, 0)   ; Maximal n Zeichen, Codepage 0
Zkette := StrGet(Adresse, 0)      ; Maximal 0 Zeichen (immer leer)