|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2003
Città: Torino
Messaggi: 319
|
VB - Inserimento Dati
Ciao
Va bene utilizzare "TextBox" per fare inserimento dati da parte dell'utente? Vorrei inserire un numero, però, se inserisco una lettera (o un numero troppo grande), il programma giustamente va in crash. Grazie ciao |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
La textbox va bene.
Per convertire una stringa in un numero puoi utilizzare diverse funzioni. "Val" ad esempio data una stringa alfanumerica ti restituisce solo le cifre. Una cosa più accurata la puoi ottenere con le funzioni di conversione tipo (cbyte, cInt, cLng, ecc...) in quanto se l'espressione passata come parametro non è inclusa nell'intervallo di validità (ad esempio, cByte accetta valori da 0 a 255, cInt da -32768 a +32767 e così via) viene generato un errore intercettabile con il noto "on error goto" e quindi gestibile. Una soluzione + raffinata ancora può essere il gestire l'evento keypressed associato alla textbox, nel quale viene fatto un filtraggio dei tasti premuti in modo da evitare la pressione di quelli non numerici. Inoltre si può fare un controllo sulla lunghezza della stringa in modo tale da evitare che il valore inserito sia eccessivamente grande. La soluzione più semplice resta cmq l'uso delle funzioni di conversione tipo ![]() Aloha!
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2003
Città: Torino
Messaggi: 319
|
grazie
![]() allora: 1- ho provato la prima soluzione e mi pare di aver capito dalle mie prove, che se ad esempio scrivo "123adc", mi restituisce "123". Se però scrivo "1s23f", mi restituisce "1". 2- La seconda mi funziona se non metto alcuna lettera. Se metto qualche carattere si imbestialisce ![]() ![]() 3- Ho cercato un pò nella guida "keypressed" associato al textbox, ma ancora nulla. Ho trovato keypressed con java.... |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
L'evento è keypress...non keypressed come ti avevo erroneamente scritto
![]() Per la gestione dell'errore...esempio: Codice:
private sub esempio() on error goto errore dim b as byte dim s as string s = "123c" b = cByte(s) exit sub errore: msbox("errore stringa non numerica") end sub Cerca nella guida la voce "on error" per vedere come gestire i vari casi... Aloha!
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
perchè non filtrare tutti i caratteri che non sono nel intervallo 0..9 mentre sono digitati nella textbox. se non sbaglio al evento keypress viene dato in pasto anche il codice del tasto che è stato premuto nella variabile KeyCode. ora con un semplice if controlli se il codice è un numero altrimenti lo poni uguale a 0 cosi non verra inserito.
ciao ![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Quote:
![]() Tuttavia, io credo che usare l'uno o l'altro metodo dipenda da come si voglia gestire la cosa. Filtrare i tasti = impedire all'utente di inserire valori potenzialmente dannosi. C'è da dire che a seconda delle esigenze, filtrare i tasti non vuol dire cavarsela con un semplice if...se ci sono numeri troppo grandi? se ci sono numeri con la virgola (filtrare anche il tasto "." ma stando attenti a non premerlo due volte...)? la casisitica non è enorme ma ci sono tante piccole cose da guardare. Usare le funzioni di conversione = permettere all'utente di inserire valori errati, ma si può gestire il tutto molto semplicemente. Però filtrare i tasti è molto + fico ![]() Aloha!
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jun 2003
Città: Torino
Messaggi: 319
|
grazie. adesso funziona
![]() Vi chiedo un'altra cosa: Ho fatto una media tra diversi numeri e ho visualizzato il risultato su una label. Visualizzarlo lo vosualizza giusto, però solo numeri interi. Come devo fare per visualizzare anche la virgola? La mia variabile "media" l'ho assegnata come Double. grazie |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:46.