Difference between revisions of "ReadLn/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed template loop; syntax highlighting)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Translate}}
+
{{LanguageBar}}
  
 
Zurück zu den [[Reserved words/de|reservierten Wörtern]].
 
Zurück zu den [[Reserved words/de|reservierten Wörtern]].
Line 7: Line 7:
  
 
Der Befehl '''Write/WriteLn''' wird angewandt.
 
Der Befehl '''Write/WriteLn''' wird angewandt.
 +
 
* Konsolen-Tastatur-Eingabe. ( Nur ganze Zeile + [Enter] )
 
* Konsolen-Tastatur-Eingabe. ( Nur ganze Zeile + [Enter] )
 
* Lesen von Datei/Gerät.
 
* Lesen von Datei/Gerät.
Line 15: Line 16:
  
 
==Schreiben in Datei==
 
==Schreiben in Datei==
 +
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
Read(f, Datensatz);    // Liest einen Datensatz aus einer eine Datei.
 
Read(f, Datensatz);    // Liest einen Datensatz aus einer eine Datei.
Line 20: Line 22:
 
ReadLn(f, Datensatz);  // nur Bei Text-Dateien möglich.
 
ReadLn(f, Datensatz);  // nur Bei Text-Dateien möglich.
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Genaueres hier:
 
Genaueres hier:
 +
 
* [[File Handling In Pascal|Datei Behandlung in Pascal]] (englisch)
 
* [[File Handling In Pascal|Datei Behandlung in Pascal]] (englisch)
  
 
==Konsole / Text-Dateien==
 
==Konsole / Text-Dateien==
 +
 
Es ist möglich direkt Strings, Char, Zahlen, etc. einzulesen.
 
Es ist möglich direkt Strings, Char, Zahlen, etc. einzulesen.
  
 
===Mehrere Argumente===
 
===Mehrere Argumente===
 +
 
Es sind mehrere Argumente in '''ReadLn''' möglich.
 
Es sind mehrere Argumente in '''ReadLn''' möglich.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 
var
 
var
 
   a, b, c: integer;
 
   a, b, c: integer;
Line 38: Line 45:
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Bei der Eingabe hat man mehrere Möglichkeiten:
 
Bei der Eingabe hat man mehrere Möglichkeiten:
 +
 
* Zahl [Enter] Zahl [Enter] Zahl [Enter]
 
* Zahl [Enter] Zahl [Enter] Zahl [Enter]
 
* Zahl [Space] Zahl [Space] Zahl [Enter]  
 
* Zahl [Space] Zahl [Space] Zahl [Enter]  
* Zahl [Tab] Zahl [Tab] 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.
 +
 
 +
<syntaxhighlight lang="pascal">
 +
var
 +
  i: Integer;
 +
begin
 +
  Read(i);
 +
</syntaxhighlight>
 +
 
 +
Dies kann folgendermassen abgefangen werden:
 +
 
 +
<syntaxhighlight lang="pascal">
 +
{$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.
 +
</syntaxhighlight>
 +
 
 +
Wen man den Fehler nicht abfängt, ist '''i = 0'''.
  
 
==Eingabe umlenken==
 
==Eingabe umlenken==
 +
 
Normalerweise liest dies von der Konsole ein:
 
Normalerweise liest dies von der Konsole ein:
 +
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
   ReadLn(s);
 
   ReadLn(s);
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
von der Konsole einlesen.
 
von der Konsole einlesen.
  
 
Wird die Ausgabe des Projekts folgendermassen umgeleitet:
 
Wird die Ausgabe des Projekts folgendermassen umgeleitet:
 +
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
# Linux
 
# Linux
Line 57: Line 101:
 
project1.exe < text.txt
 
project1.exe < text.txt
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Liest '''Read'''/'''ReadLn''' von der umgelenkten Datei/Gerät.  
 
Liest '''Read'''/'''ReadLn''' von der umgelenkten Datei/Gerät.  
  
 
==Einzelne Zeichen einlesen==
 
==Einzelne Zeichen einlesen==
Siehe dazu folgende Functionen in der Unit [[Crt/de|Crt]]  
+
 
 +
Siehe dazu folgende Funktionen in der Unit [[Crt/de#Tastatur-Eingabe|Crt]]  
 
* '''ReadKey''' - Liest ein einzelnes Zeichen.
 
* '''ReadKey''' - Liest ein einzelnes Zeichen.
 
* '''KeyPressed''' - Liefert '''true''' wen sich mindestens 1 Zeichen im Tastaturpuffer befindet.
 
* '''KeyPressed''' - Liefert '''true''' wen sich mindestens 1 Zeichen im Tastaturpuffer befindet.
  
 
==Verwendung mit property==
 
==Verwendung mit property==
 +
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
type
 
type
Line 74: Line 121:
 
   end;
 
   end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Genaueres hier:
 
Genaueres hier:
 +
 
*[[Property/de|Property]]
 
*[[Property/de|Property]]
  
Line 84: Line 133:
  
 
[[Category:Reserved words/de]]
 
[[Category:Reserved words/de]]
 +
[[Category:Pascal/de]]

Latest revision as of 12:15, 17 January 2020

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.