FileWrite pula linhas ao gravar

 
// Apenas 1 vez
arq_Handle = FileOpen(_Symbol".txt",FILE_SHARE_READ|FILE_WRITE|FILE_ANSI|FILE_TXT);
FileSeek(arq_Handle,0,SEEK_END);

// quando for gravar a linha
FileWrite(arq_Handle,v_arq);
FileFlush(arq_Handle);}}

// Apenas 1 vez
FileClose(arq_Handle);

atente-se ao código acima: FileSeek (posiciona o ponteiro de gravação no fim o arquivo) apenas 1 vez após o FileOpen.

pode usar o FileFlush que faz a gravação em tempo real e não apenas ao fim do ea, o que permite usar e visualizar o arquivo enquanto o ea esta em funcionamento. Só tome cuidado que se seu ea grava muitas linhas isso consume muita memória ok.

 
ArmandoJunior70:

atente-se ao código acima: FileSeek (posiciona o ponteiro de gravação no fim o arquivo) apenas 1 vez após o FileOpen.

pode usar o FileFlush que faz a gravação em tempo real e não apenas ao fim do ea, o que permite usar e visualizar o arquivo enquanto o ea esta em funcionamento. Só tome cuidado que se seu ea grava muitas linhas isso consume muita memória ok.

Uhmm....Não deu certo.
Continua deixando uma linha em branco.
Não uso nenhum "\n" e se usar pula mais uma linha.

 
esse <xxx> no FileWrite seria o quê?
 
Sergio Gelli:
Meu EA está gravando em um arquivo .TXT, mas sempre pula uma linha quando uso o código abaixo

  FileSeek(filehandle,0,SEEK_END);
  FileWrite(filehandle,xxx);

Se não uso o comando SEEK não grava nada
Que fazer para que não deixe linhas em branco?

então o dado que vc está gravando já contem um \n ou \r...

FileWrite() adiciona sempe um \r\n ao final da gravação da linha...

 
Flavio Jarabeck:

então o dado que vc está gravando já contem um \n ou \r...

FileWrite() adiciona sempe um \r\n ao final da gravação da linha...

Realmente, só pode ser esse motivo.
Mas que fazer se o dado que estou gravando vem das linhas abaixo?
  FileWrite(filehandle, DoubleToString(mrate[1].low,2)+"    ");
  FileFlush(filehandle);

 
Sergio Gelli:

Realmente, só pode ser esse motivo.
Mas que fazer se o dado que estou gravando vem das linhas abaixo?
  FileWrite(filehandle, DoubleToString(mrate[1].low,2)+"    ");
  FileFlush(filehandle);

tente fazer a gravação sem este +" " - acho que não tem utilidade já que grava somente uma variável por linha. se não der certo tente isso:

string v_arq = DoubleToString(mrate[1].low,2);
FileWrite(filehandle,v_arq);
 
Sergio Gelli:

Realmente, só pode ser esse motivo.
Mas que fazer se o dado que estou gravando vem das linhas abaixo?
  FileWrite(filehandle, DoubleToString(mrate[1].low,2)+"    ");
  FileFlush(filehandle);

Confesso que nunca usei FileWrite(), sempre usei FileWriteString()...

;)

 

Meus programas utilizo o FileWrite e grava somente as linhas das informações sem deixar linhas em branco.


              int h=FileOpen("Arquivo"+var0+".txt",FILE_READ|FILE_WRITE|FILE_ANSI|FILE_TXT|FILE_COMMON);
              FileSeek(h,0,SEEK_END);
              FileWrite(h,string(TimeCurrent())+";"+string(var1)+";",var2+";",string(var3)+";");
              FileClose(h);