StrGet() [AHK_L 46+]

Kopiert eine Zeichenkette aus einem Speicherbereich unter Beachtung eines bestimmten Zeichensatzes.

Zeichenkette := StrGet(Quelle , Länge , Codierung := Keine)

Parameter

Quelle

Die Speicheradresse der Zeichenkette.

Die Zeichenkette muss nicht null-terminiert sein, wenn der Länge-Parameter angegeben ist.

Länge

Die Länge der Zeichenkette, in Zeichen. Dies kann weggelassen werden, wenn die Zeichenkette null-terminiert ist.

Hinweis: Das Weglassen von Länge bei einer nicht-null-terminierten Zeichenkette kann eine Zugriffsverletzung verursachen, woraufhin das Programm beendet wird, oder andere unerwünschte Nebenwirkungen haben. Die Angabe einer falschen Länge kann zu unerwartetem Verhalten führen.

Hinweis: Eingebettete Nullzeichen werden nicht unterstützt und führen in der Regel zu einer Verkürzung der Zeichenkette.

Codierung

Die Quellcodierung; zum Beispiel: "UTF-8", "UTF-16" oder "CP936". Bei numerischen Identifikatoren kann das Präfix "CP" nur weggelassen werden, wenn Länge angegeben ist. Geben Sie eine leere Zeichenkette oder "CP0" an, um den Standard-ANSI-Zeichensatz des Systems zu nutzen.

Rückgabewert

Diese Funktion gibt die kopierte oder konvertierte Zeichenkette zurück. Wenn die Quellcodierung korrekt angegeben wurde, verwendet der Rückgabewert immer die native Codierung. Die Zeichenkette ist immer null-terminiert, aber der Null-Terminator wird nicht zur Länge des Rückgabewertes hinzugezählt.

Fehlerbehandlung

Es wird eine leere Zeichenkette zurückgegeben, wenn ungültige Parameter erkannt werden oder die Konvertierung nicht durchgeführt werden kann.

Bemerkungen

Beachten Sie, dass der Rückgabewert immer in der nativen Codierung von der aktuell verwendeten Version von AutoHotkey ist, wohingegen Codierung angibt, wie die gelesene Zeichenkette aus der angegebenen Quelle interpretiert werden soll. Wenn keine Codierung angegeben ist, wird die Zeichenkette einfach kopiert, ohne dass eine Konvertierung stattfindet.

StrGet wird im Prinzip verwendet, um Text aus einem Speicherbereich abzurufen, oder ihn in ein Format zu konvertieren, das das Skript verstehen kann.

Wenn eine Konvertierung zwischen den Zeichensätzen notwendig ist, muss die Möglichkeit in Betracht gezogen werden, dass die Länge des Rückgabewertes von der Länge der Quellzeichenkette abweicht.

Siehe auch

Zeichenkettencodierung, StrPut(), Skript-Kompatibilität, FileEncoding, DllCall(), VarSetCapacity()

Beispiele

#1: Es ist möglich, Länge oder Codierung direkt nach Adresse anzugeben, aber in diesem Fall darf Codierung nicht numerisch sein:

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