Escrevendo para o arquivo em uma nova linha - página 2

 
EfremovSergey:
Como você pode apagar um fio após lê-lo, há alguma maneira simples de fazer isso?

Lido por quem? Se por você, pode apagá-lo com suas mãos. Se por um robô, é inútil. Você pode tomar uma decisão sobre o algoritmo assim que receber os dados.

 
Valeriy Yastremskiy:

Lido por quem? Se por você, pode apagá-lo com suas mãos. Se por um robô, é inútil. Você pode tomar uma decisão sobre o algoritmo assim que receber os dados.

Na minha opinião, se você não se livrar das informações já processadas, então você tem que gastar recursos para reanalisá-las.

 
Ihor Herasko:

Na maioria dos casos, é melhor ler o arquivo inteiro, fazer as alterações necessárias na memória com os dados e, em seguida, sobrescrever o arquivo inteiro. Isto é mais fácil do que mover os dados dentro de um arquivo aberto.

Se uma EA está lendo um arquivo em sua totalidade, outra EA pode acessar o mesmo arquivo ao mesmo tempo que a primeira a realizar suas próprias ações?

Para experimentar, abri o arquivo manualmente e tentei escrever o Expert Advisor para ele; a informação só foi exibida após a reabertura.

Se eu tentar abrir o arquivo manualmente, enquanto o Expert Advisor estiver trabalhando no arquivo, ele simplesmente se recusa a abri-lo, porque o arquivo está muito ocupado com o processo.

Não entendo totalmente o regulamento. Não vai dar certo que no caso de sobregravação total, tudo o que ainda não tiver sido lido será apagado?

Outro detalhe é que o arquivo é acessado por diferentes Expert Advisors e eles não sabem se outros Expert Advisors já leram ou não as informações relevantes para eles, para que o arquivo inteiro possa ser purgado.

 
EfremovSergey:

Se uma EA está lendo um arquivo em sua totalidade, outra EA pode acessar o mesmo arquivo ao mesmo tempo que a primeira a realizar suas próprias ações?

Para experimentar, abri o arquivo manualmente e tentei escrever o Expert Advisor para ele; a informação só foi exibida após a reabertura.

Se eu tentar abrir o arquivo manualmente, enquanto o Expert Advisor estiver trabalhando no arquivo, ele simplesmente se recusa a abri-lo, porque o arquivo está muito ocupado com o processo.

Não entendo totalmente o regulamento. Não acontecerá que no caso de sobregravação total, tudo o que ainda não foi lido também será apagado?

Ao abrir o arquivo, adicionar a bandeira de co-leitura FILE_SHARE_READ, talvez você também precise da bandeira de co-edição {write}. Cabe a você decidir se isso é necessário.

 
Alexey Viktorov:

Ao abrir um arquivo, adicionar FILE_SHARE_READ co-read flag, possivelmente também co-edit/ write flag. Cabe a você decidir se é necessário.

Ok. Muito obrigado. Informações úteis.

E como apagar apenas uma linha, alguém pode sugerir?

 
EfremovSergey:

Certo. Muito obrigado. Informações úteis.

Alguém pode sugerir como apagar apenas uma linha?

Depende de qual linha. Ainda não o fiz, mas se for preciso, começarei experimentando por conta própria. Quem quer experimentar as idéias de outras pessoas? Exceto por ociosidade. Veja se é possível ler seu arquivo no banco de dados SQLite, apague esta string e escreva-a de volta. Se puder ser escrito para uma matriz ou uma matriz de estruturas, você também pode fazer isso. Mas o problema é que as matrizes e estruturas estão escritas em arquivos .bin, que nada mais não se abrirá e será analisado. Em geral, o vôo da fantasia e da experimentação na tentativa de alcançar um resultado.

 
Alexey Viktorov:

Depende do tipo de fio. Ainda não o fiz, mas se for preciso, começarei experimentando por conta própria. Quem quer experimentar as idéias de outras pessoas? Exceto por ociosidade. Veja se é possível ler seu arquivo no banco de dados SQLite, apague esta string e escreva-a de volta. Se puder ser escrito para uma matriz ou uma matriz de estruturas, você também pode fazer isso. Mas o problema é que as matrizes e estruturas estão escritas em arquivos .bin, que nada mais não se abrirá e será analisado. Em resumo, é um vôo de fantasia e experimentos na tentativa de obter um resultado.

Um arquivo de texto comum... Se você não sabe como fazer isso, a questão desaparece por si só, todos experimentam com ela. O conceito está na superfície, como eles dizem, e não requer nenhuma locução adicional.

 
EfremovSergey:

Alguém pode sugerir como apagar apenas uma linha?

A maneira mais fácil é ler o arquivo, processar os dados, escrevê-los de volta. A edição direta dos dados do arquivo sem fazer muitas perguntas só é possível caracter por caracter: ler um caractere e escrevê-lo de volta no lugar das informações a serem apagadas. A sobre-escrita em blocos é mais difícil, pois diferentes partes de dados podem se sobrepor. Portanto, tudo isso é complicado e não está bem claro por que é necessário. Não existe realmente tanta RAM? Mas a operação de um grande número de programas também não será possível.

 
EfremovSergey:

Um arquivo de texto simples... Se você não souber como fazê-lo, então a questão desaparece por si só, todos experimentam o melhor que podem, o que quer que saibam fazer. O conceito está na superfície, como eles dizem, e não requer nenhuma locução adicional.

Bem, se você acha que a informação "Arquivo de texto normal ..." é suficiente, então você apenas se telepata. Eu não sei o endereço, você mesmo pode encontrá-lo. Por alguma razão, você não leva em conta que até mesmo os arquivos de texto são diferentes. Existe um terminador de linha, o que está no arquivo: números ou texto, e pode haver outras nuances.

Igor lhe ofereceu a maneira mais fácil. Você provavelmente não gostou, então eu sugeri que experimentasse. E o conceito é somente para você na superfície.........

 
Ihor Herasko:

A maneira mais fácil é ler o arquivo, processar os dados e escrevê-los de volta. Editar os dados do arquivo diretamente sem fazer muitas perguntas só é possível caracter por caracter: ler um caractere e escrevê-lo no lugar das informações a serem apagadas. A sobre-escrita em blocos é mais difícil, pois diferentes partes de dados podem se sobrepor. Portanto, tudo isso é complicado e não está bem claro por que é necessário. Não há realmente RAM suficiente? Mas a operação de um grande número de programas também não seria possível.

Eis o senão: há 10 programas que escrevem no arquivo e outros 10 que lêem a partir dele, você não quer que cada programa de leitura processe todo o conjunto de dados acumulados para todo o tempo.

Arquivos anexados:
Copy.txt  1 kb