StrGet

メモリアドレスまたはバッファから文字列をコピーし、オプションで指定されたコードページからの変換を行います。

String := StrGet(Source , Length, Encoding)
String := StrGet(Source , Encoding)

パラメータ

Source

型:オブジェクトまたは整数

文字列を含むBufferのようなオブジェクト、または文字列のメモリアドレス。

PtrプロパティとSizeプロパティを実装したオブジェクトであれば何でも使用できますが、この関数はネイティブのBufferオブジェクトに最適化されています。これらのプロパティを持つオブジェクトを渡すことで、関数が不正な場所からメモリを読み込むことがないようにします。そうすると、クラッシュやその他の予測不可能な動作が起こる可能性があります。

The string is not required to be null-terminated if a Buffer-like object is provided, or if Length is specified.

Length

型:整数

If omitted (or when using 2-parameter mode), it defaults to the current length of the string, provided the string is null-terminated. それ以外の場合は、読み込む最大文字数を指定する。

デフォルトでは、StrGetは最初のバイナリ・ゼロまでしかコピーしない。Lengthが負の場合、その絶対値は、文字列に含まれる可能性のある2進数のゼロを含め、変換する文字数を正確に示します。

注意:文字列がヌル終端でない場合にLengthを省略すると、アクセス違反が発生し、プロ グラムが終了するなどの望ましくない結果を引き起こす可能性がある。正しくない長さを指定すると、予期せぬ動作をすることがある。

エンコード

型:文字列または整数

If omitted, the string is simply copied without any conversion taking place. それ以外の場合は、ソース・エンコーディングを指定する。例えば、"UTF-8""UTF-16""CP936"などである。For numeric identifiers, the prefix "CP" can be omitted only in 3-parameter mode. Specify an empty string or "CP0" to use the system default ANSI code page.

戻り値

型:文字列

この関数は、コピーまたは変換された文字列を返す。ソース・エンコーディングが正しく指定されていれば、返り値は常にネイティブ・エンコーディングを使用する。The value is always null-terminated, but the null-terminator is not included in its length except when Length is negative, as described above.

エラー処理

無効なパラメータが検出された場合はValueErrorがスローされる。

変換が実行できなかった場合はOSErrorがスローされます。

備考

返り値は常に現在の実行ファイルのネイティブ・エンコーディングであることに注意してください。一方、Encodingは与えられたSourceから読み込まれた文字列をどのように解釈するかを指定します。Encodingが指定されていない場合、文字列は変換されずに単にコピーされる。

つまり、StrGetは、メモリアドレスやバッファからテキストを取得したり、スクリプトが理解できる形式に変換したりするために使用される。

コード・ページ間の変換が必要な場合、戻り値の長さがソース文字列の長さと異なることがある。

String Encoding, StrPut, Binary Compatibility, FileEncoding, DllCall, Buffer object, VarSetStrCapacity

Sourceの後にLengthまたはEncodingを直接指定することもできるが、その場合Encodingは数値であってはならない。

str := StrGet(address, "cp0")  ; Code page 0, unspecified length
str := StrGet(address, n, 0)   ; Maximum n chars, code page 0
str := StrGet(address, 0)      ; Maximum 0 chars (always blank)