Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Sostituire zeri in una textbox
Forum - Visual Basic 6 - Sostituire zeri in una textbox

Avatar
mcgyver86 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/10/2010

Segnala al moderatore
Postato alle 15:54
Venerdì, 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!

PM
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 17:38
Venerdì, 15/10/2010
il codice va scritto nell'evento change della textbox:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Text1_Change()
  2. If Len(Text1.Text) >= 2 Then
  3.     Text2.SetFocus 'porto il cursore sull'altra textbox
  4. End If
  5. End Sub


PM
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 16:14
Venerdì, 15/10/2010
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

  1. Dim c As String
  2. Dim a As String
  3. Dim pos As Integer
  4. Dim i As Integer
  5. Dim count As Integer
  6.  
  7. count = 0
  8. i = 0
  9. c = Text1.Text
  10. a = c
  11.  
  12. pos = InStr(1, c, "0")  'posizione del primo zero
  13. i = InStrRev(a, "0")
  14.  
  15. While (i > pos)             'fin quando non arrivo alla posizione dello zero iniziale
  16.     i = InStrRev(a, "0")    'ottengo la posizione dell'ultimo zero
  17.     a = Left(a, i - 1)      'elimino l'ultimo zero
  18.     count = count + 1
  19. Wend
  20.  
  21. count = count - 1
  22. Text2.Text = Left(c, pos) + CStr(count)


PM
Avatar
mcgyver86 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:26
Venerdì, 15/10/2010
ci credi se ti dico che non ho capito una mazza??:d:d
grazie mille per la risposta, provo a studiarla!

PM
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 16:48
Venerdì, 15/10/2010
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

  1. 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(10000) 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

  1. 'i = InStrRev(a, "0")
  2. i = InStrRev(c, "0")



la funzione instrrev ritorna la posizione dell'ultimo "0" nella stringa e salva la posizione in i, nel nostro caso (10000 posizione 5 e la variaibile i vale 5).

Codice sorgente - presumibilmente Visual Basic 6

  1. While (i > pos)             'fin quando non arrivo alla posizione dello zero iniziale
  2.     i = InStrRev(a, "0")    'ottengo la posizione dell'ultimo zero
  3.     a = Left(a, i - 1)      'elimino l'ultimo zero
  4.     count = count + 1
  5. 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

PM
Avatar
mcgyver86 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 17:04
Venerdì, 15/10/2010
:hail::hail::hail::hail::hail::hail::hail:

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

  1. dim c as string
  2. c=text1
  3. if len(c) =2 then
  4. ......................



non so cosa mettere dopo il then :-?:-?

grazie mille!

PM
Avatar
mcgyver86 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:21
Venerdì, 15/10/2010
grazie mille!!

sei stato veramente gentile!

a presto!!

PM
Avatar
mcgyver86 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:53
Venerdì, 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!

PM
Avatar
mcgyver86 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 23:29
Venerdì, 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

  1. Private Sub Command1_Click()
  2. Text3 = Text1 & Len(Text2)
  3. End Sub
  4.  
  5. Private Sub Text1_Change()
  6. If Len(Text1) = 2 Then
  7. Text2.SetFocus
  8. End If
  9.  
  10. 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

PM