Sostituire stringa in file di testo delimitato da separatore

di il
8 risposte

Sostituire stringa in file di testo delimitato da separatore

Salve ragazzi,
sto sviluppando un programma che memorizza alcuni dati sfruttando file di testo delimitati dal separatore "|".
Sto cercando un sistema per variare un solo carattere di una determinata riga.
C'è un metodo per fare questa cosa che mi eviti di dover leggere e sovrascrivere tutto il file?
Ringrazio subito chi vorrà aiutarmi.

8 Risposte

  • Re: Sostituire stringa in file di testo delimitato da separatore

    Ciao alsa,
    Se il file di testo è codificato in ASCII cioè ogni carattere è lungo un byte allora puoi aprire il file in modo binario e ravanarlo come ti pare, ma questa è roba ormai superata, il file di testo avrà una qualche codifica unicode o altro per cui la dimensione del carattere non è più 1. In alcune codifiche la lunghezza e fissa in altre è variablie. Credo ti convenga leggerlo tutto e risciverlo.
  • Re: Sostituire stringa in file di testo delimitato da separatore

    Ciao Barba,
    Prima di tutto grazie per la spiegazione.
    Dato che sono alle prime armi, ho pensato e ripensato a come e dove memorizzare i dati del mio programma prima di mettermi all' opera e, dopo aver avuto non pochi problemi con sql Server che era la mia prima idea, ho deciso di scegliere questa soluzione.
    Ciò non toglie che sarei disponibile a cambiarla se tu mi consigliassi una soluzione più performante, perchè ho paura che dovendo arrivare a gestire una grossa quantità di dati, (parliamo anche di circa 1000 righe nel file txt) l' applicazione risulti lenta e, avendo come obiettivo futuro quello di commercializzarla, non sarebbe proprio il massimo.
    Spero che tu o qualcun' altro più esperto di me possiate darmi lumi in merito, e chiedo scusa se la rischiesta può risultare banale.
    Ad ogni modo, grazie ancora.
  • Re: Sostituire stringa in file di testo delimitato da separatore

    Ciao alsa
    Dipende dal tipo di dati e da come vengono usati, se puoi essere più preciso e fornire qualche dettaglio possiamo fare dei ragionamenti più precisi.
  • Re: Sostituire stringa in file di testo delimitato da separatore

    Certo, allora
    Il programma è preposto alla fatturazione degli adempimenti da parte di un Consulente e dovrebbe funzionare così:
    L' utente inserisce i dati del cliente e, con essi inserisce i prezzi concordati per ciascun adempimento, prezzi che quindi non cambieranno mai. Gli adempimenti sono circa 15 percui ho previsto un file "archivio" per memorizzare questi dati strutturato così:

    codice|ragione sociale|indirizzo|città|cap|provincia|p.iva|codice fiscale|gruppo|prezzo adempimento1|prezzo adempimento2|.....e così via fino all' ultimo
    il campo gruppo mi serve per una successiva implementazione perchè i clienti saranno suddivisi in 4 o 5 gruppi.

    Successivamente l' utente può scegliere il cliente e il mese di interesse (es. Gennaio 2012) per il quale inserire gli adempimenti da fatturare.
    Questi dati vanno in un altro file "prestazioni" così strutturato:

    codice cliente|periodo(formato "yyyymm")|ragione sociale|quantità adempimento1|quantità adempimento2|...e così via per tutti gli adempimenti.
    l' ultimo carattere infine identifica se quella prestazione è stata fatturata (1) o no (0).
    Ovviamente fino a quando la prestazione non viene fatturata può essere modificata a piacimento.

    l' utente in un altra fase visualizza le prestazioni non fatturate (che memorizzo in una matrice) per un determinato cliente (i cui dati sono presenti in un array di stringhe) e sceglie se fatturarle o meno, la fattura viene fuori compilando un file excel preimpostato.

    Spero di essermi spiegato correttamente e ti ringrazio ancora per l' interessamento.
  • Re: Sostituire stringa in file di testo delimitato da separatore

    Ciao alsa,
    Ti sei spiegato benissimo, e direi che non c' è dubbio e che devi usare un database.
    Hai detto che hai avuto non pochi problemi con SqlServer (e ti capisco), la soluzione giusta però è risolvere questi problemi. Se usi la versione Compact tutto diventa più semplice. Oppure c' è sempre Access che anche se è stato dato per defunto qualche anno fa continua ad andare benissimo.
    Che linguaggio di programmazione usi?
  • Re: Sostituire stringa in file di testo delimitato da separatore

    Ciao Barba,
    come linguaggio uso VB.2010.
    Per quanto riguarda Sql Server, ho provato a smanettare con la versione Express 2008, ma non ho ben capito, a prescindere, come si gestisce Sql stesso, perchè ad un certo punto mi sono ritrovato 2 istanze con 2 versioni diverse, e quindi una riusciva ad aprirmi tutti i database collegati e l' altra mi dava errori su alcuni database, insomma un casino.
    Per questo progetto specifico avevo anche creato un dataset ma, non so perchè, non riusciva ad aggiornarmi il database e quindi ho cambiato strada.
    Però dato che mi consigli di usare Sql vorrà dire che farò partire questo progettino in questo modo e nel frattempo mi butterò sullo studio dei database.
    A questo proposito mi sorge un altra domanda: Se sviluppassi l' applicazione basandomi su Sql, il cliente avrà bisogno di installare Sql stesso per far girare il programma? Se si, la versione express andrebbe bene?

    Grazie ancora.
  • Re: Sostituire stringa in file di testo delimitato da separatore

    Visto che stavi adottando una soluzione basata su file credo che SqlServer Compact ti possa andare bene.

    SqlServer Standard e Express basano la connessione al db su tcp/ip, invece la versione Compact accede direttamente ad un file che è il database. La comodità di quest' ultima sta nel fatto che praticamente non serve installazione e potresti distribuire la tua applicazione semplicemente copiando una cartella con dei file. Inoltre la soluzione Compact è facilmente scalabile alle versioni superiori.
  • Re: Sostituire stringa in file di testo delimitato da separatore

    Grazie mille Barba,
    a questo punto penso che chiudo questo progettino che ho quasi terminato, continuando ad utilizzare questa soluzione, lo consegno a chi me l' ha commissionato e per la versione 2.0 mi metto subito all' opera con sql Compact e stravolgo tutto.
    Grazie ancora, mi hai risolto molti piccoli dubbi!
Devi accedere o registrarti per scrivere nel forum
8 risposte