Pascal: 'Ergebnis' in eine Textdatei schreiben

Hallo,

ich hab mir mit Free Pascal ein kleines Prgramm geschrieben, dass für mich zählt.

program zaehl;
var i,k:integer;
begin
write(‚Wie weit soll ich zaehlen?‘);
readln(k);
for i:=1 to k do
writeln(i);
readln;
end.

Wenn ich das Prgramm dann laufen lasse und auf die Frage „Wie weit soll ich zaehlen?“ z.B. 7 eingeb, schreibt er mir die Zahlen von 1 bis 7 in ein DOS Fenster. Wie kann ich das machen, dass er mir die Zahlen in eine Textdatei (Editor) schreibt?
Ich bin noch Anfänger, also die Antwort wenn möglich nicht zu kompliziert schreiben :wink:
danke schon mal…

viele Grüße
Internetuser

Hallo!

Also, das geht ganz einfach:

Meine Änderungen habe ich kursiv geschrieben

program zaehl;

var 
 i, k:integer;
 _F: TextFile; // TextFile = Datentyp, der für TExtdateien genommen wird  
 S: string; // String variable, sie nimmt den Dateinamen auf_  
begin
 write('Wie weit soll ich zaehlen?');
 readln(k);

 _write('Dateiname: '); // Den Benutzer nach dem Dateinamen fragen  
 ReadLn(S); // Die Benutzereingabe in S schreiben  
 AssignFile(F, S); // Die Textdatei erstellen  
 try // der folgende Block versucht (try) die   
 Rewrite(F); // Datei mit Schreibzugriff zu öffnen  
 except // Falls was schiefgeht (except, Ausnahme)  
 CloseFile(F); // Datei schließen  
 Halt; // Programm beenden  
 end;_  

 for i := 1 to k do _begin  
 writeln(i);  
 writeln(F, I); // Zusätzlich in deiner Schleife  
 end; // die Anweisung, in die Datei F zu schreiben_  
 _CloseFile(F); // Und zum Schluß die Datei schließen._
 readln;

end.

Allgemein zum Programmbild:
Wenn du dich irgendwann an größere Projekte rantraust, solltest du dir ein übersichtlicheres Code-Bild verschaffen – so wie ich es hier gemacht habe.
Das nur so als Tip für die Zukunft. 300 Zeilen Code in der Form:
program zaehl;
var i,k:integer;
begin
write(‚Wie weit soll ich zaehlen?‘);
readln(k);
for i:=1 to k do
writeln(i);
readln;
end.
zu debuggen, wird nämlich sehr schnell zur Geduldsprobe. Einfach den Code durch Leerzeilen auflockern, Kommentare verwenden, denn wenn du mal ein halbes Jahr nichts am Programm machst, verstehst du erstmal nur Bahnhof :smile: Blöcke zwischen BEGIN und END einrücken, das erleichtert das Lesen erheblich.

Das sollte eigentlich funktionieren. Wenn nicht, bitte melden!

Liebe Grüße, der Chris

Hallo,

danke für die ausführliche Antwort.
Das Programm sieht jetzt so aus:

program zaehl;

var i,k:integer;
F:Textfile;
S:string;

begin
write(‚Wie weit soll ich zaehlen?‘);
readln(k);

write(‚Dateinname:‘);
readln(S);
AssignFile(F,S);
try
rewrite(F);
except
closeFile(F);
Halt;
end;

for i:=1 to k do begin
writeln(i);
writeln(F,i);
end;
closeFile(F);
readln;

end.

Funktioniert leider noch nicht wirklich…

zaehl3.pas(13,19) Error: Identifier not found „AssignFile“
zaehl3.pas(13,24) Error: Illegal expression
zaehl3.pas(15,17) Error: Identifier not found „try“
zaehl3.pas(15,17) Error: Illegal expression
zaehl3.pas(15,17) Fatal: Syntax error, „;“ expected but „identifier REWRITE“ found
zaehl3.pas(0) Fatal: Compilation aborted

Was gehört noch geändert?

viele Grüße
Internetuser

Hallo

Was gehört noch geändert?

Gar nichts – das Programm funktioniert. Habs selber probiert. Das Problem liegt vielleicht daran, das Free Pascal diverse Befehle nicht unterstützt. Ich hab das Programm in Delphi geschrieben.
Da sind Befehle wie AssignFile(), Rewrite() und so weiter im Compiler drin.
TRY, EXCEPT und so weiter sind eigentlich ganz normale Pascalbefehle.

Am Besten, du besorgst dir nen anderen Compiler / ne andere Entwicklungsumgebung. Delphi 7 Personal ist für private Nutzung kostenlos, die Programme, die du damit erstellst, dürfen nur als Freeware veröffentlicht werden.

Gruß

Hallo.

Gar nichts – das Programm funktioniert. Habs selber probiert.
Das Problem liegt vielleicht daran, das Free Pascal diverse
Befehle nicht unterstützt. Ich hab das Programm in Delphi
geschrieben.

Eventuell nutzt FreePascal den Befehlssatz, den auch TurboPascal hatte.

Da sind Befehle wie AssignFile(), Rewrite() und so weiter im
Compiler drin.
TRY, EXCEPT und so weiter sind eigentlich ganz normale
Pascalbefehle.

Bei Turbo Pascal gab es weder AssignFile noch TRY-EXCEPT. Statt AssignFile gab es Assign und anstelle des TRY-EXCEPT musste man irgendwie den ErrorCode abfragen, weiß aber leider nicht mehr genau wie.

Sebastian.

Hallo,

so, jetzt funktionierts :smiley:

program zaehl;

var i,k:integer;
F:Textfile;
S:string;

begin
write(‚Wie weit soll ich zaehlen?‘);
readln(k);

write(‚Dateinname:‘);
readln(S);
Assign(F,S);
rewrite(F);

for i:=1 to k do
writeln(F,i);
close(F);
readln;

end.

viele Grüße
Internetuser