2011-06-23 11 views
4

プロローグ内のデータベースにテキストを追加したい。何かのようにProlog:ファイルの末尾にテキストを追加する

adding :- tell('a.txt'), write('abc'), told. 

と同じですが、a.txtを上書きしません。私はこのように追加してみました:

append('a.txt'),write('abc'), told. 

しかし、それは動作しませんでした。リスナーは単に「いいえ」応答を返し、ファイルは変更されません。 私はAmzi Prolog、btwを使用しています。

ご協力いただければ幸いです。

+0

詳細は「動作しませんでした」とはどういう意味ですか... – Kaarel

+0

こんにちは、返信ありがとうございます。リスナーは単に「no」応答を返し、ファイルa.txtは変更されませんでした。 – Hearty

答えて

5

open/3、write/2、close/1というIO述語を使用する必要があります。 SWI-Prologで

adding :- open('a.txt', append, Handle), write(Handle, 'abc'), close(Handle). 

チェックhere

+0

ねえ、リンクありがとう。私はそれを試してみました。そして変なことに、ファイルにではなくリスナーに 'abc'を表示します。奇妙な、論理的にあなたが述べたことはうまくいくはずです。 – Hearty

+0

@Hearty:あなたの例ではwrite(Handle、 'abc')というwrite/2を使います。 – gusbro

+0

ああ、今動作します。ありがとうございました。そして、あなたのおかげで2カ月間ありがとうございました。本当に感謝。 – Hearty

1

これは動作します:

?- append('a.txt'), write('abc'), told. 
true. 

?- append('a.txt'), write('abc'), told. 
true. 

たぶんAMZIプロローグにappend/1を持っていないと、これは故障ではなく、例外が発生します。あるいは、ファイルが書き込み可能ではないかもしれません(例外ではなくエラーが発生します)。

+0

ありがとうございます。はい、私はAmziを使用してデバッグしました。また、この[リンク](http://forum.amzi.com/viewtopic.php?f=4&t=569)から見ると、Amziは追加に問題があるようです。 – Hearty

+0

@Heartyこのリンクはappend/3とは全く異なります。 – Kaarel

関連する問題