PDA

Visualizza la versione completa : [VB][Array] la mia bestia nera :P


Laufer
24-10-2002, 17:26
Ho un arri di stringhe



Dim Nomi() As String


Lo inizializzo cosi



ReDim Nomi(0) As String


La riempo cosi



ReDim Preserve Nomi(UBound(Nomi) + 1) As String
Nomi(UBound(Nomi)) = Mauro


Poi una volta riempita ci guardo dentro (fa molto informatico hghghg)



For i = 1 To UBound(Nome)
If Nome(i) = Mauro Then


:master::master::master::master:
qui dovrei fare in modo di cancellare nel mio arry Mauro
:master::master::master::master:



next



Grazie

Gigi84
24-10-2002, 17:39
cancelli mauro;
tutti quelli dopo mauro scalano indietro di una posizione;
l'ultima posizione è quindi vuota;
accorci il vettore di 1: Redim Preserve mioarray(ubound-1);

..credo!


ciao!!:ciauz: :ciauz:

Laufer
24-10-2002, 18:13
Purtroppo non mi funziona cosi
ho provato a fare questo



ReDim Preserve Nomi(UBound(Nomi) - 1) As String


Ma c'e' un poccolo problema.

Questa cosa mi ridimensiona il mio array e fin qui funziona
ma se il miei elementi sono:

Nomi(1)="paola"
Nomi(2)="laura"
Nomi(3)="mauro"
Nomi(4)="sara"

e io eseguo sta cosa appena arrivo al mio terzo elemento ("mauro") mi cancella il 4 elemento ("sara")e nn il terzo ("mauro")

:bhò:


Non ditemi che devo riposizionarmeli tutti plz

Laufer

ladyBlu
24-10-2002, 18:17
non ti basta passargli stringa vuota?


For i = 1 To UBound(Nome)
If Nome(i) = "Mauro" Then
Nome(i) = ""
End If
next

o tu vuoi proprio ridimensionare l'indice? :master:

Laufer
24-10-2002, 18:22
o tu vuoi proprio ridimensionare l'indice? :master:




mmmmmmm non ci avevo pensato .


Spe che vedo se al programma gli garba sta cosa

.........


Laufer

chipdb
24-10-2002, 20:16
Originariamente inviato da ladyBlu
non ti basta passargli stringa vuota?


For i = 1 To UBound(Nome)
If Nome(i) = "Mauro" Then
Nome(i) = ""
End If
next

o tu vuoi proprio ridimensionare l'indice? :master:

Scusa ma perché tenere in memoria una variabile che non viene utilizzata? Sarebbe come usare una variabile globale per una routine...

Per ridimensionare l'indice é come dice Gigi84, ma prima devi scalare di una posizione quelle precedenti, quindi:



For i = 1 To UBound(Nome)
If Nome(i) = "Mauro" Then
'arriva fino al penultimo elemento
For j = i To UBound(Nome)-1
'scala di -1 gli elementi a partire da "mauro"
Nome(j) = Nome(j+1)
Next
ReDim Preserve Nome(UBound(Nome)-1)
End If
next


Tieni conto che questo codice ti cancella tutti gli elementi chiamati "mauro"!!

Ciao!

Laufer
25-10-2002, 10:05
Tieni conto che questo codice ti cancella tutti gli elementi chiamati "mauro"!!
Ciao!



Purtroppo questo non e' possibile poiche' gli elementi che popolano l'array non sono univoci.



Laufer

chipdb
25-10-2002, 15:02
Originariamente inviato da Laufer



Purtroppo questo non e' possibile poiche' gli elementi che popolano l'array non sono univoci.



Laufer

Cosa intendi? Proprio per il fatto che gli elementi non sono univoci li cancella tutti :master:

Ciao

ladyBlu
25-10-2002, 16:22
Originariamente inviato da chipdb


Cosa intendi? Proprio per il fatto che gli elementi non sono univoci li cancella tutti :master:

Ciao
chipdb, lui non vuole cancellare tutti gli elementi che hanno valore = "Mauro", ma solo quello che gli interessa.
cioè, se ad esempio l'indice 3 e l'indice 5 del mio array valgono "Mauro", io voglio cancellare solo il "Mauro" in posizione 5 e non quello in posizione 3.
Almeno così ho capito io. :ciauz:

Laufer
25-10-2002, 17:45
Esatto Lady blu

Nel mio indice ci possono essere + "mauro" e a me interessa solo cancellare il primo che pesca.
La soluzione di riassegnargli una stringa "" all'indice puo' andarmi bene


Per chipdb scusa prima nn avevo inteso quello che hai scritto :D


Laufer

Loading