Questo potrebbe aiutare?:
' Gambas module file
Public sUtenti As String[]
Public Sub Main()
Dim a, b, r As Integer
a = 3
b = 4
sUtenti = New String[a, b]
sUtenti[0, 0] = "Mario"
sUtenti[0, 1] = "Rossi"
sUtenti[0, 2] = "1234567890"
sUtenti[0, 3] = "Idraulico"
sUtenti[1, 0] = "Franco"
sUtenti[1, 1] = "Verdi"
sUtenti[1, 2] = "3456789012"
sUtenti[1, 3] = "Carpentiere"
sUtenti[2, 0] = "Maria"
sUtenti[2, 1] = "Bianchi"
sUtenti[2, 2] = "7890123456"
sUtenti[2, 3] = "Falegname"
r = sUtenti.Find("3456789012")
r = r \ b
Print "Nome utente = "; sUtenti[r, 0]
Print "Cognome utente = "; sUtenti[r, 1]
Print "Codice Utente = "; sUtenti[r, 2]
Print "Funzione Utente = "; sUtenti[r, 3]
End
Vedi questa lezione e i suoi collegamenti:
https://www.gambas-it.org/wiki/index.php?title=Accedere_linearmente_in_scrittura_ed_in_lettura_ad_una_Matrice
Io proporrei questo esempio:
Public Sub Main()
Dim sUtenti As String[] = ["Mario", "Rossi", "1234567890", "Idraulico", "Franco", "Verdi", "3456789012", "Carpentiere",
"Maria", "Bianchi", "7890123456", "Falegname"]
Dim i As Integer
i = sUtenti.Find("3456789012")
If i Mod 2 = 0 Then Print "Il codice fiscale "; sUtenti[i]; " appartiene a: \e[31m"; sUtenti[i - 2]; " "; sUtenti[i - 1]; "\e[0m - \e[34m"; sUtenti[i + 1]
End
Ciao raga
riapro il post in quanto si è presentato un problema
con
r = sUtenti.Find("3456789012")
r = r \ b
funziona se trova la stringa, il problema è che se non la trova mi ritorna 0
purtroppo 0 è il primo index della matrice e invece di darmi errore mi riposta i dati del primo indice
si può fare in modo che debba restituire un errore?
If r = -1 Then
Print "NESSUN RISCONTRO"
Return
Endif
Ti bastava dare un F2 su Find :P
Gia
per accorciare ottenevo 0
Credo che lui si riferisse a:
r = r \ b che è come dire -1 \ 4 che restituisce appunto 0
Naturalmente il controllo andava fatto prima...
mea culpa
grazie raga