Sprawdzenie czy zmienna to liczba

dział ogólny

Sprawdzenie czy zmienna to liczba

Postprzez Bert1223 » sobota, 20 lutego 2010, 10:52

Witam, jak mogę w prosty sposób sprawdzić czy wprowadzony zmienna jest liczbą?
Mam pole Edit, i chciałbym ograniczyć możliwość wpisywania tylko liczb w to pole?
Avatar użytkownika
Bert1223
Bladawiec
Bladawiec
 
Posty: 45
Dołączył(a): czwartek, 15 października 2009, 02:41
Podziękował : 6
Otrzymał podziękowań: 0
    Windows 7Chrome

Re: Sprawdzenie czy zmienna to liczba

Postprzez Cyfrowy Baron » sobota, 20 lutego 2010, 11:06

Ten temat był już wałkowany na tym forum dziesiątki razy i podano kilka różnych rozwiązań. W prawym górnym rogu forum masz funkcję wyszukiwania.

Rozwiązanie problemu:

Kod: Zaznacz cały
void __fastcall TForm1::Edit1KeyPress(System::TObject* Sender, char &Key)
{
     if(!strchr("0123456789", Key)) Key = 0;
}


Zdarzenie OnKeyPress dla Edit1. Ograniczono do wprowadzania tylko cyfr z zakresu 0-9.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sprawdzenie czy zmienna to liczba

Postprzez Corvis » sobota, 20 lutego 2010, 11:08

W Builderze chyba od 2009 TEdit ma właściwość NumberOnly wystarczy ustawić ją na true.

Innym sposobem jest taki myk:

Kod: Zaznacz cały
try {
    int test = Edit1->Text.ToInt();
    ShowMessage("To jest liczba");     
} catch(EConvertError &er) {
    ShowMessage("To nie jest liczba");
}
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Sprawdzenie czy zmienna to liczba

Postprzez Bert1223 » sobota, 20 lutego 2010, 12:42

Ogólnie działa, problemem jest używanie 'backspace', który jest nie aktywny przu użyciu tego kodu:
Kod: Zaznacz cały
if(!strchr("0123456789", Key)) Key = 0;
Avatar użytkownika
Bert1223
Bladawiec
Bladawiec
 
Posty: 45
Dołączył(a): czwartek, 15 października 2009, 02:41
Podziękował : 6
Otrzymał podziękowań: 0
    Windows 7Chrome

Re: Sprawdzenie czy zmienna to liczba

Postprzez polymorphism » sobota, 20 lutego 2010, 12:51

No to trzeba trochę pomyśleć i problem z głowy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Sprawdzenie czy zmienna to liczba

Postprzez Cyfrowy Baron » sobota, 20 lutego 2010, 14:08

BACKSPACE = VK_BACK

Kod: Zaznacz cały
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
  if(!strchr("0123456789", Key) && Key != VK_BACK) Key = 0;   
}
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości