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 
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
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 
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