メインコンテンツまでスキップ
バージョン: 20 R7 BETA

TEXT TO BLOB

TEXT TO BLOB ( text ; BLOB {; textFormat {; offset | *}} )

引数説明
textTextBLOBに書き込むテキスト
BlobBlobテキストを受け取るBLOB
textFormatIntegerテキストのフォーマットと文字セット
offset | *変数, 演算子BLOB内のオフセット (バイト単位) または値を追加する場合 *
*でない場合、書き込み後の新しいオフセット

説明

TEXT TO BLOBコマンドはテキスト値 textをBLOB blobに書き込みます。引数を使用して、書き込むテキスト値の内部フォーマットと文字セットを指定できます。これを行うには、BLOBテーマの以下の定数のうちいずれかをtextFormat 引数に渡します:

定数
Mac C string倍長整数0
Mac Pascal string倍長整数1
Mac text with length倍長整数2
Mac text without length倍長整数3
UTF8 C string倍長整数4
UTF8 text with length倍長整数5
UTF8 text without length倍長整数6

textFormat 引数を省略した場合、デフォルトで4DはMac C Stringフォーマットを使用します。4Dバージョン11以降で作成されたデータベースでは、4Dはテキストの処理にデフォルトでUnicode文字セット (UTF-8) を扱います。そのためこの文字セットを利用が推奨されます。

Notes:

  • “UTF8”から始まる定数は、Unicodeモードのアプリケーションでのみ使用できます。
  • “Mac”から始まる定数は、32 KBまでのテキストを扱えます。
  • UTF-8以外の文字セットを使用するにはCONVERT FROM TEXTコマンドを使用します。

これらのフォーマットについて説明します:

テキストフォーマット説明と例題
C stringテキストはNULL文字 (ASCIIコード $00)で終了する
UTF8"" --> $00
"Café" --> $43 61 66 C3 A9 00
Mac"" --> $00
"Café" --> $43 61 66 8E 00
Pascal stringテキストの前に1バイトのテキスト長が置かれる
UTF8-
-
Mac"" --> $00
"Café" --> $04 43 61 66 8E
Text with lengthテキストの前に4バイト (UTF8) または2バイト (Mac) のテキスト長が置かれる
UTF8"" --> $00 00 00 00
"Café" --> $00 00 00 05 43 61 66 C3 A9
Mac"" --> $00 00
"Café" --> $00 04 43 61 66 8E
Text without lengthテキストはその文字だけで構成される
UTF8"" --> データなし
"Café" --> $43 61 66 C3 A9
Mac"" --> データなし
"Café" --> $43 61 66 8E

オプションの * 引数を渡すと、テキストはBLOBの最後に追加され、BLOBサイズはそれに従い拡張されます。オプションの * 引数を使用することで、BLOBがメモリに収まる限り、整数, 倍長整数, 実数 あるいは テキスト値 (他のBLOBコマンド参照) をBLOBに連続して格納できます。

オプション引数 *offset変数引数を指定しない場合、テキストはBLOBの最初に格納され、それ以前の内容を上書きします。これに合わせてBLOBのサイズも調整されます。

offset変数引数を渡した場合、テキストはBLOB内のオフセット(ゼロから開始)に書き込まれます。テキストを書き込む位置に関わらず、BLOBのサイズは渡した位置に従って(必要に応じてさらにテキストのサイズまで)増加します。現在書き込んでいるバイト以外の新しく割り当てられるバイトは、ゼロに初期化されます。

呼び出し後、offset変数引数は、書き込まれたバイト数分だけインクリメントされます。したがって、同じoffset変数引数を別のBLOB書き込みコマンドにも使用し、別の値をBLOBに追加できます。

互換性に関する注意: このコマンドは引数として渡されたBlob を変更するため、Blob オブジェクト(4D.Blob 型)はサポートしません。developer.4d.com でのの Passing blobs and blob objects to 4D commands のページを参照して下さい。

例題

 SET BLOB SIZE(vxBlob;0)
 var vtValue : Text
 vtValue:="Cafe" // vtValue長さは4バイト
 TEXT TO BLOB(vtValue;vxBlob;Mac C string) // BLOBのサイズは5 bytes
 TEXT TO BLOB(vtValue;vxBlob;Mac Pascal string) // BLOBのサイズは5 bytes
 TEXT TO BLOB(vtValue;vxBlob;Mac text with length) // BLOBのサイズは6 bytes
 TEXT TO BLOB(vtValue;vxBlob;Mac text without length) // BLOBのサイズは4 bytes
 TEXT TO BLOB(vtValue;vxBlob;UTF8 C string) // BLOBのサイズは6 bytes
 TEXT TO BLOB(vtValue;vxBlob;UTF8 text with length) // BLOBのサイズは9 bytes
 TEXT TO BLOB(vtValue;vxBlob;UTF8 text without length) // BLOBのサイズは5 bytes

参照

BLOB to integer
BLOB to longint
BLOB to real
BLOB to text
CONVERT FROM TEXT
INTEGER TO BLOB
LONGINT TO BLOB
REAL TO BLOB

プロパティ

コマンド番号554
スレッドセーフである