mcgyver86 (Normal User)
Newbie
Messaggi: 6
Iscritto: 15/10/2010
|
Salve a tutti, vorrei un'informazione. Come da titolo, sto cercando di sostituire gli zeri in una textbox con dei numeri (in base agli zeri) e visualizzare il risultato in un'altra textbox.
So di non essere stato molto esaustivo, quindi faccio un esempio:
Ho 2 text, nella prima scrivo il numero 10000, nella seconda voglio che mi appaia 103 (10 con 3 zeri)
Vi chiedo: è possibile?
Avevo pensato di utilizzare 3 text dove nelle prima metti 2 cifre e nella seconda metti gli zeri, però non mi sembra tanto bello..
P.S.= mi sono appena avvicinato al vb6 quindi non sono una cima!
Grazie in anticipo a tutti!
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
il codice va scritto nell'evento change della textbox:
Codice sorgente - presumibilmente VB.NET |
Private Sub Text1_Change() If Len(Text1.Text) >= 2 Then Text2.SetFocus 'porto il cursore sull'altra textbox End If End Sub
|
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
Non ho capito tanto bene la tua richiesta.
Inseriamo una cifra in una textbox(es. 10.000) nella seconda textbox dovrà comparire secondo l'esempio 103, dove 10 sta per la base e 3 sarebbero il numero degli zeri davanti??
Prova così poi lo commentiamo perchè ora devo scappare.
Codice sorgente - presumibilmente VB.NET |
Dim c As String Dim a As String Dim pos As Integer Dim i As Integer Dim count As Integer count = 0 i = 0 c = Text1.Text a = c pos = InStr(1, c, "0") 'posizione del primo zero i = InStrRev(a, "0") While (i > pos) 'fin quando non arrivo alla posizione dello zero iniziale i = InStrRev(a, "0") 'ottengo la posizione dell'ultimo zero a = Left(a, i - 1) 'elimino l'ultimo zero count = count + 1 Wend count = count - 1 Text2.Text = Left(c, pos) + CStr(count)
|
|
|
mcgyver86 (Normal User)
Newbie
Messaggi: 6
Iscritto: 15/10/2010
|
ci credi se ti dico che non ho capito una mazza??
grazie mille per la risposta, provo a studiarla!
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
inizialmente inserisco nella variabile stringa c il contenuto di ciò che è stato scritto nella textbox(text1.text) e salvo questo valore anche nella variabile a.
Facciamo l'esempio che io inserisca nella textbox il valore 10000 cm di esempio, quindi la viariabile c = "10000" e anche la variabile a = "10000".
Codice sorgente - presumibilmente Visual Basic 6 |
pos = InStr(1, c, "0") 'posizione del primo zero
|
la funzione instr ti dice la posizione della prima stringa "0" nel nostro caso nella stringa c. Cioè a che posizione si trova il primo zero?? nel nostro caso posizione 2(1 0000) quello in grassetto è il primo zero trovato nella stringa e si trova in pos 2, e ci salviamo questa posizione nella variabile pos.
Codice sorgente - presumibilmente Plain Text |
'i = InStrRev(a, "0")
i = InStrRev(c, "0")
|
la funzione instrrev ritorna la posizione dell' ultimo "0" nella stringa e salva la posizione in i, nel nostro caso (1000 0 posizione 5 e la variaibile i vale 5).
Codice sorgente - presumibilmente Visual Basic 6 |
While (i > pos) 'fin quando non arrivo alla posizione dello zero iniziale
i = InStrRev(a, "0") 'ottengo la posizione dell'ultimo zero
a = Left(a, i - 1) 'elimino l'ultimo zero
count = count + 1
Wend
|
adesso facciamo un ciclo fin quando l'ultimo carattere della stringa non coincide con il primo 0 della stringa (while i>pos), e nel ciclo andrò a leggere sempre la posizione dell'ultimo zero e ad "accorciare" la nostra stringa.
La prima volta che entro nel ciclo avrò
i = InStrRev(a, "0") essendo a = "10000" l'ultima posizione dello zero è al valore 5 quindi i è uguale a 5
a = Left(a, i - 1) sto "accorciando la nostra stringa, sto eliminando l'ultimo carattere quindi l'ultimo "0". sto dicendo che a deve essere uguale alla parte sinistra di a di una lunghezza pari a i-1(la lunghezza totale della stringa meno 1)
e dopo incremento count che mi conta il numero di zeri trovati.
Questo codice andrebbe messo in un command button.
Spero di essere stato chiaro |
|
mcgyver86 (Normal User)
Newbie
Messaggi: 6
Iscritto: 15/10/2010
|
Chiaro?? sei stato chiarissimo
Grazie mille veramente, ora capisco!!
ora un altra domanda, se hai voglia di rispondere.
ho 2 textbox, vorrei che quando la textbox1 raggiunge 2 caratteri, il cursore si sposti automaticamente alla textbox2
avevo pensato ad un costrutto if:
Codice sorgente - presumibilmente VB.NET |
dim c as string c=text1 if len(c) =2 then ......................
|
non so cosa mettere dopo il then
grazie mille!
|
|
mcgyver86 (Normal User)
Newbie
Messaggi: 6
Iscritto: 15/10/2010
|
grazie mille!!
sei stato veramente gentile!
a presto!!
|
|
mcgyver86 (Normal User)
Newbie
Messaggi: 6
Iscritto: 15/10/2010
|
vi disturbo ancora perchè non mi torna una cosa...
finchè utilizzo un numero in cui il secondo carattere è uno 0 tutto ok, ma se invece scrivo 87000 come risultato non ottengo 873 ma 8702.
grazie in anticipo!
|
|
mcgyver86 (Normal User)
Newbie
Messaggi: 6
Iscritto: 15/10/2010
|
volevo solo dire che ho risolto utilizzando tre textbox in cui, nella prima inserisco le prime 2 cifre, poi il cursore si sposta sulla text2 e qui inserisco gli zeri.. a questo punto, alla pressione di un command, sulla text3 mi ritrovo il contenuto della text1 + il numero di caratteri presenti nella text2.
es:
Codice sorgente - presumibilmente VB.NET |
Private Sub Command1_Click() Text3 = Text1 & Len(Text2) End Sub Private Sub Text1_Change() If Len(Text1) = 2 Then Text2.SetFocus End If End Sub
|
Questa è la soluzione che ho trovato io, ma sicuramente ci sarà qualche modo più elegante per farlo.
Ho scritto la mia soluzione perchè magari potrebbe tornare utile a qualcuno.
Grazie a tutti
|
|