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 einfach

    if(!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


Anmelden zum Antworten