• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zabezpieczyc program zeby sie nie sypal bo zle wprowadzonnej zmiennej

VPS Starter Arubacloud
0 głosów
319 wizyt
pytanie zadane 19 września 2015 w Inne języki przez danielek110795 Użytkownik (820 p.)
Witam.

Chciałbym sie dowiedziec jak zabezpieczyc program zeby sie nie sypal gdy zle wprowadze zmienna. Np. chce wprowadzic zmienna, niech bedzie integer. Gdy wpisze zamiat liczby jakas litere lub ciag znakow program sie posypie. Jak zrobic aby się tak nie dzialo? Znalazłem w necie cos o funckji val ale nie bylo to dla mnie do konca zrozumiale wiec mam nadzieje ze pomozecie. I czy ta sama zasada dziala w drugą strone? Jesli chce wprowadzic stringa a wpisze liczbe to rowniez da sie to zabezpieczyc?

4 odpowiedzi

+2 głosów
odpowiedź 19 września 2015 przez Rogargol Pasjonat (16,600 p.)
String przechowuje ogolnie znaki, obojetnie czy to cyfry czy litery czy znaki funkcyjne itp, wiec nie bardzo rozumiem ostatnie pytanie.

Ja zawsze lubilem w programowaniu to, ze mozna samemu rozwiazywac problemy na swoj sposob. Jakby Ci sie chcialo, to zawsze moglbys stworzyc swoja funkcje ktora odpowiadalaby za pobieranie pojedynczych znakow z klawiatury, a pozniej odpowiednie nimi zarzadzanie.

Nie wiem jak to jest w delphi, ale w C++ uzywajac bardziej zaawansowanych bibliotek, sa gotowe rozwiazania do takich zagadnien. Np w Qt wystarczyloby wczytywac z klawiatury do zmiennej typu QString a pozniej uzywajac funkcji z klasy QString toInt() przerabiac na integer.
komentarz 19 września 2015 przez danielek110795 Użytkownik (820 p.)

MAsz racje. Drugie pytanie bez sensu zadalem. Bardziej chodzilo mi wlasnie o wykorzystanie funkcji val bo czesto pisza ze to jest wykorzystywane.

 

var
  i:integer;
  a:integer;
begin
  repeat
    write('Podaj liczbe: ');
    {$I-}
    readln(a);
    {$I+}
    i := ioresult;
    if i<>0 then
      writeln('To nie jest liczba');
  until i=0;
  writeln('Podales: ',a);
end.

Znalazlem jeszcze cos takiego. Ale nie rozumiem tych 4 linijek pod write'Podaj liczbe'. A nie ma sensu sie uczyc na pamiec jak sie nie rozumie. Mogłbys mi wyjasnic te linjiki?

    {$I-}
    readln(a);
    {$I+}
    i := ioresult;

komentarz 19 września 2015 przez Rogargol Pasjonat (16,600 p.)
Niestety kolego nie pomogę Ci, bo to nie moj język, a na telefonie nie bardzo chce mi sie sprawdzać co to moze byc :/
0 głosów
odpowiedź 19 września 2015 przez Boshi VIP (100,240 p.)
Wyklucz wpisywanie innych znaków jak liczby...  W pętli z warunkiem.
0 głosów
odpowiedź 19 września 2015 przez Muminek Dyskutant (8,650 p.)

W notatkach znalazłem, kiedyś P. Mirosław przedstawił coś takiego, nie pamiętam z jakiego odcinka.

int nr_miesiaca;
if (!(cin >> nr_miesiaca)) zwraca, false gdy nie jest to liczba.
{ cerr (konsola błedów) << „To nie jest liczba”; }

Może to Cie jakoś nakieruję, pomoże :)

~ Sorki, po odpowiedzi zwróciłem uwagę dopiero, że nie chodzi o C++.

0 głosów
odpowiedź 23 listopada 2015 przez Int_main Bywalec (2,850 p.)

Do tego celu możesz wykorzystać funkcję TryStrToInt(zmienna_string,zmienna_int). Poniżej wkleję Ci przykład procedury z zastosowaniem tejże funkcji. ;)
 

procedure Podaj_n;
begin
  while not TryStrToInt(n_str, n) do
  begin
  Write('Podaj liczbe naturalna: ');
  Readln(n_str);
  if TryStrToInt(n_str,n) then Writeln('Podane n wynosi: ', n)
  else Writeln('Podano nieprawidlowa wartosc: ');
  end;
  end;          



 

Podobne pytania

+1 głos
1 odpowiedź 213 wizyt
pytanie zadane 10 października 2015 w Inne języki przez Headhunter Gaduła (4,450 p.)
0 głosów
2 odpowiedzi 7,602 wizyt
pytanie zadane 10 października 2015 w Inne języki przez Headhunter Gaduła (4,450 p.)
0 głosów
0 odpowiedzi 271 wizyt
pytanie zadane 11 kwietnia 2022 w Inne języki przez julka1605 Nowicjusz (120 p.)

93,020 zapytań

141,985 odpowiedzi

321,287 komentarzy

62,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...