Problem beim kompilieren: "conversion to non-scalar type wxRegEx requested"



  • Hallo zusammen!

    Ich hoffe, dass ich in diesem Forum richtig bin.
    Obwohl es sich hierbei um einen Ausschnitt aus einem wxWidgets-Programm handelt denke ich, dass der Fehler selbst "allgemeiner Natur" ist.
    Daher stelle ich meine Frage einfach mal hier:

    Ich versuche gerade, die Eingaben die ein User in ein wxTextCtrl-Feld eingegeben hat, auf Richtigkeit zu prüfen.
    Anhand des Beispiels auf http://docs.wxwidgets.org/trunk/classwx_reg_ex.html sollte das ganze so funktionieren:

    wxString form_lastname;
      [...]
    wxRegEx reLastname = "[a-z]{1,5}";			
    
    if(reLastname.Matches(form_lastname))
    	{   [...]   }
    else
    	{   [...]   }
    

    Beim kompilieren erhalte ich aber folgenden Fehler:

    error: conversion from ‘const char [11]’ to non-scalar type ‘wxRegEx’ requested
    

    Da ich hier ja (bis auf den RegEx selbst) den Code aus dem aufgeführten Beispiel genommen habe frage ich mich, wo hier der Fehler liegt?

    Vielen Dank schon mal im voraus!



  • goggle doch mal nach wxRegExp ... in der Api steht sicher was die kann ... vermutlich sowas wie

    wxRegEx reLastname;
    reLastname.setRegExp("[a-z]{1,5}");
    

    oder

    wxRegEx reLastname("[a-z]{1,5}");
    

    Dafür sind APIs da 🙂

    Du machst da gerade sowas:

    Gefährt meins;
    meins = NeSammlungVonTeilenDieMalEinGefährtMacht;

    was du brauchst ist:

    Gefährt meins;
    meins.setzeZusammen(NeSammlungVonTeilenDieMalEinGefährtMacht);



  • Hi!

    Das o.g. Beispiel hatte ich ja explizit aus der "wxRegEx Class Reference".
    Daher wundert's mich ja, das dieses Problem auftritt.

    Was bei mir (halbwegs aber auch nicht richtig!) funktioniert ist:

    wxRegEx reLastname( wxT("[a-z]{1,5}"));
    

    Hierbei scheint nämlich ein Teil des RegEx ignoriert zu werden.
    Gebe ich [a-z]{1} an, wird korrekterweise exakt EIN Buchstabe akzeptiert, gebe ich aber [a-z]{1,5} an, so erhalte ich auch bei MEHR als 5 Buchstaben TRUE zurück...?!



  • Hat sich erledigt!

    Man sollte auch den richtigen RegEx verwenden 😉 :

    wxRegEx reLastname( wxT("^[a-z]{1,5}$"));
    

Anmelden zum Antworten