Edit-Feld: Überprüfung der Texteingabe & Überprüfung der Syntax
-
Hi Leute,
ich habe folgendes Problem:
-> Ich habe ein Textfeld
-> In dieses Textfeld wird eine Zeichenkette eingegeben
z.B.: "ABCD"
-> Das Programm soll nun die Zeichenkette auf Syntax und Inhalt überprüfen
z.B.: Ist in der Eingabe ein "A" oder ein "Y" enthalten ?!(!) Ich weiß das man eine "Regular Expression"-Libary einsetzten kann,
dies möchte ich aber nicht, es muss ja auch ohne zusätzliche Libary gehen.(!) Builder: Borland c++ Builder 6 Professional
SO SOLLS NICHT:
Ich möchte allerdings keine "Eingabesperre" einsetzen, so dass ich also bestimmte Zeichen nicht im Textfeld einsetzten kann.
z.B.:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ((Key<'0' || Key>'9') && Key != 8 && Key != 45 && Key != 46) Key=0; // Zahlen 0-9; Beckspace; "-"; "."
}
-
coder-beginner schrieb:
-> Das Programm soll nun die Zeichenkette auf Syntax und Inhalt überprüfen
z.B.: Ist in der Eingabe ein "A" oder ein "Y" enthalten ?!Schau dir einfach mal alle Methoden von AnsiString an. Da wirst du schnell auf eine solche Funktion treffen.
-
->Leider habe ich in der Hilfe keine entsprechende Methode gefunden...
->währe net, wenn Du mir weiter helfen könntest!
-
Mit der Methode ".Pos" kannst du Abfragen, ob ein Buchstabe in deinem String vorkommt ...
if(Edit1->Text.Pos("A")>0) // Buchstabe gefunden ! else // Buchstabe nicht im String vorhanden
Gruß Skay
-
Danke Skay!
-> Jetzt müßte ich allerdings noch wissen, wie ich einen String auf seine Syntax
überprüfen kann.
z.B. DD-MM-YYYY
=> Bedingung 1: Die Zeichenkette soll gemäß der Syntax sein
=> Bedingung 2: Es soll überprüft werden, ob anstat: DD, MM & YYYY zahlen eingegeben worden sind-> Die Lösung über if(Edit7->Text.Pos("AA")>0) ist sehr interessand,
aber was ist denn, wenn ich eine Variable überprüfen will?!
Ich will dann ja nicht unbeding dann ein Edit benutzen!Freue mich auf Eure Lösungsvorschläge!
Gruß code-beginner
-
Also, hinter der Eigenschaft "Text" des Edit-Feldes verbirgt sich ein Ansistring. Aus diesem Grund kannst du die .Pos Methode auch auf jede AnsiString Variable anwenden.
Die Frage mit der Syntaxprüfung kannst du dir doch selbst beantworten, oder? Wenn an der 3. Stelle eines Strings ein bestimmtest Zeichen stehen muss, dann kannst du es mit "Variable[3] == 'A'" abfragen ...
Gruß Skay
-
Klarom hast ja recht.
Danke !
Gibt es eigentlich auch "Regular expression" in c++ wie bei PHP?
z.B.:<?PHP $date = "1999-17-16"; echo "Datum zu prüfen: $date<p>"; $preg = "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})"; if(preg_match("/$preg/", $date, $regs)) { echo "$regs[3].$regs[2].$regs[1]"; } else { echo "Falsches Datumsformat: $date"; }
-
Soweit ich weiß, gibt es das in C++ nicht. Also nicht in der Art, wie es in PHP funktioniert.
-
Für das Format dd-mm-yyyy kannste doch auch nen MaskEdit Feld benutzen da kannste dein Format definieren das enthalten sein muss