4

Prolog でファイルの長さを切り詰めるにはどうすればよいですか?

set_stream_position/2ISO規格の述語しか見つかりません。set_stream_length/2しかし、主要な Prolog システムには述語が見つかりません。

同様に、ストリーム プロパティがありますが、ストリーム プロパティposition/1はどこにもありませんlength/1。後者は を使用するのに役立ちますset_stream_length/2

回避策は何ですか?

さよなら

4

1 に答える 1

1

私はそれを得たと思います!

このページを参照してください...

@false コメントの後に編集します。カプセル化コードのスケッチを次に示します。

set_file_size(Path, Size) :-
    setup_call_cleanup(
        open(Path, update, S),
        (   stream_property(S, reposition(true)),
            % stream_property(S, position(Q)),
            % set_stream_position(S, Q),
            seek(S, Size, bof, Size),
            set_end_of_stream(S)
        ),
        close(S)).

これは機能しますが、組み込みのseek /4に依存しています。そのような呼び出し WRT ISO 準拠のステータスを完全に判断することはできません。ISO IOの下にリストされていますが、準拠しているとタグ付けされていません...

これらの 2 つのコメント行は、不透明な用語 position/1を検査するのに役立ちました。値を問い合わせる stream_position_dataがあります。

于 2012-12-25T18:18:22.963 に答える