ReadLn/de

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de)

Zurück zu den reservierten Wörtern.

Read / ReadLn

Vorwort

Der Befehl Write/WriteLn wird angewandt.

  • Konsolen-Tastatur-Eingabe. ( Nur ganze Zeile + [Enter] )
  • Lesen von Datei/Gerät.
  • Bei property bei Classen (nur Read).

Die beiden Befehle Read und ReadLn sind sehr verwandt, der Unterschied, ReadLn liest Zeichen bis zum einem Zeilenumbruch ein. Wobei man ReadLn nur bei Text-Dateien und Konsolenausgabe verwenden kann.

Schreiben in Datei

Read(f, Datensatz);    // Liest einen Datensatz aus einer eine Datei.
// oder
ReadLn(f, Datensatz);  // nur Bei Text-Dateien möglich.

Genaueres hier:

Konsole / Text-Dateien

Es ist möglich direkt Strings, Char, Zahlen, etc. einzulesen.

Mehrere Argumente

Es sind mehrere Argumente in ReadLn möglich.

var
  a, b, c: integer;
begin
  ReadLn(a, b, c);
  WriteLn(a);
  WriteLn(b);
  WriteLn(c);
end.

Bei der Eingabe hat man mehrere Möglichkeiten:

  • Zahl [Enter] Zahl [Enter] Zahl [Enter]
  • Zahl [Space] Zahl [Space] Zahl [Enter]
  • Zahl [Tab] Zahl [Tab] Zahl [Enter]

Mögliche Fehler

Wird hier etwas anderes eingegeben als eine Ganzzahl, kommt es unweigerlich zu einem Laufzeitfehler.

var
  i: Integer;
begin
  Read(i);

Dies kann folgendermassen abgefangen werden:

{$I-} // Das kein Laufzeitfehler geworfen wird.
var
  ior, i: integer;
begin
  repeat
    Read(i);
    ior := IOResult; // Prüfen, ob Eingabe IO.
    if ior <> 0 then begin
      WriteLn('Falsche Eingabe !');
    end;
  until ior = 0;
  WriteLn('Es wurde ', i, ' eingegeben');
end.

Wen man den Fehler nicht abfängt, ist i = 0.

Eingabe umlenken

Normalerweise liest dies von der Konsole ein:

  ReadLn(s);

von der Konsole einlesen.

Wird die Ausgabe des Projekts folgendermassen umgeleitet:

# Linux
./project1 < text.txt
# Windows/DOS
project1.exe < text.txt

Liest Read/ReadLn von der umgelenkten Datei/Gerät.

Einzelne Zeichen einlesen

Siehe dazu folgende Funktionen in der Unit Crt

  • ReadKey - Liest ein einzelnes Zeichen.
  • KeyPressed - Liefert true wen sich mindestens 1 Zeichen im Tastaturpuffer befindet.

Verwendung mit property

type
  MyClass=class(TObject)
  private
    FColor: Integer;
  published
    property Color : Integer read FColor write FColor; // Hier verwendet.
  end;

Genaueres hier:

Autor: Mathias

Siehe auch

Write / WriteLn - Konsolen - Ausgabe / Schreiben in Datei.