Delphi-Quellcode:
program Textverarbeitung;
{$APPTYPE CONSOLE} uses sysutils;
var textout,textin: Text;
ch: Char;
begin
Assignfile(textin,'test.in');
Assignfile(textout,'test.out');
RESET(textin); // Datei textin öffnen
REWRITE(textout); // Datei textout zum überschreiben öffnen
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) <- Kein Semikolon nötig (es ist aber auch nicht verboten eins zu machen!!)
end // kein Semikolon, weil der block mit "else" weiter geht
else
begin
read(textin,ch); // Liest ein Zeichen aus der textin - Datei
write(textout,ch); // schreibt das soeben gelesene Zeichen in die textout - Datei
// hier kann einfach ein Zeichenzähler geführt werden.
// platz für den Wortzähler...
end;
end;
CloseFile(textout); //Schließt textout
CloseFile(textin); //Schließt textin
readln();
end.
Schreib stets nur eine Anweisung pro Zeile, das ist dann auch besser zu kommentieren (und später auch zu debuggen).
Das erste Semikolon "kann" weggelassen werden, weil es die letzte Anweisung vor dem "End" ist - "muss" aber nicht, ich empfehle dir es immer zu setzen.
Das zweite Semikolon ist nicht erlaubt, weil der begin/end-Block über das "else" noch nicht abgeschlossen ist.
Dateien die du öffnest solltest du auch wieder schließen, das gilt auch für textin.
Zum Zählen gibts hier ohnehin schon Hinweise und selber lösen macht bekanntlich schlauer