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?
Problem sa maskedit i sa pretvaranjem strtoint?!
Zaključano
Zakačeno
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.
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.
Potpis
Hvala ti puno!!!
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...
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...
Ne znam sta da ti kazem, ali meni ovo radi
Sva tri nacina lepo rade.
Code:
try
I := StrToInt('Proba');
except
Greska;
end;
I := StrToIntDef('Proba', -1);
if I = -1 then
Greska;
if not TryStrToInt('Proba', I) then
Greska;
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.
Potpis
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...
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...
izmenjeno 1 put, poslednji put martinj 09.03.2006. u 21:16
Izmene poruke
- martinj09.03.2006. u 21:16zapis iz teksta poruke
edit: dupli post
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!
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!
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?
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...
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
hocu da pretvorim real u string (i obrnuto), delphi mi javlja da RealToStr ne postoji, moze li se ovo?
hvala
real u string:
pogledaj u helpu sledece funkcije (sve rade ono sto hoces):
FloatToStr
FloatToStrF
FomatFloat
FloatToText
obrnuto:
StrToFloat
StrToFloatDef
pogledaj u helpu sledece funkcije (sve rade ono sto hoces):
FloatToStr
FloatToStrF
FomatFloat
FloatToText
obrnuto:
StrToFloat
StrToFloatDef
ok thankz!