Zecke Opublikowano 12 Września 2005 Zgłoś Opublikowano 12 Września 2005 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ygbd Opublikowano 12 Września 2005 Zgłoś Opublikowano 12 Września 2005 użyć komponentu EditMask, albo MaskEdit nie pamiętam dokładnie jak się nazywa i tam w ustawieniach maski wpisujesz: 0 (dowolna cyfra, bez znaku, może być wprowadzona) 9 (dowolna cyfra, bez znaku, musi być wprowadzona) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 12 Września 2005 Zgłoś Opublikowano 12 Września 2005 (edytowane) 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 12 Września 2005 przez razor1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Zecke Opublikowano 12 Września 2005 Zgłoś Opublikowano 12 Września 2005 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ć? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
antrykot111 Opublikowano 12 Września 2005 Zgłoś Opublikowano 12 Września 2005 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 :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 12 Września 2005 Zgłoś Opublikowano 12 Września 2005 Mi działa poprawnie , i na pewno tak działa poprawnie bo nie może inaczej, nie wiem coś źle robisz może źle wklejasz albo masz coś namieszane z.... no właśnie nie wiem z czym hhehe. Wklej jeszcze raz poprawnie napewno zadziała. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 12 Września 2005 Zgłoś Opublikowano 12 Września 2005 (edytowane) 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 12 Września 2005 przez razor1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
antrykot111 Opublikowano 13 Września 2005 Zgłoś Opublikowano 13 Września 2005 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ć :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Artur.M Opublikowano 15 Września 2005 Zgłoś Opublikowano 15 Września 2005 Poszukaj w pomocy Buildera o funkcji isdigit() Sprawdza ona czy podana wartość to liczba. Chyba tu ci się przyda. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
sikor_soft Opublikowano 16 Września 2005 Zgłoś Opublikowano 16 Września 2005 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 16 Września 2005 Zgłoś Opublikowano 16 Września 2005 (edytowane) 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 16 Września 2005 przez razor1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...