Skocz do zawartości
Zecke

Rozpoznawanie Literek W Polu Edit

Rekomendowane odpowiedzi

Mam problem natury banalnej jak zwykle :) Mam sobie edit1 w którym użytkownik mojego "programu" ma wpisać swój wiek np "34". Jak to zrobić, żeby w przypadku jak użtykownik w polu edit1 poda np "zs" czyli literki zamiast liczb upomnieć go, że ma wpisać cyfry a nie literki? Pozdrawiam i czekam na pomoc.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Samemu można opracować własny komponent bez użycia maskeditów ani innego dziwota. Np na buttonie będzie to wyglądać tak:

 

void __fastcall TForm1::Button1Click(TObject *Sender){   const char * napis = Edit1->Text.c_str();   for(int i = 0; i < Edit1->Text.Length(); i++)   {         if(napis[i] > '9' || napis[i] < '0' || napis[0] == '0')         {             ShowMessage("Podaj liczbe");             return;         }   }   ShowMessage("Wszstko ok teraz jedziemy dalej");   //tu miejsce na działania jeśli wszstko jest ok}

Przykładowy warunek u mnie jest złożony z 2 porównań czy liczba jest w zakresie 0 do 9 i czy pierwsza nie jest cyfra 0. Ale to już zalezy od upodobań co komu potrzebne.

Edytowane przez razor1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Razor, powiem szczerze, że nie do końca mi ten Twój sposób działa. Otóż gdy wpisuje np "aakakak" to oczywiście pojawia się komunikat "podaj liczbe". Jeśli natomiast wpisuje "1" to pojawia się ten sam komunikat. Sytuacja zmienia się, gdy wpisze liczbę 4 cyfrową ;ub większą np "1111" wtedy wszystko gra i pojawia sie komunikat "wszysko ok". Wiesz jak to poprawić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Razor, powiem szczerze, że nie do końca mi ten Twój sposób działa. Otóż gdy wpisuje np "aakakak" to oczywiście pojawia się komunikat "podaj liczbe". Jeśli natomiast wpisuje "1" to pojawia się ten sam komunikat. Sytuacja zmienia się, gdy wpisze liczbę  4 cyfrową ;ub większą np "1111" wtedy wszystko gra i pojawia sie komunikat "wszysko ok". Wiesz jak to poprawić?

1645836[/snapback]

A może ustaw właściwości zwykłego editboxa na number, a OnChange czy coś w tym stylu sprawdź czy nie jest więcej cyfr niż dwie :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A może ustaw właściwości zwykłego editboxa na number, a OnChange czy coś w tym stylu sprawdź czy nie jest więcej cyfr niż dwie :)

1645847[/snapback]

EditBox nie ma takiej właściwości jak number, to jest zwykły napis, takich bajerów tam nie ma. Wcale nie trzeba sprawdzać ilości cyfr w onchange (to jest w sumie bez sensu) wystarczy ustawić MaxLength w EditBox na potrzsebną długość i koniec.

 

Zecke ten kod co ci napisałem działa jak należy, wklej jeszcze raz i sprawdź ponownie.

Edytowane przez razor1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

EditBox nie ma takiej właściwości jak number, to jest zwykły napis, takich bajerów tam nie ma. Wcale nie trzeba sprawdzać ilości cyfr w onchange (to jest w sumie bez sensu) wystarczy ustawić MaxLength w EditBox na potrzsebną długość i koniec.

Z tym maxlenght to masz racje, ale co do number to:

ES_NUMBER Allows only digits to be entered into the edit control.

Jeśli w winapi jest, to w VCL też musi być :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Albo sprawdź po kodach ASCII - wszystkie znaki mają poprzydzielane numery od 0 do 255, poniżej 32 nas praktycznie nie interesuje (znaki specjalne, spacja to 32), praktycznie do 128 masz wszystkie litery opócz narodowych, cyfry i standardowe znaki. Wystarczy sprawdzić, czy wprowadzony znak znajdyje się w podanym przedziale czy nie - proste jak drut i działa praktycznie w każdym języku programowania niezależnie od platformy i zastosowanego SO.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja już takie rozwiązanie mu podałem na tacy. Jak wiadomo w C++ mozna przeprowadzać operacje arytmetyczne i logiczne bezpośrednio na typie char bez bawienia sie kodami ASCI i ich numeracją :)

Przanajmniej jeśli chodzi nam tylko o cyfry i litery alfabetu, ale to każdy raczje wie.

Edytowane przez razor1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...