Italian Array con indice letterale

udg

Expert
Licensed User
Longtime User
Credo che sia perché CharAt restituisce un char e non una stringa.
In m (map) hai inserito dei caratteri ma sotto forma di stringhe. Se indice fosse stato un array di char, allora avrebbe funzionato (credo).
 

MaAncheNo

Member
Licensed User
Longtime User
Ok, ma allora, anche in base a quanto detto fino ad ora, questa diventa la definitiva, l'accendiamo? :D

B4X:
public Sub ISO_6346_Ck(CtrNum As String) As Boolean
    Dim acc, ax As Int
    Dim lastnum, cnt, checkdigit As Int
    Dim Indice As String = ("0123456789A?BCDEFGHIJK?LMNOPQRSTU?VWXYZ")
    Dim Pow() As Int = Array As Int (1,2,4,8,16,32,64,128,256,512)
    For cnt = 0  To 9
        acc = acc + Indice.IndexOf(CtrNum.CharAt(cnt)) * Pow(cnt)
    Next
    lastnum = ((acc Mod 11) Mod 10)
    checkdigit = Asc(CtrNum.CharAt(10))-48
    If (CtrNum.Length = 11) And (lastnum = checkdigit) Then    Return(True) Else Return (False)
End Sub
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Non c'é da approfondire. Semplicente non restituisce una stringa ma Char. Che in Java non é esattamente uguale. Il concetto di base é che non funziona il Casting di Char con i numeri interi

Da B4A 6.80+ (Che non ho , ma ho letto i forum con attenzione) si aggiunge il concetto di CharSequence che non é una stringa, ma al contrario la Stringa é un impementazione di CharSequence ed è stato necessario cambiare la libreria Dialogs per passare come parametro la CharSequence. (Vedi https://www.b4x.com/android/forum/threads/charsequence-csbuilder-tutorial.76226/)

CSBuilder è simile a StringBuilder. Invece di creare stringhe, costruisce CharSequences che includono informazioni di stile.

Char, CSBuilder e Stringhe non sono la stessa cosa.

Con questo vorrei dire soprattutto non funziona il Casting di Char con i numeri :p
 
Top