2016-04-08 7 views
0

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.

+0

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

+0

@gammatester bearbeitet. eigentlich habe ich das "data" -Unterverzeichnis überprüft und es erstellt Member.txt darin aber hat nichts drin (0 Bytes). –

+0

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

Antwort

1

Nevermind, ich fand die Antwort schon. exit() ist reserviert. Tut mir leid, Leute. N.B. Danke an @gammatester