Linha em branco no arquivo TXT

03/06/2008

0

[quote:7d908a956a=´Moderação´][color=red:7d908a956a]Título editado por Massuda

Por favor, não use apenas letras maiúsculas no título/texto.

No caso de reincidência, seus tópicos poderão vir a ser bloqueados.

Leia as :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.[/color:7d908a956a][/quote:7d908a956a]Após criar um arquivo TXT, a rotinha inclui um linha em branco no final do arquivo, que o programa que receber fala que o arquivo esta incorreto, como faço para não gerar esta linha a mais?

Grato


Rrodrigues_sts

Rrodrigues_sts

Responder

Posts

03/06/2008

Vitor Alcantara

Amigo coloque ai a sua rotina pra que possamos tentar lhe ajudar.


Responder

03/06/2008

Brunodsr

Posta o te código aí pra facilitar..

Mas acho que a bronca está no teu laço. Ele tá dando uma volta a mais.

Ou então vc tá usando o writeln que escreve e insere nova linha. Daí ao escrever a ultima, ele gera mais uma.

Mas vê aí..

Espero ter ajudado


Responder

03/06/2008

Rrodrigues_sts

Pessoal, segue o codigo, para avaliação


Arq:= ´C:\ESTOQUE\ARQUIVOS\ESTOQUEFF´+COPY(DateToStr(DATE()),1,2)+COPY(DateToStr(DATE()),4,2)+COPY(DateToStr(DATE()),7,4)+inttostr(Hour)+inttostr(Min)+inttostr(Seg)+inttostr(MSeg)+´.TXT´;
AssignFile(Local4, Arq);
Rewrite(Local4, arq);
WriteLn(Local4, ´HESTOQ0902097007000107´+COPY(DateToStr(DATE()),7,4)+COPY(DateToStr(DATE()),4,2)+COPY(DateToStr(DATE()),1,2) );

while not Table4.Eof do begin

// Cira codigo do produto
Acodprod := LRPad(Table4[´CODIGO´],14,´ ´,´R´);

// Cria quantidade com zeros a esquerda

Aqtdade := Trim(Table4[´quantidade´]);
Aqtdade := GeraZero(Aqtdade, 8);
WriteLn(Local4,´E59661132000107´+ACODPROD+AQTDADE+#13);
Table4.Next;
end;

CloseFile(Local4);


Responder

04/06/2008

Brunodsr

Como eu imaginei..

Vc ta escrevendo na linha e mandando pular uma logo em seguida.

WriteLn(Local4,´E59661132000107´+ACODPROD+AQTDADE+#13);

Você tem que tirar esse 13 daí veio, ou então colocá-lo no início.

Eu faria uma leitura do registro antes do loop e o restante dentro. Assim:

//Faz a primeira leitura fora e as demais dentro
Table4.first;
Acodprod := LRPad(Table4[´CODIGO´],14,´ ´,´R´);
Aqtdade := Trim(Table4[´quantidade´]);
Aqtdade := GeraZero(Aqtdade, Cool;
WriteLn(Local4,´E59661132000107´+ACODPROD+AQTDADE);
Table4.Next;
//O restante pode ser dentro, mas o 13 deve ficar antes de escrever
while not Table4.Eof do
begin
  Acodprod := LRPad(Table4[´CODIGO´],14,´ ´,´R´);
  Aqtdade := Trim(Table4[´quantidade´]);
  Aqtdade := GeraZero(Aqtdade, Cool;
  WriteLn(Local4,13+´E59661132000107´+ACODPROD+AQTDADE);
  Table4.Next;
end;
CloseFile(Local4);


Espero que tenha ajudado


Responder

04/06/2008

Rrodrigues_sts

Bruno

Muito obrigado pelo seu auxilio.
Grato pelo sua ajuda.


Responder

10/06/2008

Rrodrigues_sts

Bruno

Infelizmente não deu certo, gravando o primeiro registro antes do loop.

Tem alguma outra solução.

Grato


Responder

10/06/2008

Brunodsr

Vc lembrou de colocar o #13 antes de escrever??
WriteLn(Local4,13+´E59661132000107´+ACODPROD+AQTDADE); 


Aqui funciona na boa..


Responder

10/06/2008

Rjun

Em vez de usar o WriteLn, use uma TStringList para salvar seu texto.


Responder

16/06/2008

Rrodrigues_sts

Pessoal, fiz as duas situações, mas ainda continua criando um linha em branco no final do arquivo.

Ser que um alt+delte me elimina a linha??
E vocês sabem qual é o código asc deles.

Grato


Responder

16/06/2008

Emerson Nascimento

troque o WriteLn por Write


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar