Italian Cancellare una riga da un file .txt

Luigi S

Active Member
Licensed User
Ciao,
qualcuno potrebbe scrivermi un esempio di codice (o indicarmi dove trovarlo) per cancellare una riga da un file di testo?
Grazie !
 

Star-Dust

Expert
Licensed User
Longtime User
perché usi una file TXT e invece non salvi come una List o un Map così da gestire facilmente l'inserimento e la cancellazione dei vari elementi?
 
Last edited:

Luigi S

Active Member
Licensed User
Perché non so cosa sono.... È una settimana che sto in questo nuovo mondo.
Mi puoi indicare dei tutorial?
 

Sagenut

Expert
Licensed User
Longtime User
Immagino che sia la continuazione dell'altra app, dove salvi e carichi la lista.
Quindi puoi eliminare l'item dalla lista e risalvare.
Se invece ho capito male ignora il mio post.
 

Luigi S

Active Member
Licensed User
Si immagini bene, e concettualmete credo di aver capito come fare, ma mi mancano le basi programmatiche, un aiutino?
 

Sagenut

Expert
Licensed User
Longtime User
Identifica la posizione che vuoi eliminare (come fai ora per trovare il primo item vuoto da riempire) e poi
B4X:
lista.removeat(posizione)
Vale sia per una List che per una ListView.
 

Luigi S

Active Member
Licensed User
Anche qui ho bisogno di aiuto, per cancellare, l'unica cosa che sono riuscito a fare è questo:
B4X:
Sub DeleteDataPlane
       
    Dim List1 As List
   
    'controllo se esiste il file di testo
    If File.Exists(File.DirRootExternal, "RCHangar/ListModel.txt") Then
       
        'se il file esiste carico i dati dal file di testo
        List1 =File.ReadList(File.DirRootExternal, "RCHangar/ListModel.txt")
           
        For i = 0 To 9
           
            ListModel(i) = List1.Get(i)
           
    If ListModel(i) <> 0  Then 
       
                'Riempio lo slot con i valori da registrare
                ListModel(i) = "0"

            End If
           
        Next
       
        File.Writelist(File.DirRootExternal, "RCHangar/ListModel.txt", ListModel)   'Salvo l'array nel file di testo
       
        StartActivity(Main)
       
    End If
   
End Sub

ma cosi cancello tutti i modelli inseriti, mentre dovrei cancellare solo quello che sto vedendo.

Ho tentato con il tuo suggerimento

Identifica la posizione che vuoi eliminare (come fai ora per trovare il primo item vuoto da riempire) e poi
B4X:
lista.removeat(posizione)
Vale sia per una List che per una ListView.

ma non ho capito come usarlo.
 

Sagenut

Expert
Licensed User
Longtime User
Il comando/icona per cancellare il modello dove si trova?
Nella schermata dove mostri il modello?
In questo caso avresti già il valore Posizione da usare per eliminare l'Item, ovvero lo stesso che hai usato per mostrare il modello.
Poi devi vedere da che lista/liste lo vuoi eliminare.
Nel tuo caso credo che lo vorrai eliminare da ListModel visto che poi salvi subito di nuovo la lista.
Quindi
B4X:
ListModel.RemoveAt(Position)
 
Last edited:

Luigi S

Active Member
Licensed User
Si sono nella stessa Activity, e ho fatto vari tentativi in quella direzione usando il Position, ma senza risultati.
 

Sagenut

Expert
Licensed User
Longtime User
In che modo hai deciso di passare i dati alla Activity VediModello di cui abbiamo parlato nell'altra discussione?
Perché ti hanno proposto vari metodi ma non hai detto quale hai usato.
 

Sagenut

Expert
Licensed User
Longtime User
Quindi in VediModello hai una variabile che si chiama Position che usi per indicare quale modello visualizzare.
Lo stesso valore lo devi usare per cancellare quel modello.
Mi pare strano che non funzioni.
Probabilmente è un piccolo errore.
 

Sagenut

Expert
Licensed User
Longtime User
Guardando l'ultimo codice che hai postato riguardo l'eliminazione di un item....
Tu lo vuoi eliminare (inteso come farlo sparire dalla lista) o impostare a "0"?
Per Eliminarlo vale quello che ti ho già detto.
Se invece vuoi impostarlo a "0" prova con
B4X:
ListModel.Set(Position,"0")
Ovviamente userai la lista che ti serve, se non è ListModel.
 

Luigi S

Active Member
Licensed User
Grazie il Set riesco a farlo funzionare, ora però dovrei spostare la riga appena modificata nell'ultimo posto dell'array, altrimenti cancellando una posizione intermedia (tra due righe non a 0) quando viene letto crasha, come posso fare? Inoltre non fa' il Set della prima riga, come mai?
 

Sagenut

Expert
Licensed User
Longtime User
Per come è strutturata la tua gestione della lista sei costretto a fare continui cicli per trovare cosa e dove fare.
Se hai pazienza nel pomeriggio provo (se trovo un attimo di tempo) a mandarti un esempio che potrebbe aiutarti a gestire le cose diversamente.
Se non oggi probabilmente domani.
Nel frattempo fai degli esperimenti. ;)
Non mollare!
 
Top