Newsgroup: it.comp.lang.visual-basic
Titolo: Text1.Text ? ???

Salve a tutto il NG!
Sono alle prime armi con il VB, ed ho realizzo
un semplice convertitore.
Solo che non riesco a risolvere questo problema:
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Private Sub Text1_Change()
    Dim euro As Double
    Dim lire As Double
        euro = CDbl(Text1.Text)
............
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Durante l'esecuzione del programma, se in Text1.Text
scrivo una stringa, automaticamente
mi dice "Type mismatch" oppure
"Tipo non corrispondente" in VBStudio 6.0.
Vorrei fare in questo modo, ma non è possibile credo:
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
....
If Text1.Text ? Integer Then
MsgBox "Scrivere il valore in euro!"
End If
....
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:C'è un modo per fare come sopra???:
:Se no, come mi consigliate di fare???:
:Grazie 1000 a tutti coloro che risp.!!!:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 If Text1.Text [non uguale] Integer Then


 Vorrei fare in questo modo, ma non è possibile credo:
Cerca sulla guida Err, On error resume next, on error goto...
Ciao
--
Timothy Redaelli
Ricorda l'F1 è il tuo migliore amico!!!!!

 mi dice "Type mismatch"
prova con la funzione isnumeric(espr) che ti restituisce vero se
espr è un numero altrimenti falso.

Scrivi anche qualcosa per gestire il punto, la virgola, i punti di
separazione delle migliaia, ecc...
Ad es:
123.456,78 -> 123456.78
123,456.78 -> 123456.78
Alberto

 ha scritto nel messaggio
news:388d8.3153$Ns4.1...@news2.tin.it...


Ciao fray89... ho letto il messaggio che hai postato sul newsgroup in
merito alla realizzazione di un convertitore.
Leggo che hai problemi con TExt1.text...
Bene, CDBL() è una funzione che converte un'espressione in un valore
numerico di tipo a precisione doppia, è quindi naturale che
passandogli una stringa di testo ti restituisca un errore di "Type
mismatch" (Tipo dati non corrispondente). Non si può, infatti,
convertire una testo alfabetico in CDBL.
La soluzione + idonea non è tentare di capire se nella casella di
testo TEXT1 è contenuto un numero o del testo e poi di conseguenza
avvisare l'utente, ma bensì impedire all'utente di scrivere dei
caratteri alfabetici nella casella !! Così non devi perderti in test
!!
Puoi usare l'evento KEYPRESS della TEXT1.
L'evento in questione viene generato alla pressione di un tasto sulla
tastiera, prima che sia effettivamente scritto nella TEXT.
All'interno della SUB TEXT1_KEYPRESS (Keyascii as Integer) trovi
dichiarata la variabile KeyAscii che acquisisce automaticamente il
valore ASCII del tasto che tu hai premuto. Puoi quindi testarne il
valore e, se corrisponde ad un numero, lasciarlo passare mentre, se
corrisponde ad una lettera, puoi annullarlo come se il tasto non fosse
mai stato premuto.
Es:
Private Sub TEXT1_KeyPress(KeyAscii As Integer)
'Impedisce l'inserimento di caratteri non desiderati in un controllo
TEXTBOX
'KeyAscii contiene il valore del tasto appena premuto
'Da 48 a 57 compresi sono i numeri (da 0 a 9)
'8 = BackSpace (bisogna lasciarlo attivo per permettere all'utente di
cancellare eventuali dati errati)
'44 = la virgola
'46 = il punto
 
'Controlla se il tasto premuto è valido (quindi un numero, il
backspace, una virgola o un punto)
 
If (KeyAscii <= 48 Or KeyAscii >= 57) And KeyAscii <> 8 And KeyAscii
<> 44 And KeyAscii <> 46 Then
 
'Se il tasto non è valido annulla la pressione del tasto impostando
KeyAscii = 0
 
KeyAscii = 0
 
'Emette un beep (se vuoi)
 
Beep
 
End If
    'Con una riga tipo <MSGBOX KEYASCII> puoi controllare il valore
ASCII dei tasti
    'per, eventualmente, abilitarne o disabilitarne altri
End Sub
Provalo e fammi sapere se ti piace :)
Salutoni,
Andrea

 ha scritto nel messaggio
news:388d8.3153$Ns4.1...@news2.tin.it...
