PDA

View Full Version : [VB] Cancellare una riga nel file


davidino80
04-04-2005, 12:23
Ciao a tutti.
Ho un file ad accesso SEQUENZIALE diviso per righe come segue:

GIALLO
VERDE
BLU
ROSSO
VIOLA
(fine del file)

Dovrei cancellare la riga che contiene la stringa "BLU".
Quindi, leggo il file tramite INPUT e faccio una ricerca della posizione della parola "BLU":

While EOF(1) = False
Line Input #1, colore$
If colore$="BLU" Then
CANCELLA LA RIGA
End If
Wend

Devo appunto cancellare la riga che contiene "BLU" senza lasciare spazi bianchi, in modo da avere il file finale così:

GIALLO
VERDE
ROSSO
VIOLA
(fine del file)

Come posso fare?
Mi conviene usare il file in accesso binario?
Grazie a tutti!

matpez
04-04-2005, 14:50
nn puoi farlo, anche perchè essendo aperto nn ti darebbe la possibilità di modificarlo.

Ti conviene, leggerlo tutto in una variabile stringa, levi quello che ti interessa e lo riscrivi.

tglman
04-04-2005, 14:55
Il metodo sarebbe che arrivato a quel punto copi la riga successiva con sulla precedente, tutto cosi fino alla finedel file dove elimini l'ultima riga, non so se in vb esiste una rutine che lo fa gia.
es:
GIALLO
VERDE
BLU
ROSSO
VIOLA
arrivato al blu scrivi ROSSO su BLU poi Scrivi VIOLA su rosso e tronchi il file.
Ciao.

Brigante
04-04-2005, 15:31
Credo che la soluzione proposta da matpez sia la migliore.

Zagor HW
04-04-2005, 16:06
Allora devi creare un file d'appogio e nell'if se il campo è uguale a blue nn fai niente se è diverso allora fai una scrittura col campo nel file d'appogio. Una volta terminato il ciclo elimini il file principale e rinomini quello d'appoggio.è un po complicato da spiegare con i file ad accesso sequenziale è l'unica soluzione!

Ciao!

davidino80
04-04-2005, 16:23
grazie ragazzi.. tutte buone idee, valuto quella che mi è più comoda.

anche con gli altri tipi di accesso non è possibile togliere un record nel file? (troncando anche la fine del file in modo che non resti bianco).

grazie ancora

matpez
04-04-2005, 16:39
Se hai un file aperto, nn puoi salvare il contenuto di esso, finche nn lo chiudi, altrimenti si arrabbia (e fa anche bene) :)

Zagor HW
04-04-2005, 19:27
Originariamente inviato da davidino80
grazie ragazzi.. tutte buone idee, valuto quella che mi è più comoda.

anche con gli altri tipi di accesso non è possibile togliere un record nel file? (troncando anche la fine del file in modo che non resti bianco).

grazie ancora

Eh no... per la cancellazione fisica con i sequenziali devi per forza ricopiare il contenuto in un file d'appogio senza il record da cancellare,se nn sbaglio anche per quelli casuali sei costretto a fare cosi!

Ciao!

davidino80
04-04-2005, 19:51
ho risolto aggirando la cosa.. utilizzando un file .ini richiamando direttamente i vari campi (visto che i campi "colore" sono max 5).

in questo modo riesco a salvare direttamente nella casella apposita e a crearmi il file alla fine tramite un semplice ciclo di lettura.

[Colori]
col1=GIALLO
col2=VERDE
col3=
col4=ROSSO
col5=VIOLA



grazie!

matpez
04-04-2005, 20:08
hai fatto bene, ma se magri lo dicevi che erano solo 5 si poteva trovare quella soluzione in minor tempo :D

Sei stato un po' sbadato :p

davidino80
04-04-2005, 20:35
Originariamente inviato da matpez
hai fatto bene, ma se magri lo dicevi che erano solo 5 si poteva trovare quella soluzione in minor tempo :D

Sei stato un po' sbadato :p
:D grazie cmq