Einzelnen Beitrag anzeigen

jdiephaus

Registriert seit: 29. Nov 2016
15 Beiträge
 
#9

AW: Beginner: Textverarbeitung

  Alt 30. Nov 2016, 17:07
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.

Geändert von jdiephaus (30. Nov 2016 um 17:24 Uhr)
  Mit Zitat antworten Zitat