Editfeld auf Eingaben überprüfen
-
Hi,
vielleicht klingt die Überschrift ein wenig merkwürdig, sorry, mir ist nichts besseres eingefallen^^.Mein Problem:
Ich hab ein Programm mit drei Editfeldern (Edit1,2,3).
1. In Edit1 dürfen nur Zahlen stehen.
2. Wenn in mind. einem der 3 Felder nichts drinen stheht, sie also leer sind, soll eine Fehlermeldung ausgegeben werden (Application->MessageBox)Diese beiden Einschränkungen/Überprüfungen hagb ich bis jetzt nicht hinbekommen.
Ich hoffe ihr könnt mir helfen.Gruß
-
Hallo
1. Am besten gleich nur Zahlen zulassen. Beispiel siehe hier. Ansonsten kannst du auch mit StrToInt/StrToIntDef/StrToFloat/StrToFloatDef nachträglich überprüfen ob ein String sich in eine Zahl konvertieren läßt. Weiters zu den genannten Funktionen findest du in der BCB-Hilfe oder über hier über die Forumssuche.
2. Du kannst einen AnsiString mit desen Methode IsEmpty überprüfen.
bis bald
akari
-
Hallo,
klicke auf das Editfeld wo nur Zahlen drin stehen sollen, nun gehst du bei dem Objektinspektor unter Ereignisse, OnKeyPress
dort schreibste einfachif(!isdigit(Key))
Key=NULL;
Nun werden nur noch Zahlen zugelassen!Bei deiner Abfrage ob eines der Editfelder leer ist könntest es so machen:
if ( Edit1->Text=="" || Edit2->Text=="" || Edit3->Text=="" )
ShowMessage("Fehler");
-
Hi,
danke, das mit den Zahlen klappt schonmal - danke!
Nur ich habe ein Problem, die Daten aus Edit1, und Edit2 sollen in eine Datei geschrieben werden. Hab bis jetzt folgendes dafür benutzt:TStringList* theList = new TStringList(); { theList->Add("InhaltEdit1: "+Edit1->Text); theList->Add("InhaltEdit2: "+Edit2->Text); theList->SaveToFile("c:\\Edit1und2.txt"); }
Wenn ich das jetzt mit dem
if ( Edit1->Text=="" || Edit2->Text=="" || Edit3->Text=="" ) ShowMessage("Fehler");
Davorsetzte also,
if ( Edit1->Text=="" || Edit2->Text=="" || Edit3->Text=="" ) ShowMessage("Fehler"); else TStringList* theList = new TStringList(); { theList->Add("InhaltEdit1: "+Edit1->Text); theList->Add("InhaltEdit2: "+Edit2->Text); theList->SaveToFile("c:\\Edit1und2.txt"); }
Dann erhalte ich folgende Fehler:
Erzeugen
[C++ Warnung] Unit1.cpp(37): W8004 'theList' wurde ein Wert zugewiesen, der nie verwendet wird
[C++ Fehler] Unit1.cpp(39): E2451 Undefiniertes Symbol 'theList'Ohne das if-else etc. geht das alles ohne Probleme!
Hoffentlich könnt ihr mir helfen.
Thore
-
Hallo
Grundkenntnisse in C++ Syntax sind schon erforderlich...
if ( Edit1->Text=="" || Edit2->Text=="" || Edit3->Text=="" ) { ShowMessage("Fehler"); } else { TStringList* theList = new TStringList(); theList->Add("InhaltEdit1: "+Edit1->Text); theList->Add("InhaltEdit2: "+Edit2->Text); theList->SaveToFile("c:\\Edit1und2.txt"); delete theList; // Nach gebrauch löschen nicht vergessen! }
bis bald
akari