Ciao criss, volevo chiederti ancor asupporto perun lteriore script
è ore che mi scervello
ho una stringa
beddamace="uccello,asiatico,beccoblu/castoro,peloso,puzzolente/criceto,piccolo,spappolato"
ecco.
devo dividere in piu stringhe numerate (tipo stringa1,stringa2,stringa3) la stringa beddamace dividendola con gli slash in modo che mi rimangano
stringa1="uccello,asiatico,beccoblu"
stringa2="castoro,peloso,puzzolente"
stringa3="criceto,piccolo,spappolato"
Dopo di che devo dividere la prima stringa,dividerla in altre stringhe numerate dividendola tramite la , e sono a posto.
però tra split setlen sto sclerando.
Mi puoi aiutare?
Beh qui devi usare SPlit
stringa = Split(beddamace,"/")
Questo ti produce esattamente
stringa(1)="uccello,asiatico,beccoblu"
stringa(2)="castoro,peloso,puzzolente"
stringa(3)="criceto,piccolo,spappolato"
Siccome a priori non sai quante saranno le stringhe ovvero le parti separate da un "/" puoi usare un ciclo per le split successive.
| CODE |
For Each s In stringa Dim bestie = Split(s,",") Print bestie Next
|
ora potrebbe essere un problema che a ogni giro del For Each l'array bestie viene azzerato e riscritto.
Qui dipende da quello che vuoi fare. Se volevi solo usare, per dire, il secondo valore della terza riga e poi ti va bene di buttare via tutto, ok, può andare anche così.
Se devi mantenere in memoria il tutto già strutturato in array per usarlo più volte dovresti a logica usare un array a due dimensioni (dimensionex non ce l'ha, ma lo puoi simulare con questo trucco:
arrayglobale(i,j)
dove i è la riga e j la colonna.
equivale all'array monodimensionale
arrayglobale(j+(i-1)*col)
dove "col" è il numero di colonne per ogni riga - occhio che non puoi avere righe di lunghezza diversa
| CODE |
Dim arrayglobale = NewArray() For i=1 To SetLen(stringa) Dim bestie = Split(s,",") Call CopiaRiga(i,setlen(stringa),bestie) Next Print arrayglobale
Sub CopiaRiga(i,col,riga) For j = 1 To SetLen(riga) arrayglobale(j+(i-1)*col) = riga(j) Next
|
La funzioncina copiariga è necessaria solo perchè non puoi annidare due cicli FOR come fai per gli IF (c'è scritto nella devref) così si ricorre alla funzioncina per "incartare" il ciclo interno.
Beh,che dire,grazie mille criss.
Fortunatamente l'array a due dimensioni,che è la prima volta che sento, non dovrei aver bisogno d'usarlo,ma mi piacerebbe capire come è strutturato,che in questa spiegazione m'è sfuggito.
Comunque grazie mille per la spiegazione........che genio che sei! eh! :lol: :D
diciamo che normalmente un array a una dimensione lo puoi pensare come una fila di caselle.
se è a due dimensioni lo devi immaginare come una scacchiera, righe e colonne.
in alcuni casi i contenuti li individui con due variabili, è proprio allora che ti serve.
Vedi per esempio il gioco four-in-line (forza 4) usa quel sistema per memorizzare la posizione delle pedine sul tabellone di gioco