Vielen Dank für die Tipps! Ah okay Jumpy das mit dem or hatte ich probiert jedoch ch=' ' nicht in Klammern gesetzt -.-. Okay stimmt darüber hatte ich noch nicht nachgedacht. Ich versuche AnzWort dementsprechend umzubauen.
Die nächste Aufgabe ist das Programm dahingehend zu erweitern, dass alle Umlaute durch ae ue oe Ae... usw vor dem schreiben in textout geändert werden.
Das habe ich jetzt so gelöst: Funktioniert!
Delphi-Quellcode:
program Textverarbeitung;
{$APPTYPE CONSOLE} uses sysutils;
var textout,textin: Text;
ch: Char;
AnzZeichen: Integer;
AnzWort: Integer;
sZeichen: String;
sText: String;
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 ganze Zeile in textout. Zeilenende wird automatisch angefügt.
readln(textin); // Liest ganze Zeile aus textin. Zeilenende wird automatisch verworfen.
end
else
begin
read(textin,ch); // Liest ein Zeichen aus textin und schreibt es in ch
sZeichen:=ch; // String sZeichen mit Wert aus ch
Case sZeichen of // Ändert bestimmte Zeichen vor dem Schreiben in textout
#196:sZeichen:='Ae'; // Ä
#214:sZeichen:='Oe'; // Ö
#220:sZeichen:='Ue'; // Ü
#228:sZeichen:='ae'; // ä
#246:sZeichen:='oe'; // ö
#252:sZeichen:='ue'; // ü
#223:sZeichen:='ss'; // ß
end;
sText:=sText+sZeichen; // Zusammenfügen aller sZeichen zu sText
write(textout,sZeichen); // Schreibt das soeben gelesene Zeichen aus sZeichen in textout
Inc(AnzZeichen); // Zählt die Anzahl der Zeichen
If eoln(textin) or (ch=' ') then
Inc(AnzWort); // Zählt die Anzahl der Zeilenumbrüche und Leerzeichen
end;
end;
CloseFile(textout); // Schließt textout
CloseFile(textin); // Schließt textin
writeln(sText); // Gibt sText aus
writeln('Anzahl der Zeichen: ',AnzZeichen); // Gibt Anzahl der Zeichen aus
writeln('Anzahl der Worte: ',AnzWort); // Gibt Anzahl der Worte aus
readln();
end.