Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Konsole: Vorsicht mit read und Typenwechsel [beantwortet] (https://www.delphipraxis.net/150147-konsole-vorsicht-mit-read-und-typenwechsel-%5Bbeantwortet%5D.html)

Wolfgang Mix 8. Apr 2010 16:06


Konsole: Vorsicht mit read und Typenwechsel [beantwortet]
 
Ich lese mit read 3 verschiedene Pascaltypen ein
und will sie wieder ausgeben. Das geht in die Hose.
Schliesse ich jedes read mit readln ab, bekomme ich
meine gewünschten Ergebnisse.
Löscht readln ännlich wie bei C# (fflush) den Tastaturpuffer
oder wie ist das Verhalten des Compilers zu erklären?

Diese Phänomen hatte ich auch schon unter TP festgestellt.

Folglich : Jedes read mit readln abschliessen!

Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var i:integer;
    x:real;
    s:string;
begin
  write('s :' );read(s);(*readln*);
  write('x :' );read(x);(*readln*);
  write('i :' );read(i);(*readln*);
  writeln(s);
  writeln(x);
  writeln(i);
  readln;

end.

mkinzler 8. Apr 2010 16:10

Re: Konsole: Vorsicht mit read und Typenwechsel
 
Ja. Das war aber schon immer so

himitsu 8. Apr 2010 16:15

Re: Konsole: Vorsicht mit read und Typenwechsel
 
Zitat:

Zitat von Wolfgang Mix
Das geht in die Hose.

Was soll das denn bedeuten?

Das Einlesen geht hier in D7 und D2010 ohne Probleme.


Einzig das ReadLn am Ende wird übersprungen, weil es das vorhergehende Enter noch mitbekommt.

PS: Da das Read auch auf ein Enter wartet, wäre ReadLn (a) verständlicher und (b) gibt es keine Probleme.
Delphi-Quellcode:
Write('s :' ); ReadLn(s);
Write('x :' ); ReadLn(x);
Write('i :' ); ReadLn(i);
WriteLn(s);
WriteLn(x);
WriteLn(i);
ReadLn;

Wolfgang Mix 8. Apr 2010 16:23

Re: Konsole: Vorsicht mit read und Typenwechsel
 
[quote="himitsu"]
Zitat:

Zitat von Wolfgang Mix
Das geht in die Hose.
Was soll das denn bedeuten?

Das Einlesen geht hier in D7 und D2010 ohne Probleme.
PS: Da das Read auch auf ein Enter wartet, wäre ReadLn (a) verständlicher und (b) gibt es keine Probleme.

Das Einlesen macht auch unter D2005PE keine Probleme, nur fehlt dann
die Bildschirmausgabe.

Optisch besser sieht es aus, wenn der Cursor nach dem Doppelpunkt blinkt
und nicht in der nächsten Zeile.

Aber ok, dieses Verhalten muss man sich halt merken :)

p80286 8. Apr 2010 16:25

Re: Konsole: Vorsicht mit read und Typenwechsel
 
Nach meinem Verständnis hat das read auf der Konsole garnichts zu suchen, da im Normalfall jede Eingabe dort mit einen CR abgeschlossen wird. Solange das nicht erfolgte kann ich meine Eingabe editieren wie ich lustig bin.

Es gab ja mal den Umweg über "if keypressed then read(char)..."

Aber diesee DOStricksereien wollen wir doch nicht wieder ausgraben.....?

Gruß
K-H

Wolfgang Mix 8. Apr 2010 16:31

Re: Konsole: Vorsicht mit read und Typenwechsel
 
Zitat:

Zitat von p80286
Es gab ja mal den Umweg über "if keypressed then read(char)..."

Aber diesee DOStricksereien wollen wir doch nicht wieder ausgraben.....?

Gruß
K-H

Neinnein, nix ausgraben, nur Verhalten abspeichern in brain :)

himitsu 8. Apr 2010 16:33

Re: Konsole: Vorsicht mit read und Typenwechsel
 
Die Bildschirmausgabe ist doch da?
(ganz kurz zumindestens :roll: )
Es wird das ReadLn nur sofort, durch das übergangene Return, wieder abgebrochen.

Reinhard Kern 8. Apr 2010 16:40

Re: Konsole: Vorsicht mit read und Typenwechsel
 
Zitat:

Zitat von Wolfgang Mix
Neinnein, nix ausgraben, nur Verhalten abspeichern in brain :)

Da wird's aber Zeit: dass man Eingaben mit CR abschliesst, war schon unter CP/M so und auch bei meinem eigenen BS, das lange vor CP/M existiert hat, und auf DEC PDP und VAX - einfach weil der Computer ja sonst nicht wissen kann, wann die Eingabe fertig ist. Daten-Eingabe ohne CR ist nur bei ereignisgesteuerten Systemen mit grafischer Oberfläche sinnvoll machbar.

Gruss Reinhard

Wolfgang Mix 8. Apr 2010 16:44

Re: Konsole: Vorsicht mit read und Typenwechsel [beantwortet
 
Habe ja verstanden, danke für die Informationen.

turboPASCAL 8. Apr 2010 16:47

Re: Konsole: Vorsicht mit read und Typenwechsel [beantwortet
 
Entschuldigt bitte, es mag am dem heutigem Tag liegen ...


Wo liegt/ lag das Problem ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz