Wie überspringt man leere Edit Angabe ?
-
Hey, hab da nochmal EINE Frage ....
und zwar in meinem Programm muss der Benutzer ein paar Eingaben von Zahlen machen...das läuft auch alles so weit ganz gut und er berechnet mir auch alles sauber!Allerdings will ich das Programm auf Fehler korregieren!
Wie bekomme ich es hin, das der Compilier nicht eine Fehler Meldung angibt , wenn kein Wert eingegeben wird ! Bzw. Wenn kein Wert eingegeben wird , dann soll der Wert NULL sein.
Also noch mal in anderen Worten: Keine Eingabe dann soll mit dem Wert 0 gerechnet werden!?
Wie setze ich da an ?
-
1. Der Compiler schmeisst zur LAufzeit gar keine Fehlermeldungen...
2. Indem du ganz einfach prüfst, ob der Wert gültig ist? Schau vielleicht auch mal die methoden des Datentyps von TEdit::Text genauer an... da gibts ne Konvertierungsroutine, welche es ermöglicht einen Defaultwert zu setzen, wenn die Konversion fehlschlägt...-junix
-
also, das machst du mit:
try { a = StrToInt(Edit1->Text); } catch(...) { ShowMessage ("Sie müssen alle Eingaben tätigen"); }
wenn bei try {} ein fehler kommt, bricht er die funktion ab und geht zu catch(...)
wenn du allerdings das programm mit F9 startest, kommt der fehler immer noch
mach STRG + F9 und dann starte das programm im windows aus
Tim
-
Naja, die AnsiString-Methode die das Setzen des Defaultwertes ermöglicht, scheint mir da wesentlich eleganter als die Konstruktion (o; Wobei sie natürlich absolut richtig - und in der anderen Methode vermutlich nix anderes implementiert - ist.
-junix
-
Hey ihr seit Super...Danke
Vielleicht ein bischen fach spezifisch, aber das werde ich schon hinbekommen !
Danke
-
Als Stabdart in die Edit Felder "0" eintragen?
Dann hastdukeine Problme mehr.
-
Genau.... und dann kommt der böse junix daher und löscht einfach die Null aus dem Edit und voilà ... (o;
-junix
-
Oder mache eine Schleife. Mach ein Array und speicher dort die Werte. Prüfe dabei ob alle Felder etwas enthalten, wenn nicht, soll er mit einer 0 rechnen. Oder du prüfst sie, wie schon gesagt und sagst dem User das er alle Felder ausfüllen soll.
Code-Hacker
-
mach doch einfach eine überprüfung im OnChange-ereignis
steht nichts drin, dann schreib 0 rein
-
Äh hallo? Wieso nicht einfach erst prüfen, wenn ich den Wert wirklich brauche? ist doch vorher wurscht, was da drin steht. nervt höchstens, wenn ich mich mal vertippe und da dauernd ne MessageBox vor sich her blinkt...
-junix
-
Äh hallo? wer schreibt hier denn was von message-box
er will doch nur dass da ne 0 drin steht, wenn das feld leer ist, da brauch ich doch keine rückmeldung vom user
-
Jester2000 schrieb:
mach doch einfach eine überprüfung im OnChange-ereignis
steht nichts drin, dann schreib 0 reinHEy diese Antwort / Lösung gefällt mir am besten und ich denke das ich das problem so lösen werde....
Wollte es wie folgt machen:
void __fastcall TForm1::Edit1Change(TObject *Sender)
{if (Edit1={}) //Also wenn Edit1 eins kein inhalt hat, dannn ...!//Aber wie?//
{
Edit1->Text="0";
}
else
{
Edit1=Edit1;
}}
Das ist das letzte was ich an diesem Progs machen muss . . .
-
void __fastcall TForm1::Edit1Change(TObject *Sender) { if (Edit1->Text.IsEmpty()) { Edit1->Text = "0"; } }
...aber das würdest du auch selbst rausfinden können, wenn du mal in die Hilfe schaust.
-
HEy Leute vielen herzlichen Dank...im F1 Modus habe ich ich keine Abhilfe gefunden ... ihr mir schon.....
Sehr korrektes Forum , versuche irgendwie mal mich zu dankbar zu zeigen
PEace
-
Was für ein F1 Modus? Die besagte Funktion von AnsiString wäre übrigens AnsiString::ToIntDef() gewesen...doch um einiges eleganter, wenns nur ums Rechnen geht...
-junix
-
junix schrieb:
Was für ein F1 Modus?
geh mal in BCB und drück F1
Tim
-
Ahso. Das würde sich dann wohl Hilfe nennen und ist mit Nichten und Neffen kein Modus... hm?
-junix