aiuto per scrittura su SD

Buongiorno a tutti, chiedo aiuto perché non riesco a capire bene come funziona la SD library.

Il mio obiettivo è aggiornare alcuni valori che memorizzo su un file .txt sulla SD. Esempio: Variabile1=2; Variabile2=4;

e vorrei ad esempio modificare in Variabile1=3; Variabile2=4;

ora il punto è che print e println mi aggiungono testo.. potrei anche riscrivere tutto da capo, ma non riesco a capire se c'è un comando per cancellare il contenuto del file. Ho pensato a eliminarlo e ricrearlo da capo, ma non c'è una soluzione più "elegante"? grazie

... è uno "stream" di testo NON strutturato in "record" quindi ... c'è poco da fare. Al limite, si può riscrevere sopra alcuni caratteri, posizionandosi all'interno dello "stream" con la seek() e scrivendo in quella posizione ... ma devi sapere esattamente la posizione del carattere che devi sostituire.

Guglielmo

P.S.: Altrimenti, se "mastichi" di gestione e struttura files, sempre usando la seek() ti devi scrivere TU una gestione del tuo file in "record" a lunghezza fissa e allora diventa abbastanza semplice sostituire il contenuto del singolo "record" con un accesso "random".

gpb01: ... è uno "stream" di testo NON strutturato in "record" quindi ... c'è poco da fare. Al limite, si può riscrevere sopra alcuni caratteri, posizionandosi all'interno dello "stream" con la seek() e scrivendo in quella posizione ... ma devi sapere esattamente la posizione del carattere che devi sostituire.

Guglielmo

P.S.: Altrimenti, se "mastichi" di gestione e struttura files, sempre usando la seek() ti devi scrivere TU una gestione del tuo file in "record" a lunghezza fissa e allora diventa abbastanza semplice sostituire il contenuto del singolo "record" con un accesso "random".

ecco, sapendo esattamente la posizione del carattere, quale comando dovrei utilizzare?

... te l'ho già scritto, per posizionarsi nello stream si usa la seek() !

Guglielmo

si ho capito il comando seek() ma se poi uso print, lui SOSTITUISCE il carattere o lo AGGIUNGE?

Mi allaccio qui, per estendere un poco la domanda dello OP: Guglielmo, nella tua enciclopedica conoscenza, non sai di una libreria o simili, che facilitino la lettura scrittura di dati strutturati? Ideale, ma so impossibile, aprire leggere scrivere e creare file puntodbf...

lcursi: si ho capito il comando seek() ma se poi uso print, lui SOSTITUISCE il carattere o lo AGGIUNGE?

il seek() posiziona, il print() scrive ... quindi, secondo te ? :)

Guglielmo

Standardoil: Guglielmo, nella tua enciclopedica conoscenza, non sai di una libreria o simili, che facilitino la lettura scrittura di dati strutturati?

Conosco solo QUESTA, ma NON l'ho mai provata ... io, a suo tempo (anni '70), in "Apple Basic" "Apple Pascal", su "Apple II" e scheda "Apple II Language Card", con i floppini (140 KB l'uno), mi ero scrotto una gestione Index-Sequential basata sul "balanced binary tree" ... era una bella scheggetta e prima o poi troverò il tempo di portarla in 'C'. :D

Comunque, se si cerca su Google, non per Arduino, ma in 'C' puro, di gestione files se ne trovano parecchie, anche molto complesse ;)

Guglielmo

gpb01:
il seek() posiziona, il print() scrive … quindi, secondo te ? :slight_smile:

Guglielmo

secondo me print aggiunge nel punto indicato, e non sostituisce il carattere che già c’è, ma siccome non lo so chiedo

NO, print() NON aggiunge mai nulla, scrive da dove si è posizionati ... ovviamnete, quando la usi normalmente, la "posizione" viene aggiornata sequenzialmente e l'effetto è che vengono aggiunti caratteri.

Guglielmo

ecco, ora ho capito. So che sembrano cose scontate, ma se uno chiede aiuto è perché alle fine non lo sono. A volte sembra invece di fare domande sciocche