[ Crazy shadow @ 09.01.2008. 15:47 ] @
Napravio sam jednostavan kalkulator.Ali imam problem pri deljenju sa nuom stalno mi izlazi eror.
Pokusao sam da ga resim tako sto sam stavio svoju poruku da ne moze da se deli sa nulom.
Ali nisam uspeo da izbegnem taj eror.
Dali ima neko ideju kako to da zaobidjem.
Evo pogledajte projekat.
[ Aleksandar Ružičić @ 09.01.2008. 16:07 ] @
samo dodaj Exit Sub posle msgbox-a
Code:

If b = 0 Then
   MsgBox ("Nemoze da se deli sa nulom!!"), , "Obavestenje"
   exit sub
End If
[ Crazy shadow @ 09.01.2008. 16:27 ] @
Kako mogu jos da ogranicim da nemogu da unosim slova.Kad unesem slova on ih racuna kao nulu.
[ Aleksandar Ružičić @ 09.01.2008. 17:34 ] @
pretrazi forum bilo je o tome vise puta...
[ steve585 @ 09.01.2008. 19:45 ] @
Evo primjer za unos brojeva

Code:

Private Sub txtBroj_KeyPress(KeyAscii As Integer)
strValid = "0123456789"
If KeyAscii > 26 Then
If InStr(strValid, Chr(KeyAscii)) = 0 Then
 KeyAscii = 0
End If
End If
End Sub
[ Crazy shadow @ 09.01.2008. 23:43 ] @
@steve585
jel bi mogo malo da mi objasnis ovaj kod.Od skori ucim VB pa ne razumem bas ovo sto si mi dao.
Jel bi mogo prakticno da mi pokazes neki prost primer?
Unapred hvala.
[ Eurora3D Team @ 10.01.2008. 12:39 ] @
Evo ti objasnjenje za kod koji je postavio @ @steve585
Inace kod je odlican i jednostavan.
Subrutina se izvrsava kad se pritisne taster na tastaturi.
Prvo je deklarisan string "0123456789" u kojem su svi znakovi koje dozvoljavamo.
InStr fn proverava dali neki substring postoji u stringu i vraca poziciju ili nulu ako ne postoji.
KeyAscii je Ascii vrednost pritisnutog tastera. (npr A=65) a Chr pretvara taj broj u znak (Chr(65)="A")
Code:

InStr(strValid, Chr(KeyAscii)) = 0 Then KeyAscii = 0

Ova linija znaci "Ako pritisnuti taster nije jedan od 0,1,2,3,4,5,6,7,8,9 onda ponisti akciju"
Kada se KeyAscii postavi na 0 onda se nista ne desava (kao da nije ni pritisnut taster)

Code:

If KeyAscii > 26 Then

Proveravamo samo za KeyAscii vece od 26
Pozdrav
[ Crazy shadow @ 10.01.2008. 13:44 ] @
Hvala.
Sad razumem.
[ Aleksandar Ružičić @ 10.01.2008. 15:28 ] @
samo sto taj kod ne dozvoljava upis decimalnih brojeva, al dobro, da ne trazimo dlaku u jajetu :)
[ Eurora3D Team @ 10.01.2008. 16:28 ] @
Citat:
Aleksandar Ružičić: samo sto taj kod ne dozvoljava upis decimalnih brojeva, al dobro, da ne trazimo dlaku u jajetu


Pa jeste ali posto je dobro zamisljen moze da se stavi
Code:

strValid = "0123456789."

ili
Code:

strValid = "0123456789,"

zavisno od jezickih podesavanja (a moze i strValid = "0123456789.,"

[ Aleksandar Ružičić @ 10.01.2008. 17:38 ] @
pa ne mozes jednostavno da dodas zarez (ili tacku) u strValid jer ce ti tako dozvoliti da recimo uneses 123.456.789.00.1 sto nije validno, moze umesto InStr i strValid moze da se koristi IsNumeric, tj ovaj deo:
Code:

If InStr(strValid, Chr(KeyAscii)) = 0 Then
 KeyAscii = 0
End If

moze da se zameni sa:
Code:

If Not IsNumeric(txtBroj.Text & Chr(KeyAscii)) Then
  KeyAscii = 0
End If
[ Shadowed @ 10.01.2008. 18:17 ] @
Ili nadj'te neki vec uradjeni regexp i.. htedoh reci nema glava da boli, al' tek onda pocinje :]
[ Aleksandar Ružičić @ 10.01.2008. 18:23 ] @
dobro, ajde reci da .NET ima ugradjeni regexp a da vb6 nema, slobodno... :)
[ Shadowed @ 10.01.2008. 19:11 ] @
Ima, tj. postoji u Framework-u, ali nisam to hteo reci. Mislio sam da pronadje na netu gotovu klasu/stagod za VB6 i da je koristi za ovo a glavobolja kad krene mentalna gimnastika sa regexp-om.
[ steve585 @ 10.01.2008. 20:03 ] @
U skladu sa gore navedenim, ukoliko zelimo dozvoliti unos i decimalnih vrijednosti prvobitni kod bi trebalo doraditi, te bi dobili:

Code:

Private Sub txtBroj_KeyPress(KeyAscii As Integer)
strValid = "0123456789.,"
If KeyAscii > 26 Then
If Not IsNumeric(txtBroj.Text & Chr(KeyAscii)) Then
  KeyAscii = 0
End If
End If
End Sub


10 bodova
[ Aleksandar Ružičić @ 10.01.2008. 20:22 ] @
Citat:
Shadowed: Ima, tj. postoji u Framework-u, ali nisam to hteo reci. Mislio sam da pronadje na netu gotovu klasu/stagod za VB6 i da je koristi za ovo a glavobolja kad krene mentalna gimnastika sa regexp-om.


pa ne vidim neku gimnastiku za ovakav regexp, trebalo bi nesto ovako da resi problem: /^[0-9]*(\.[0-9]+)?$/g

ili malo egzoticnije resenje: /^([0-9]*\.[0-9]+(e[+-]?[0-9]+)?)|([0-9]+e[+-]?[0-9]+)$/gi

inace ovaj drugi regexp koristim veoma cesto
[ Shadowed @ 10.01.2008. 20:35 ] @
A onom ko se prvi pu srece sa tim? I jos mu je VB prvi (jedini) jezik a ono polu-english pa kad vidi tu kriptiku :)
[ Aleksandar Ružičić @ 10.01.2008. 20:45 ] @
pa dobro, upravu si. secam se svoje reakcije kad sam prvi put video neki regexp :)

al, eto meni teme za tutorijal ;)
[ steve585 @ 10.01.2008. 20:52 ] @
Nikad vidio nesto slicno. Kako ovo razmislja?
[ Aleksandar Ružičić @ 10.01.2008. 22:01 ] @
http://en.wikipedia.org/wiki/Regular_expression
http://www.regular-expressions.info/