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 - select case
Forum - Visual Basic 6 - select case

Avatar
mario54 (Normal User)
Newbie


Messaggi: 4
Iscritto: 06/06/2009

Segnala al moderatore
Postato alle 18:33
Sabato, 06/06/2009
chiedo scusa sono nuovo del forum
stò iniziando a programmare in visual basic e vorrei realizzare un programma che converta un numero decimale in esadecimale le varie funzioni per i calcoli le ho già realizzate ma non riesco a visualizzare nella testbox le lettere corrispondenti ai vari numeri come posso fare utilizzando il select case???
grazie anticipatamente

Ultima modifica effettuata da mario54 il 06/06/2009 alle 18:35
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 18:36
Sabato, 06/06/2009
non c'è bisogno basta usare la funzione hex()...

PM Quote
Avatar
mario54 (Normal User)
Newbie


Messaggi: 4
Iscritto: 06/06/2009

Segnala al moderatore
Postato alle 18:58
Sabato, 06/06/2009
si ma purtroppo debbo utilizzare per forza il select case quindi come posso fare?

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 19:13
Sabato, 06/06/2009
Testo quotato

Postato originariamente da mario54:

si ma purtroppo debbo utilizzare per forza il select case quindi come posso fare?


Sarò stupido ma non ho capito che devi fare. Cioè cosa devi fare con il select case? Hai detto che hai già scritto le funzioni per i calcoli, allora che ti manca?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:58
Sabato, 06/06/2009
Forse, se mostri il codice che hai scritto, si capisce il perche' vuoi usare la Select ...

PM Quote
Avatar
mario54 (Normal User)
Newbie


Messaggi: 4
Iscritto: 06/06/2009

Segnala al moderatore
Postato alle 11:24
Domenica, 07/06/2009
Dim V(1000) As String
Dim i As Integer
i = 0
num = Val(Text1.Text)
Do
v(i) = num Mod 16
num = num \ 16
If num > 9 Then
qui devo mettere il select case perchè se il numero supera il nove nella numerazione esadecimale ci sono le lettere
i = i + 1
Loop While num <> 0

Ultima modifica effettuata da mario54 il 07/06/2009 alle 11:25
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:36
Domenica, 07/06/2009
Come pensavo la Select Case non c'entra ...

In quale parte del codice restituisci il valore finale in esadecimale ?

Ultima modifica effettuata da theprogrammer il 07/06/2009 alle 11:37
PM Quote
Avatar
mario54 (Normal User)
Newbie


Messaggi: 4
Iscritto: 06/06/2009

Segnala al moderatore
Postato alle 11:45
Domenica, 07/06/2009
il prorgamma così facendo mi effettua la divisione ma mi ritorna ad un numero poi ho fatto un ciclo per la visualizzazione perchè come saprete il numero va letto al contrario
For j = i - 1 To 0 Step -1
Text3.Text = Text3.Text + (v(i))
Next

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:59
Domenica, 07/06/2009
No ... mario, ricominciamo ...

Intanto non e' necessario un array di 1000 stringhe (quel V(1000) ...) ma una sola stringa per il risultato ... e ti consiglio di dichiarare tutte le variabili che userai.

Ad esempio, num non e' dichiarata ... fallo ...

Dim Res As String  ' per il risultato
Dim Num As Long    ' il numero da convertire

Poi, utilizza una variabile per il valore di ogni singola cifra durante la conversione

Dim Digit As Byte  ' cifra corrente convertita

Considera che i valori dovranno essere solamente corretti se sono >9 (sfruttando il codice ASCII) e dovranno essere aggiunti alla stringa risultato a sinistra ...

In pratica, il codice diventa ...

Codice sorgente - presumibilmente VB.NET

  1. Dim Res As String
  2.     Dim Num As Long
  3.     Dim Digit As Byte
  4.    
  5.     Num = Val(Text1.Text)
  6.    
  7.     Do
  8.         Digit = Num Mod 16
  9.         Num = Num \ 16
  10.    
  11.         If Digit > 9 Then Digit = Digit + 7
  12.        
  13.         Res = Chr(Digit + 48) & Res
  14.     Loop While Num <> 0
  15.  
  16.     Print Res



Ovviamente, alla fine ho visualizzato il risultato con una Print ... tu potrai fare quello che vuoi con la variabile Res ...

PM Quote