seconda versione
Function DC(esa) As Long
Dim n, i As Integer
Dim cifra as String
Dim temp as long
decimale = 0
n = Len(esa)
For i = 1 To n
cifra = UCase(Mid(esa, i, 1)) ' estraggo il carattere a peso maggiore
If (InStr("0123456789ABCDEF", cifra) - 1) = -1 Then DC = -5: GoTo ESCI
'se non è un carattere esadecimale la funzione ritorna -5
temp = temp + (InStr("0123456789ABCDEF", cifra) - 1) * 16 ^ (n - i)
Next
DC = temp
ESCI: End Function
1) in teoria si, poi in pratica non possiamo prendere una stringa qualsiasi nel vero senso della parola perchè siamo limitati dalla dimensione della Long...
2)può essere una stringa esadecimale qualunque (nei limiti del punto uno)
3)il valore che restituisce l'ho fatto long per questioni di dimensioni.... in realtà il valore che restituisce questa funzione poi nel codice chiamante va ad essere il terzo argomento della PUT ossia i byte che andiamo a scrivere : PUT #a, ,DC(ESA)

Rispondi quotando