version 6.5.3 (Modified)
COMPRESS BLOB (blob{; compression})
| 引数 | 型 | 説明 | |
| blob | BLOB | 圧縮するBLOB | |
| compression | 数値 | 省略されない場合: | |
| 1, 圧縮率優先で圧縮 | |||
| 2, 速度優先で圧縮 |
説明
COMPRESS BLOB コマンドは、4D内部の圧縮アルゴリズムを使用して、BLOB blobを圧縮します。このコマンドは、サイズが255バイトを超えるBLOBだけを圧縮します。
オプションのcompression 引数を使用すると、BLOBを圧縮する方法を設定できます:
・1を渡すと、圧縮および解凍の操作の速度と引き換えに、BLOBができるだけ小さく圧縮されます。
・2を渡すと、圧縮率と引き換えに(圧縮されたBLOBのサイズは大きくなります)、BLOBができるだけ速く圧縮されます(展開の速度もできるだけ速くなります)。
・他の値を渡す、または引数を省略すると、圧縮モード1を使用してBLOBができるだけ小さく圧縮します。
4Dは、以下の事前定義定数を提供します:
| 定数 | 型 | 値 |
| Compact compression mode | 倍長整数 | 1 |
| Fast compression mode | 倍長整数 | 2 |
呼び出し後、BLOBが圧縮されればOK変数に1が設定されます。メモリ不足やBLOBサイズが255バイト未満などの理由で圧縮が行われなかった場合、OK変数に0が設定されます。エラーは生成されず、メソッドは実行をレジュームします。
(BLOBが壊れているなど) 他のケースの場合、エラー-10600が生成されます。このエラーはON ERR CALL コマンドを使用してとらえることができます。
BLOB圧縮後、EXPAND BLOB コマンドを使用して解凍できます。
BLOBが圧縮されているかどうかを知るには、BLOB PROPERTIES コマンドを使用します。
警告: 圧縮されたBLOBもBLOBであり、そのコンテンツを編集できます。しかしそうしてしまうと、EXPAND BLOB コマンドは正しくBLOBを解凍できなくなります。
例題
1. この例題 はBLOB vxMyBlobが圧縮されているかテストし、されていなければ圧縮します:
BLOB PROPERTIES (vxMyBlob;$vlCompressed;$vlExpandedSize;$vlCurrentSize) If ($vlCompressed=Is not compressed) COMPRESS BLOB (vxMyBlob) End if
すでに圧縮されているBLOBにCOMPRESS BLOBを適用した場合、コマンドはそれを検知し、何も行いません。
2. この例題は、ドキュメントを選択させ、それを圧縮します:
$vhDocRef := Open document ("")
If (OK=1)
CLOSE DOCUMENT ($vhDocRef)
DOCUMENT TO BLOB (Document;vxBlob)
If (OK=1)
COMPRESS BLOB (vxBlob)
If (OK=1)
BLOB TO DOCUMENT (Document;vxBlob)
End if
End if
End if
参照
システム変数またはセット
BLOBが圧縮されると、OK変数が1に、そうでなければ0に設定されます。