Delphi-Quellcode:
program Textverarbeitung;
{$APPTYPE CONSOLE} uses sysutils;
var textout,textin: Text;
ch: Char;
AnzZeichen: Integer;
AnzWort: Integer;
begin
Assignfile(textin,'test.in');
Assignfile(textout,'test.out');
RESET(textin); // Datei textin öffnen
REWRITE(textout); // Datei textout zum überschreiben öffnen
AnzZeichen:=0; // Startwert AnzZeichen
AnzWort:=0; // Startwert AnzWort
while not(eof(textin)) do // eof True wenn Dateiende
begin
if eoln(textin) then // eoln True wenn Zeilenende
begin
writeln(textout); // Schreibt <cr><lf> in die textout Datei
readln(textin); // Liest <cr><lf> aus der textin Datei (und verwirft es)
end
else
begin
read(textin,ch); // Liest ein Zeichen aus der textin - Datei
write(textout,ch); // Schreibt das soeben gelesene Zeichen in die textout - Datei
Inc(AnzZeichen,1); // Zählt die Anzahl der Zeichen inkl. Leerzeichen
If eoln(textin) then
Inc(AnzWort,1); // Zählt die Anzahl der Zeilenumbrüche
If ch=' ' then
Inc(AnzWort,1); // Zählt die Anzahl der Leerzeichen
end;
end;
CloseFile(textout); //Schließt textout
CloseFile(textin); //Schließt textin
writeln('Anzahl der Zeichen: ',AnzZeichen); // Gibt Anzahl der Zeichen aus
writeln('Anzahl der Worte: ',AnzWort); // Gibt Anzahl der Worte aus
readln();
end.
Vielen Dank Whookie für diese ausführliche und hilfreiche Antwort. Jetzt bin ich schon etwas schlauer.
Wie muss ich es genau verstehen, dass writeln(textout) cr und lf schreibt und readln(textin) cr und lf ausliest und verwirft? Fungiert die Funktion als Indikator in welcher Zeile man sich gerade befindet?
Wie kann ich in einem If Statement zwei Faktoren prüfen lassen bevor ich z.B. AnzWort erhöhe? Meine Lösung ist ziemlich unschön.