peeyack [ Weekend Warrior ]
Turbopascal - prośba o pomoc!
Czesc wszystkim!
Mam nastepujace pytanie - musze uodpornic moj program na bledy potencjalnie tępego uzytkownika, w zwiazku z czym przy wczytywaniu zmiennej chcialbym nalozyc pewne ograniczenia. Chcę wczytac liczbe calkowitą. Ale uzytkownik moze podac litere, liczbe z przecinkiem albo inny znak i wtedy program sie wykrzaczy. Jaki jest sposob na ominiecie tego klopotu? Tzn jakas komenda, zeby sprawdzic, czy wczytany ciag znakow jest liczbą? Ewentualnie odwrotnie, czy wczytany ciag znakow string nie zawiera cyfr i nic spoza liter a - z?
Licze na was
Regis [ ]
moze jakas funkcja isInt() albo cos takiego?
Didier z Rivii [ life 4 sound ]
zrob tak zeby po wpisaniu znaku sprawdzal jego kod ascii i przyjmowal znak tylko wtedy kiedy kod nalezy do przedzialu ktory Ci odpowiada, to jest najprostsze chyba
peeyack [ Weekend Warrior ]
Moze cos wiecej na ten temat chlopaki? Nie kojarze tych polecen, wiec wolalbym namacalny przyklad
Kijano [ Generaďż˝ ]
robisz cos takiego
while (c <> #13) do begin
if( c == 1 or c ==2 )begin
writeln(c);
numer = numer + c;
end;
end;
Val( numer, liczba, integer );
liczba to twoja liczba
Niewiem czy dobrze dawno w Pascalu nie pisalem.
Pascal ma jeszcze b. dobrze rozwiniete omijanie bledow.
peeyack [ Weekend Warrior ]
==>Kijano
Ta '13' to od czego? Kod Ascii? Pdwojne '=' w Pascalu chyba nie wystepuja? Ja sie nie spotkalem w kazdym badz razie. Mozesz jakos wyjasnic to co napisales? Co robi ta funkcja val ?
Co do sprawdzania kodu ASCII to raczej nie wiem, czy przejdzie, zmienna ma byc liczba typu byte, a nie jedna cyfra :-(
peeyack [ Weekend Warrior ]
Moze dzis ktos cos doda?
GADU [ Pretorianin ]
Kijano pomylil troche Pascala z C.
13 to kod ascii entera
w ifie powinny bys pojedyncze znaki rownosci jako porownania (w C podwojne znaji rownosci to porownania a pojedyncze to przypisania. W Pascalu pojedyncze to porownania a := to przypisania o ile dobrze pamietam)
peeyack [ Weekend Warrior ]
powiedzmy mam zmienna ile.W programie jest readln(ile).
Potem mam wpisac ta petle while ile <>#13 do ?
Nie kumam tego co tam porownywac
kastore [ Troll Slayer ]
Jak tu nie zobaczysz to daj maila , wyśle pasa
kastore [ Troll Slayer ]
Program robi coś takiego
1. Zczytuje znak funkcją ReadKey
2. Funkcja Ord sprawdza jego kod. Jak jest dobry dodaje do tymczasowego Stringa
3. Jak naciśniesz Enter , przycisk o kodzie #13 to petla sie konczy
4. Funkcja Val zmienia Stringa na inta. Zmienna Code to tylko kontrola czy jest dobry string, no ale to już wiesz, bo wszystko inne poza cyframi jest filtrowane.
5. WriteLn wypisuje wynik
Kijano [ Generaďż˝ ]
kastore dobrze zrobil. Tak jak ja chcialem ;)
peeyack [ Weekend Warrior ]
Juz sie z nim dogadalem na gg. Dzieki wielkie wszystkim za pomoc.