Scrivere nel file su una nuova linea - pagina 2

 
EfremovSergey:
Come si può cancellare una stringa dopo averla letta, c'è un modo semplice per farlo?

Letto da chi? Se da voi, potete cancellarlo con le vostre mani. Se da un robot, è inutile. Puoi prendere una decisione sull'algoritmo non appena ricevi i dati.

 
Valeriy Yastremskiy:

Letto da chi? Se da voi, potete cancellarlo con le vostre mani. Se da un robot, è inutile. Puoi prendere una decisione sull'algoritmo non appena ricevi i dati.

A mio parere, se non ci si sbarazza delle informazioni già elaborate, allora bisogna spendere risorse per rianalizzarle.

 
Ihor Herasko:

Nella maggior parte dei casi, è meglio leggere l'intero file, fare le modifiche necessarie in memoria con i dati, e poi sovrascrivere l'intero file. Questo è più facile che spostare i dati in un file aperto.

Se un EA sta leggendo un file nella sua interezza, un altro EA può accedere allo stesso file nello stesso momento del primo per fare le proprie azioni?

Per esperimento, ho aperto il file manualmente e ho provato a scriverci l'Expert Advisor; le informazioni sono state visualizzate solo dopo la riapertura.

Se provo ad aprire il file manualmente, mentre l'Expert Advisor sta lavorando sul file, semplicemente si rifiuta di aprirlo, perché il file è troppo occupato dal processo.

Non capisco bene il regolamento. Non funzionerà che in caso di sovrascrittura totale, tutto ciò che non è stato ancora letto sarà cancellato?

Un altro dettaglio è che al file accedono diversi Expert Advisors e non sanno se altri Expert Advisors hanno già letto le informazioni rilevanti per loro o no, per cui l'intero file può essere eliminato.

 
EfremovSergey:

Se un EA sta leggendo un file nella sua interezza, un altro EA può accedere allo stesso file nello stesso momento del primo per fare le proprie azioni?

Per esperimento, ho aperto il file manualmente e ho provato a scriverci l'Expert Advisor; le informazioni sono state visualizzate solo dopo la riapertura.

Se provo ad aprire il file manualmente, mentre l'Expert Advisor sta lavorando sul file, semplicemente si rifiuta di aprirlo, perché il file è troppo occupato dal processo.

Non capisco bene il regolamento. Non succederà che in caso di sovrascrittura totale, tutto ciò che non è stato ancora letto sarà anche cancellato?

Quando aprite il file aggiungete il flag di co-read FILE_SHARE_READ, probabilmente avrete bisogno anche del flag di co-edit/rewrite. Sta a voi decidere se questo è necessario.

 
Alexey Viktorov:

Quando si apre un file, aggiungere il flag di co-read FILE_SHARE_READ, eventualmente anche il flag di co-edit/ write. Sta a voi decidere se è necessario.

Ok. Grazie mille. Informazioni utili.

E come cancellare solo una riga, qualcuno può suggerire?

 
EfremovSergey:

Ok. Grazie mille. Informazioni utili.

Qualcuno può suggerire come cancellare una sola riga?

Dipende da quale linea. Non l'ho fatto, ma se devo, inizierò a sperimentare da solo. Chi vuole sperimentare le idee degli altri? Tranne che per l'ozio. Vedi se è possibile leggere il tuo file nel database SQLite, cancellare questa stringa e riscriverla. Se può essere scritto in un array o in un array di strutture, potete farlo anche voi. Ma il problema è che gli array e le strutture sono scritti in file .bin, che nient'altro aprirà e guarderà. In generale, volo di fantasia e sperimentazione nel tentativo di raggiungere un risultato.

 
Alexey Viktorov:

Dipende da che tipo di corda. Non l'ho fatto, ma se devo, inizierò a sperimentare da solo. Chi vuole sperimentare le idee degli altri? Tranne che per l'ozio. Vedi se è possibile leggere il tuo file nel database SQLite, cancellare questa stringa e riscriverla. Se può essere scritto in un array o in un array di strutture, potete farlo anche voi. Ma il problema è che gli array e le strutture sono scritti in file .bin, che nient'altro aprirà e guarderà. Tutto sommato, si tratta di un volo di fantasia e di esperimenti per cercare di ottenere un risultato.

Un normale file di testo... Se non si sa come fare, la domanda sparisce da sola, tutti la sperimentano. Il concetto sta in superficie, come si dice, e non richiede alcuna voce fuori campo aggiuntiva.

 
EfremovSergey:

Qualcuno può suggerire come cancellare una sola riga?

Il modo più semplice è leggere il file, elaborare i dati e riscriverli. Modificare direttamente i dati del file senza fare troppe domande è possibile solo carattere per carattere: leggere simbolo - scrivere al posto delle informazioni da cancellare. La sovrascrittura in blocchi è più difficile perché diversi pezzi di dati possono sovrapporsi. Così, tutto questo è complicato e non è del tutto chiaro perché sia necessario. Non c'è davvero così tanta RAM? Ma allora non sarà possibile nemmeno il funzionamento di un gran numero di programmi.

 
EfremovSergey:

Un file di testo semplice... Se non si sa come fare, allora la domanda sparisce da sola, ognuno sperimenta come meglio può, qualunque cosa sappia fare. Il concetto sta in superficie, come si dice, e non richiede alcuna voce fuori campo aggiuntiva.

Beh, se si pensa che l'informazione "File di testo normale ..." è sufficiente, allora è solo a telepati. Non conosco l'indirizzo, potete trovarlo da soli. Per qualche ragione non tieni conto che anche i file di testo sono diversi. C'è un terminatore di riga, cosa c'è nel file: numeri o testo, e ci possono essere altre sfumature.

Igor ti ha offerto il modo più semplice. Probabilmente non ti è piaciuto, quindi ti ho suggerito di sperimentare. E il concetto è solo per voi in superficie.........

 
Ihor Herasko:

Il modo più semplice è leggere il file, elaborare i dati e riscriverli. Modificare direttamente i dati del file senza fare troppe domande è possibile solo carattere per carattere: leggere un carattere e scriverlo al posto dell'informazione da cancellare. La sovrascrittura in blocchi è più difficile perché diversi pezzi di dati possono sovrapporsi. Così, tutto questo è complicato e non è del tutto chiaro perché sia necessario. Non c'è davvero così tanta RAM? Ma allora non sarebbe possibile nemmeno il funzionamento di un gran numero di programmi.

Ecco la fregatura: ci sono 10 programmi che scrivono sul file e altri 10 che leggono da esso, non si vuole che ogni programma di lettura elabori l'intera matrice di dati accumulati per tutto il tempo.

File:
Copy.txt  1 kb