![]() |
Richtige Fallunterscheidung
Hallo Liebe Community,
nun komm ich zu einer Frage die ich mir oft stelle, nämlich wie ich die richtige Fallunterscheidung mache damit mein Programm nicht abstürzt... und zwar habe ich ein Edit und möchte mit dessen Inhalt weiter arbeiten,jedoch als Integer( strtoint, das ist nicht das Problem :wink:) Das Problem ist: 1. wenn der Benutzer NICHTS eingibt, wie erkläre ich das dem Programm ?? mit if ... aber wie richtig also ich würde es so machen und es klappt nicht :
Delphi-Quellcode:
2.Wenn der Benutzer keinen Integer eingibt sondern einen String ; oder beides gemischt also da würde ich folgendes tun:
procedure TGUI.Button1Click(Sender:TObject);
begin if (Edit1.Text = '') then ShowMessage(Bitte geben sie eine Zahl ein !); // Gibts eig einen Befehl der die procedure anhählt oder beendet? // wäre an dieser eig angebracht also jetzt nicht bei so einen // einfachen Beispiel, aber bei komplexeren angelegenheiten ... else ... end;
Delphi-Quellcode:
Danke für die Hilfe
procedure TGUI.Button1Click(Sender:TObject);
begin if (Edit1.Text = ???) then // hier bräuchte ich einen Tipp ShowMessage(Bitte geben sie eine Zahl ein !); // Gibts eig einen Befehl der die procedure anhählt oder beendet? // wäre an dieser eig angebracht also jetzt nicht bei so einen // einfachen Beispiel, aber bei komplexeren angelegenheiten ... else ... end; Zuckerberg |
AW: Richtige Fallunterscheidung
Guck mal nach
![]() Übrigens, um eine Methode Anzuhalten kannst du ![]() ![]() MfG Fabian |
AW: Richtige Fallunterscheidung
StrToInt mit try/except umgeben oder gleich TryStrToInt nutzen... alternativ lässt du im Edit nur Ziffern zu.
|
AW: Richtige Fallunterscheidung
Ich selbst arbeite gerne mit eigenen Exceptions und Schutzblöcken.
Abhängig von der Exception kannst du dann reagieren. Du kannst damit natürlich z.b. strtoint nutzen um die Eingabe zu validieren, da die Exception gefangen wird. |
AW: Richtige Fallunterscheidung
Zitat:
|
AW: Richtige Fallunterscheidung
alternativ kann man die Oberfläche auch so gestalten, dass ein weiterarbeiten nur möglich ist, wenn die Eingabe korrekt ist. Also Schaltflächen nur aktivieren, wenn im Eingabefeld was drin steht oder so.
|
AW: Richtige Fallunterscheidung
Danke erstmal
nur was macht TryStrtoInt genau ?? brauch ich dabei keine if Abfrage mehr ? und wie kriegt man es hin das im Edit nur Zahlen zugelassen werden ? |
AW: Richtige Fallunterscheidung
Was der Name sagt: Es versucht einen String in einen Integer zu wandeln und gibt zurück, ob die Wandlung erfolgreich war
|
AW: Richtige Fallunterscheidung
![]() |
AW: Richtige Fallunterscheidung
Frage eins: Delphi Hilfe. Frage zwei: Forensuche.
|
AW: Richtige Fallunterscheidung
Danke vielmals ihr alle ward meine Rettung:thumb:
|
AW: Richtige Fallunterscheidung
entweder ich bin zu blöd oder es gibt bei trystrtoint einen hacken ...
also ich habe folgendes geschrieben bekomme aber eine Fehlermeldung:
Delphi-Quellcode:
und wenn ich das schreibe kommt:
if TryStrToInt(Edit1.Text) = False then //undefenierter Bezeichner trystrtoint
...
Delphi-Quellcode:
if Try(strtoint(Edit1.Text)) = false then // erwartet er ":="
... |
AW: Richtige Fallunterscheidung
Guck dir in der Hilfe mal an, wie ein try-execept-Block aussieht.
|
AW: Richtige Fallunterscheidung
Ist die Unit SysUtils eingebunden? Außerdem fehlt da ein Parameter.
Zitat:
|
AW: Richtige Fallunterscheidung
Zitat:
bei mir gibts diese function trystrtoint überhaupt gar nicht -.- ich nutze Delphi 5 ! naja ich versuch es grad mit dem try - except block jedoch muss bei dem ON bereich sowas wie EDividebyZero rein ... Mein Problem ist wenn im edit kein Integer steht wie heißt der "E-Befehl dazu" ?? |
AW: Richtige Fallunterscheidung
StrToIntDef könnte auch helfen...
|
AW: Richtige Fallunterscheidung
Dann weiss man aber nicht unbedingt, ob der wert korrekt war ( wenn die Eingabe dem Default entsprochen hat)
|
AW: Richtige Fallunterscheidung
Zitat:
|
AW: Richtige Fallunterscheidung
Du brauchst nicht unbedingt ein ON-Bereich.
wenn du einfach nur
Delphi-Quellcode:
schreibst, wird der except-Block bei jedem Fehler angesprungen der im try-Block entsteht, egal welcher.
try
//... except //irgendwie abbrechen end; |
AW: Richtige Fallunterscheidung
Die TryStrTo<Typ>()-Variante würde ich aber vorziehen
|
AW: Richtige Fallunterscheidung
Aber wenn er die Funktion nicht hat?
Keine Arme, keine Kekse |
AW: Richtige Fallunterscheidung
Ich auch, aber die scheint es ja nicht zu geben bei Delphi5...
Redbox: naja, egal. Ich schreib es trotzdem :) |
AW: Richtige Fallunterscheidung
|
AW: Richtige Fallunterscheidung
Danke Schön :-D:-D:-D:thumb::thumb::thumb:
so viele verschiedene Möglichkeiten ich werde versuchen sie alle unterzubringen :wink: |
AW: Richtige Fallunterscheidung
Besser nur eine einzige nutzen, nämlich die von mkinzer!
Also selber die Funktion Definieren. |
AW: Richtige Fallunterscheidung
Moin,
wäre praktisch wenn du irgendwo erwähnst das du Delphi 5 verwendest. Ich hätte zwar nicht gewusst, ob Delphi 5 wirklich kein TryStrTo* hat, aber andere vielleicht :cyclops: MfG Fabian |
AW: Richtige Fallunterscheidung
Zitat:
|
AW: Richtige Fallunterscheidung
Zitat:
|
AW: Richtige Fallunterscheidung
Ähr wieso ?
MfG Fabian |
AW: Richtige Fallunterscheidung
Ein Ironie-Tag gleich mit dazu erfinden ;)
Also bei der Anmeldung im Forum gehört die Angabe der Delphi-Version gleich als Eingabefeld mit rein. Weiterhin freiwillig, aber da gäbe es die Chance, dass öfter die wichtigste Profil-Angabe auch mal ausgefüllt wird. |
AW: Richtige Fallunterscheidung
Zu den Zahlen:
Also ich weiß nicht genau ab welcher Version das dabei ist, aber ich kann in Delphi 2010 die Einstellung einstellen "NumbersOnly", diese Funktion würde auch dein anders Problem lösen, denn man kann nicht "nichts" eingeben ( also mehrere Leerzeichen hintereinander ). Und weil man dann höchstens nur ein Leerzeichen eingeben kann, kann man die Abfrage benutzen:
Delphi-Quellcode:
// In Delphi 7 ist es noch nicht dabei.
if edit1.text = '' then
showmessage('Bitte eine Zahl eingeben') // Habe nicht gelesen das er Delphi 5 Benutz -.- aber egal. Für die anderen ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz