[ MatezYU @ 09.03.2006. 06:24 ] @
| Trebalo bi da sa maskedit polja koje sam ogranicio na 13 polja maksimalno ucitam JMBG broj koji je integer. Tj pretvaram string od 13 karaktera u pojedinacne brojeve i onda pomocu formule proveravam ispravnost. Sve to radi lepo jedino kada ne unesem do kraja broj, tj. ostane blanko mesta u toj masci izbaci mi poruku da ne moze da konvertuje " " polje u integer... Kako bih mogao da izbegnem tu gresku i da mi se izbaci upozorenje da se unese do kraja ceo broj? |
[ Srki_82 @ 09.03.2006. 07:12 ] @
Imas nekoliko funkcija za prevodjenje stringa u broj.
StrToInt prevodi string u broj, a ako se u stringu nalazi neki karakter koji se ne moze prevesti u broj javlja se exception. Mozes uz pomoc try except bloka da, umesto standardne poruke o gresci, ispises neku svoju.
StrToIntDef prevodi string u broj, a u slucaju greske broj koji vraca ima Default vrednost koju navedes prilikom pozivanja funkcije. Default vrednost mozes staviti na npr. -1. Kada se funkcija zavrsi, proveris rezultet i ako je -1 znaci da je doslo do greske.
TryStrToInt prevodi string u broj (promenljiva u kojoj treba da je rezultat se daje kao parametar) i vraca True ili False u zavisnosti da li je operacija uspela. Ako vrati False znaci da nije.
Nadam se da je pomoglo... i pogledaj help pre nego sto pitas jer tamo sve lepo pise.
[ MatezYU @ 09.03.2006. 13:55 ] @
Hvala ti puno!!!
[ MatezYU @ 09.03.2006. 16:21 ] @
Probao sam onu prvu i drugu varijantu i ne radi opet... Izbaci mi istu
gresku...
Probao sam ovako:
try
broj:=strtoint(maskedit1.Text);
except
on exception do
halt;
end;
Primera radi samo da stane program ali nece... Stalno to predje i
izbaci gresku...
[ Srki_82 @ 09.03.2006. 16:57 ] @
Ne znam sta da ti kazem, ali meni ovo radi
Code: try
I := StrToInt('Proba');
except
Greska;
end;
I := StrToIntDef('Proba', -1);
if I = -1 then
Greska;
if not TryStrToInt('Proba', I) then
Greska;
Sva tri nacina lepo rade.
[ martinj @ 09.03.2006. 20:13 ] @
u OnExit event za edit postavi proveru da li je duzina edit.text = 13 i ako nije nemoj da pozivas metodu za validaciju.
A da bi sprecio da se unose drugi znaci osim brojeva, postavi u onKeyDown (ili onKeyPress, ne znam tacno koja od njih ima char za parametar) nesto slicno ovome
if Key not in [1, 2, 3, ...] then MessageBox('greska, ovde je moguce uneti samo broj')
To bi trebalo da ti smanji muke oko validacije...
[ martinj @ 09.03.2006. 20:15 ] @
edit: dupli post
[Ovu poruku je menjao martinj dana 09.03.2006. u 21:16 GMT+1]
[ MatezYU @ 09.03.2006. 20:36 ] @
Ok, hvala ti puno!
Problem je bio sto je kod maskedit-a bilo:
maskedit1.editmask:�99999999999; a treba
maskedit1.editmask:=!9999999999999;
nije bilo znaka uzvika ali kada sam to stavio proradilo je. Nemam
pojma za cega ce taj znak uzvicnika ali sada radi...
Hvala ti!
[ Toyo @ 13.03.2006. 17:05 ] @
A kako ti mislis da string od 13 polja pretvaras u int64 koji je maksimalne duzine 10 polja, ili 9 ako je prva cifra veca od 2?
[ ivanho @ 13.03.2006. 17:56 ] @
Citat: Toyo: A kako ti mislis da string od 13 polja pretvaras u int64 koji je maksimalne duzine 10 polja, ili 9 ako je prva cifra veca od 2?
Int64 ima opseg –2^63 do 2^63–1 sto je vece od 10 cifara (mislim da ima 19)
To o cemu ti pises je LongInt...
[ Shadow Warrior @ 13.03.2006. 20:47 ] @
ovaj, ja imam slican problem.
hocu da pretvorim real u string (i obrnuto), delphi mi javlja da RealToStr ne postoji, moze li se ovo?
hvala
[ ivanho @ 13.03.2006. 21:19 ] @
real u string:
pogledaj u helpu sledece funkcije (sve rade ono sto hoces):
FloatToStr
FloatToStrF
FomatFloat
FloatToText
obrnuto:
StrToFloat
StrToFloatDef
[ Shadow Warrior @ 14.03.2006. 11:24 ] @
ok thankz!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|