Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Regular Expressions

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27

    Regular Expressions

    Hi,

    ich habe ein Problem bei Regular Expressions mit dem QValidator.

    Z.B. nur Zahlen durchlassen oder so ist ja kein Problem (
    Code:
    QRegExp rx("[0-9]{0,8}");
    ), aber wie kann ich ihm zB. explizit sagen, dass bestimmte Zeichen zB. + oder - zugelassen sind ?
    Auch habe ich nicht gefunden, dass die Eingabe z.B. aus mehreren Blöcken bestehen kann, wie z.B. bei einem Name oder so. Sprich 2, 3 oder mehr Wörter oder Zahlen.

    Noch ein weiteres Problem ist, wenn ich mit festen Längen arbeiten will.
    Ich frage nämlich die Textfelder immer bei jeder Veränderung, also jeder neuen Eingabe ab, so dass bei vorgegebener fester Länge er ja sofort bei jeglicher Eingabe schreit, da diese ja logischerweise immer unter der festen Länge liegt. Wie kann man denn das unterbinden?

    Danke im Voraus für Eure Hilfe

  2. #2
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Hm, da war ich in dem anderen Thread wohl wirklich zu knapp.

    Zitat Zitat von ramonl
    aber wie kann ich ihm zB. explizit sagen, dass bestimmte Zeichen zB. + oder - zugelassen sind ?

    Auch habe ich nicht gefunden, dass die Eingabe z.B. aus mehreren Blöcken bestehen kann, wie z.B. bei einem Name oder so. Sprich 2, 3 oder mehr Wörter oder Zahlen.
    Nochmal für alle F(a)elle:

    Eierlegende Wollmilchsau für Zahlen:
    QValidator* intvalidator=new QIntValidator(-15,999,this); // Zahlen von -15 bis 999

    Eierlegende Wollmilchsau für einfache Texte mit Umlauten, Zifffern, Leer- und Satzzeichen:
    QValidator* strvalidator=new QRegExpValidator(QRegExp("[\\s\\w .!?,:=+-*'/]{1,31}"),0);
    // Semikolon fehlt, da das Programm CSV-Dateien verarbeitet

    Einhängen in die QLineEdits:
    p_text[1]->setValidator(intvalidator);
    p_text[2]->setValidator(intvalidator);
    p_text[0]->setValidator(strvalidator);

    Ende des Eingabe (-und Testteils)!


    Noch ein weiteres Problem ist, wenn ich mit festen Längen arbeiten will.
    Ich frage nämlich die Textfelder immer bei jeder Veränderung, also jeder neuen Eingabe ab, so dass bei vorgegebener fester Länge er ja sofort bei jeglicher Eingabe schreit, da diese ja logischerweise immer unter der festen Länge liegt. Wie kann man denn das unterbinden?
    Mann, mach dir das Leben nicht so schwer!. QLineEdit nimmt dir doch die ganze Arbeit ab, leise und unauffällig.

    Und abgefragt wird hier erst, wenn der String wirklich gebraucht wird.

    so long,

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    ok, danke erstmal für Deine Antwort.

    Mann, mach dir das Leben nicht so schwer!. QLineEdit nimmt dir doch die ganze Arbeit ab, leise und unauffällig.

    Und abgefragt wird hier erst, wenn der String wirklich gebraucht wird.
    Was meinst Du hiermit ? Ich benutze ja einen QLineEdit, aber wie wird mir denn da die Arbeit abgenommen.

    Und was ist, wenn ich z.B. einen Geldbetrag eingeben möchte. Dass ich also via Prüfunung sicher stellen will, dass der Betrag mit einem Komma sein MUSS.
    Bei deinem Beispiel war ja, welche Zeichen vorkommen dürfen, oder ? Aber nicht muss.

    Die InputMask im Designer ist ja wohl garnicht zu gebrauchen.

    Danke im Voraus

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.08.2004
    Beiträge
    24
    mitn validator ueberpruefst du nicht so sachen wie zum beispiel ob ein komma vorhanden ist, denn der eintrag wird ja noch bearbeitet. du gibst nur an dass du kommas schreiben kannst. wird dann der eintrag verwendet, also zb. wenn der user ok klickt und irgendwas passiert oder so, dann kannst du ueberpruefen ob ein komma vorhanden ist zb. mit [0-9]*,[0-9]*
    Don't say things that hurt others, said pussycat.

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    so ganz verstehe ich das immernoch nicht.

    also [0-9]*, bewirkt ja da szahlen und komams erlaubt sind...

    Wissen muss ich aber noch welches zeichen für ein Leerzeichen steht !?


    (also ich brauche genau buchstaben und leerzeichen erlaubt, z.b. für vorname, leerzeichen, nachname)
    Geändert von ramonl (11-01-2005 um 16:23 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.08.2004
    Beiträge
    24
    das zweite was ich angegeben habe ([0-9]*,[0-9]*) ist keine re fuer den validator sondern zum nachtraeglichen ueberpruefen des strings. die re gibt in worten ausgedrueckt an: der string ist "richtig" wenn eine beliebige anzahl von ziffern, gefolgt von genau einem komma, gefolgt von einer beliebigen anzahl von ziffern vorhanden ist. dh. genau ein komma muss vorhanden sein. besser waere sogar ^[0-9]+,[0-9]+$

    die qt leute koennen mir ja sagen wenn ich dreck erzaehle, ich teile nur das mit was ich von perl kenne .

    leerzeichen ist leerzeichen, zumindest in perl res.
    Don't say things that hurt others, said pussycat.

  7. #7
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von ramonl
    (also ich brauche genau buchstaben und leerzeichen erlaubt, z.b. für vorname, leerzeichen, nachname)
    Mit \w+\s\w+ dürftest du beim Validator dabei sein,
    (die Backslashes im rxp-String latürnich maskieren )

    mit z.B. eingabe.section(' ',x,x) beim restlichen Testen vor Abspeichern.

    so long

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •