Wie unterbinde ich eine falsche eingabe der benutzer (zbs.
das programm erwartet char pubi gibt aber integer oder
sonstwas ein)?
Es gibt bei der TEdit-Komponente das Event OnExit. Guck mal in der Hilfe nach - mit ein wenig Hirnschmalz solltest Du das hinbekommen. Lernen tut man ja nur wenn man sich selbst was erarbeitet und es nicht vorgekaut bekommt…
Wie lösche ich nur enen vordefinierten teil des
bildschierms?
Was willst Du bitte? Ich verstehe diese Frage nicht… Aber… Guck Dir mal Canvas (TCanvas) an…
Wie bringe ich das programm bei nur eine vordefinierte zeit
auf eine eingabe zu warten und merken ob was eingegeben worden
ist oder nicht?
if Trim(Edit1.Text) = '' then
showmessage('dummer benutzer hast nichts eingegeben!');
TTimer(Sender).Enabled := false;
Möglichkeit
TEdit.OnEnter-Event
start := gettickcount; //start vom Typ Cardinal in var-Abschnitt deklarieren!
repeat
application.processmessages;
until gettickcount \>= start + 15000;
if Trim(TEdit(Sender).Text) = '' then
ShowMessage('du warst wieder dumm!');
Möglichkeit
Über Threads arbeiten - das jedoch würde einen Anfänger sicherlich überfordern aber bei Interesse guck mal in TThread in der Hilfe rein.
Wie unterbinde ich eine falsche eingabe der benutzer (zbs.
das programm erwartet char pubi gibt aber integer oder
sonstwas ein)?
du kannst das „OnKeyPress“-Ereignis nutzen des TEdit, um die gedrückte Taste abzufragen. Willst du Z.B. nur Zahlen zulassen, heisst der Code zB:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0','1','2', '3', '4', '5','6','7','8','9','0', '.']) then begin
beep;
Key := chr(0);
end;
end;
(der Code funktioniert, ist aber noch nicht ganz vollständig. Aber den „Bug“ kannst du selber suchen:smile:)
Alternativ kannst du natürlich auch das TMaskEdit mal anschauen.
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.
Hallo,
ich nehme an, Du willst was im alten TP machen, also kein
Objekt-Paskal oder sogar Delphi, oder?
Wie unterbinde ich eine falsche eingabe der benutzer (zbs.
das programm erwartet char pubi gibt aber integer oder
sonstwas ein)?
Tja, erstmal alles einlesen, dann Plausibilitätstests machen
(bzw. erstmal Konvertieren. )
Kommt drauf an, wie die Eingabe aussieht. wenn Du z.B. eine
Eingabe als String einliest, dann mußt Du das ja mit der
Funktion VAL in eine Zahl umwandeln, sofern Du eine Zahl willst.
Dabei wird auch ein Fehlercode generiert, der abgetestet werden
sollte (z.B. weil nur Buchstaben statt Zahl eingegeben).
Das Ergebnis der Eingabe dann noch auf Plausibilität prüfen
(also z.B. Eingabebereich 0…10 -> Eingaben außerhalb abweisen).
Wie lösche ich nur enen vordefinierten teil des
bildschierms?
Im Grafikbildschirm oder wie?
-> Da gibt es Grafikbefehle.
Kann Dir auch eine schöne alte Toolsammlung für Grafik schicken.
Da sind solche „Fenster-Funktionen“ auch unterstützt.
Wie bringe ich das programm bei nur eine vordefinierte zeit
auf eine eingabe zu warten und merken ob was eingegeben worden
ist oder nicht?
Im alten Pascal immer die PC-Uhr abfragen und vergleichen,
wieviel Zeit vergangen ist.
Eingaben werden entweder mit Enter quittiert oder anders
per „Keypressed“ abgefragt.