Autore Topic: [Risolto]litigando con isnumber()  (Letto 905 volte)

Offline RiCi12

  • Gamberetto
  • *
  • Post: 46
    • Mostra profilo
    • http://rici12.altervista.org
[Risolto]litigando con isnumber()
« il: 02 Luglio 2009, 14:29:49 »
Eccomi ritornato dalle vacanze, ed eccomi, di nuovo, a litigare con isnumber, una cavolo di funzione che è da un po' che mi innervosisce.

Allora, io vorrei far controllare al mio programma se ciò che è scritto in una textbox è un numero, oppure altro. Ecco cosa avevo pensato.

Codice: [Seleziona]
dim ciao as string
dim prova as boolean
ciao = textbox1.text
prova = isnumber(ciao)
print message (prova)


Teoricamente, così dovrebbe funzionare. Ma nella pratica neanche l'ombra.

Se metto manulamente un numvero al posto di ciao (= isnumber(3)), mi appare una finestra con una bella T. Se invece lascio così, qualunque valore assuma ciao (un 9, oppure tre), la finestrella è sempre vuota.

Qualche idea?

Grazie, ciao

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: litigando con isnumber()
« Risposta #1 il: 02 Luglio 2009, 18:17:07 »
Devi fare così:

Codice: [Seleziona]

dim ciao as string
dim prova as boolean
ciao = textbox1.text
prova = isnumber(value(ciao))
print message (prova)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: litigando con isnumber()
« Risposta #2 il: 02 Luglio 2009, 18:21:09 »
prova = IsNumber(Value(ciao))

Ooops!
Scusa Ceskho non avevo visto la tua risposta.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: litigando con isnumber()
« Risposta #3 il: 02 Luglio 2009, 18:44:01 »
@ RiCi12

Posso darti un consiglio? Molto spesso quando si programma si da per scontato che la memoria di un computer sia infinita. Certo, per chi magari scrive programmi che richiedono poca memoria il problema della stessa non sussiste, però cosa accadrebbe se programmatori del calibro di quelli di Firefox o OpenOffice si mettessero a dichiarare più variabili di quante in realtà ne servano?

Sarebbe buona norma alle volte ottimizzare il codice magari rinunciando un pochetto alla leggibilità.

Ciò che hai fatto tu può essere riassunto in un solo passaggio

Codice: [Seleziona]
print message (isnumber(value(textbox1.text)))



All'università iniziano a farti pensare anche in questi termini e tutto sommato non è una brutta cosa...

@ tornu

figurati...

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: litigando con isnumber()
« Risposta #4 il: 02 Luglio 2009, 19:24:29 »
Scusate, avete dato la soluzione (peraltro sbagliata :-) ) senza spiegare il perché.
TextBox1.Text è sempre una stringa. Per questo IsNumber ti ritorna
sempre lo stesso risultato sia che tu metta un numero o un testo.
Val()  e non Value() (???) analizza la stringa e se è un numero
restituirà appunto un numero. Ciao.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: litigando con isnumber()
« Risposta #5 il: 02 Luglio 2009, 19:31:12 »
Scusa...è stato un mio errore nel digitare...Volevo dire Val e non Value. Scusate ma capita!

Offline RiCi12

  • Gamberetto
  • *
  • Post: 46
    • Mostra profilo
    • http://rici12.altervista.org
Re: litigando con isnumber()
« Risposta #6 il: 02 Luglio 2009, 20:34:11 »
grazie mille. In poche parole, dimenticavo il val...

Citazione

Ceskho ha scritto:
@ RiCi12

Posso darti un consiglio? Molto spesso quando si programma si da per scontato che la memoria di un computer sia infinita. Certo, per chi magari scrive programmi che richiedono poca memoria il problema della stessa non sussiste, però cosa accadrebbe se programmatori del calibro di quelli di Firefox o OpenOffice si mettessero a dichiarare più variabili di quante in realtà ne servano?

Sarebbe buona norma alle volte ottimizzare il codice magari rinunciando un pochetto alla leggibilità.

Ciò che hai fatto tu può essere riassunto in un solo passaggio

Codice: [Seleziona]
print message (isnumber(value(textbox1.text)))



All'università iniziano a farti pensare anche in questi termini e tutto sommato non è una brutta cosa...

@ tornu

figurati...


Guarda, la prima votla che scrisi quel pezzo di codice, usai il metodo da te scritto, ovvero nessuna dichiarazione di variabili inutili. Quello che ho trascritto è stato la "2^ versione" del cdice, provata per controllare che il problema non fosse " la cncatenazione" di comandi, ovvero quella scritta da voi..

@giulio: grazie mille per la spiegazione, adesso capisco il perché..Maledetto visual basic.. :-?