Difference between revisions of "ReadLn/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed template loop; syntax highlighting)
 
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]  
Line 44: Line 53:
  
 
===Mögliche Fehler===
 
===Mögliche Fehler===
 +
 
Wird hier etwas anderes eingegeben als eine Ganzzahl, kommt es unweigerlich zu einem Laufzeitfehler.
 
Wird hier etwas anderes eingegeben als eine Ganzzahl, kommt es unweigerlich zu einem Laufzeitfehler.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 
var
 
var
 
   i: Integer;
 
   i: Integer;
Line 51: Line 62:
 
   Read(i);
 
   Read(i);
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Dies kann folgendermassen abgefangen werden:
 
Dies kann folgendermassen abgefangen werden:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
{$I-} // Das kein Laufzeitfehler geworfen wird.
 
{$I-} // Das kein Laufzeitfehler geworfen wird.
 
var
 
var
Line 68: Line 80:
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Wen man den Fehler nicht abfängt, ist '''i = 0'''.
 
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 84: 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 Funktionen in der Unit [[Crt/de#Tastatur-Eingabe|Crt]]  
 
Siehe dazu folgende Funktionen in der Unit [[Crt/de#Tastatur-Eingabe|Crt]]  
 
* '''ReadKey''' - Liest ein einzelnes Zeichen.
 
* '''ReadKey''' - Liest ein einzelnes Zeichen.
Line 92: Line 111:
  
 
==Verwendung mit property==
 
==Verwendung mit property==
 +
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
type
 
type
Line 101: Line 121:
 
   end;
 
   end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Genaueres hier:
 
Genaueres hier:
 +
 
*[[Property/de|Property]]
 
*[[Property/de|Property]]
  
Line 111: 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.