- Wie unterbinde ich eine falsche eingabe der benutzer (zbs.
das programm erwartet char pubi gibt aber integer oder
sonstwas ein)?
readln(eingabe);
allesOK:=true;
for i:=1 to length(eingabe) do
if not (eingabe[i] in [‚0‘…‚9‘,’.’]) then allesOK:=false;
if allesOK then
begin
writeln(‚Benutzer hat alles richtig gemacht‘);
//TODO: jetzt konvertieren in eine Integer-Variable
end;
- Wie lösche ich nur enen vordefinierten teil des
bildschierms?
löscht von der 5.Zeile und 5.Spalte bis zur 20. Zeile und 20. Spalte alles:
window(5,5,20,20); //Bildschirmbereich setzen…
clrscr; //…den clrscr löschen soll
window(1,1,25,80); //„reset“ nicht vergessen
- Wie bringe ich das programm bei nur eine vordefinierte zeit
auf eine eingabe zu warten und merken ob was eingegeben worden
ist oder nicht?
Ich weiss jetzt leider nicht, ob es die Proc getTickCount() unter DOS gibt. Falls nicht, musst du den Umweg über GetTime o.ä. machen. GetTickCount liefert die Anzahl verstrichenen Millisekunden.
function eingabeTimeout(): string;
var eingabe : string;
startzeit : longint;
begin
eingabe:=’’;
startzeit:=getTickCount();
repeat
if keypressed then eingabe:=eingabe+readkey;
until (eingabe[length(eingabe)]=chr(13)) or (getTickCount()>startzeit+10000);
//Bricht nach Enter-Taste (chr(13)) oder 10 Sekunden (=10000ms) ab
eingabeTimeout:=eingabe;
end;
Ich hoffe, dass nicht allzuviele Tippfehler in meinen Codeschnipsel sind.
Gruß,
Frank