Ich habe ein Problem beim Neuschreiben meiner .TXT-Datei, habe ich einen Fehler gemacht? Das Programm läuft jedoch reibungslos. Dies ist ein Stück meiner Bibliothek.Pascal: Externe Datei kann nicht aktualisiert werden
//global variable
uses utheatre;
var loadUDT:TheatreUDT;
//utheatre library
type
TheatreUDT = record
Member:text;
end;
procedure load_main(var loadUDT : TheatreUDT);
begin
load_Member(loadUDT.Member);
end;
procedure load_Member(var Member:text);
begin
assign (Member,'Data/Member.txt');
end;
procedure regis(var loadUDT:TheatreUDT);
var
s:string;
begin
rewrite(loadUDT.Member);
write('> Input Username : ');
readln(s);
write(loadUDT.Member,s);
write(loadUDT.Member,' | ');
write('> Input Password : ');
readln(s);
write(loadUDT.Member,s);
writeln(loadUDT.Member,' | 100000');
writeln('> Registration Successful');
end;
procedure exit(var loadUDT:TheatreUDT; var bool_main:boolean);
begin
close(loadUDT.Member);
bool_main := False;
end;
erwartete ich die Ausgabe in meinem Notizblock wird
username | Passwort | 100000
aber es scheint, dass die Member.txt nicht aktualisiert wird. Danke schonmal.
EDIT: Das ist mein Hauptprogramm
begin
bool_main := True;
while(bool_main) do begin
write('> ');
readln(input_main);
case input_main of
'load' : load_main(loadUDT);
'register' : regis(loadUDT);
'exit' : exit();
end;
end;
end.
N. B. Ich fand heraus, dass es funktionierte, wenn ich "close (loadUDT.Member)" innerhalb meiner "regis procedure" hinzufügte, aber es funktionierte nicht, wenn ich "close (loadUDT.Member)" in die "exit procedure" einfügte. Irgendwelche Ideen warum? Nochmals vielen Dank.
Bitte zeigen Sie die Aufrufe Ihrer Prozeduren, sonst kann es passieren, dass keine I/O durchgeführt wird. Selbst dann ist 'aktualisiert' möglicherweise falsch, weil die Datei immer neu geschrieben wird. Sind Sie sicher, dass Sie im Unterverzeichnis "data" nachsehen? – gammatester
@gammatester bearbeitet. eigentlich habe ich das "data" -Unterverzeichnis überprüft und es erstellt Member.txt darin aber hat nichts drin (0 Bytes). –
Warum der Aufruf von 'exit()' ohne Parameter? Wird das tatsächlich kompiliert und funktioniert? BTW 'exit' ist ein Standardverfahren. Und ohne Parameter kann 'system.exit' aufgerufen werden und Ihre Prozedur verlassen ohne zu schließen. – gammatester