Document to text :内容がからのファイルからテキストを取得しようとするとエラーになる

Product :4D - 4D Server
4D : v15.4hf1
OS : Mac OS X 10.11.6

$text_t:=Document to text($path_t)
上記のように記述して、ファイルの内容が空の状態だとエラーになります。
[]19131818;“Your comment here…”[/]

こうするとエラーになりません。
$text_t:=Document to text($path_t;“UTF-8”)

エラーにならないのが正しい動作だと思います。

ドキュメントで述べられているように,http://doc.4d.com/4Dv16/4D/16/Document-to-text.301-3036713.ja.htmlDocument to text>は,下記の要領でエンコーディングを決定するようになっています。

1

引数で指定された文字コードを使用

2(引数で指定されていない場合)

ドキュメントがバイトオーダーマーク(BOM)を含んでいる場合…バイトオーダーマークが指定した文字コードを使用

3(引数が指定されておらずBOMもない場合)

ANSI(Shift_JISに基づく4D v2004以前の内部エンコーディング)を使用

空のファイルを渡し,文字コードを指定しなかった場合,必然的に3(ANSI)となりますが,
このコマンドはOK変数を更新しないため,変換の失敗を知る唯一の手がかりは「ERROR#0およびサイズ=0」である,という特殊な事情があります。

error in user parameter listは,Macのシステムエラーであり,4Dのものではありませんから,
このケースでは空のファイルを空のテキストに変換したのではなく,変換に失敗したことがわかります。

ですから,この場合,ON ERROR CALLで処理できるエラーが返されるのが正しい動作ではないでしょうか。

現状の内部動作のご説明ありがとうございます。

エンコーディング前に対象内容(おそらくBLOBかな)でサイズが0ではないかと思うので、
ここでサイズが0ならなにもしないで空テキストで返せばよいだけだと思います。
単純にコーディングの問題ではないでしょうか?

これだけのためにON ERROR CALLを記述するのは面倒です。 :frowning:

ACI0096548で登録いたしました。

現状,UTF-8以外のエンコーディングを指定しない限り,エラーが返されるようです。

<code 4D>
C_BLOB($EMPTY)

$path:=Temporary folder+Generate UUID+".txt"
BLOB TO DOCUMENT($path;$EMPTY)

`ERROR: error in user parameter list(paramErr)
$text:=Document to text($path)
$text:=Document to text($path;“Windows-31j”)
$text:=Document to text($path;“iso-8859-1”)

`OK
$text:=Document to text($path;“utf-8”)
</code 4D>

v16.210303とv15.210304で修正されたとのことです。

v16(213589)、v16R4(213526)、v15.4hf3(213080)にて確認いたしました。
ご対応ありがとうございました。 :pray: