Append records to a file.

Discussions related to Visual Prolog
ahmednadi
VIP Member
Posts: 84
Joined: 15 Sep 2009 14:06

Append records to a file.

Unread post by ahmednadi » 2 Apr 2015 9:01

Dear Sir;
Could you help me to append records form an internal DB to an external file?
Regards;
AHMED

drspro2
VIP Member
Posts: 78
Joined: 28 Apr 2006 12:03

Unread post by drspro2 » 2 Apr 2015 9:20

hi , the predicate save saves the whole internal databse to a text file,

ahmednadi
VIP Member
Posts: 84
Joined: 15 Sep 2009 14:06

Unread post by ahmednadi » 2 Apr 2015 10:32

Dear Sir;
Thank you.
I want to append the whole internal DB. there is an file contents some records and we want to add new records to them.
Regards;
AHMED

User avatar
Thomas Linder Puls
VIP Member
Posts: 1622
Joined: 28 Feb 2000 0:01

Unread post by Thomas Linder Puls » 2 Apr 2015 12:04

You will need to consult the contents of the file and then save everything.

If the order of the facts are important you will need to do something more complex.
Regards Thomas Linder Puls
PDC

drspro2
VIP Member
Posts: 78
Joined: 28 Apr 2006 12:03

Unread post by drspro2 » 2 Apr 2015 12:12

hi maybe something like this, depends on which version of prolog you use,

Code: Select all

append_to_file():-  Fn2 = "dbtextfile.txt"   file5x::closefile(fileSelector::gg()),     trap(file5x::openappend(fileSelector::gg(),Fn2),_,fail),   file5x::writedevice(fileSelector::gg()),    record(A,B),     file5x::write(A2,"\n"),   fail.   append_to_file():-   file5x::closefile(fileSelector::gg()),   file5x::writedevice(fileSelector::stdout()),

ahmednadi
VIP Member
Posts: 84
Joined: 15 Sep 2009 14:06

Unread post by ahmednadi » 2 Apr 2015 12:42

Dear Sir;
Thank you.
The order of the facts is important.
Could you help me?
Regards;
AHMED

User avatar
Thomas Linder Puls
VIP Member
Posts: 1622
Joined: 28 Feb 2000 0:01

Unread post by Thomas Linder Puls » 2 Apr 2015 19:46

You should not (= absolutely not at all) use file5x, it is only intended to be used when migrating old Vip5.2 code.

The code corresponds to this "up-to-date" code:

Code: Select all

    append_to_file() :-         Fn2 = "dbtextfile.txt",         OS = outputStream_file::append(Fn2),         foreach record(A, B) do             OSwrite(A2, "\n")         end foreach,         OS:close().
The code still contains the same bugs ;-) (variable A2 is unbound).

If you want to try something like this you will have to write all facts, and also their functors (and a terminating dot):

Code: Select all

    append_to_file() :-         Fn2 = "dbtextfile.txt",         OS = outputStream_file::append(Fn2),         foreach record(A, B) do             OS:write("%.\n", record(A, B))         end foreach,         foreach anotherFact(A, B, C, D) do             OS:write("%.\n", anotherFact(A, B, C, D))         end foreach,         % continue for all facts         OS:close().
Regards Thomas Linder Puls
PDC

Post Reply