Linha em branco no arquivo TXT
03/06/2008
0
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
Posts
03/06/2008
Vitor Alcantara
03/06/2008
Brunodsr
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
03/06/2008
Rrodrigues_sts
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);
04/06/2008
Brunodsr
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
04/06/2008
Rrodrigues_sts
Muito obrigado pelo seu auxilio.
Grato pelo sua ajuda.
10/06/2008
Rrodrigues_sts
Infelizmente não deu certo, gravando o primeiro registro antes do loop.
Tem alguma outra solução.
Grato
10/06/2008
Brunodsr
WriteLn(Local4,13+´E59661132000107´+ACODPROD+AQTDADE);
Aqui funciona na boa..
10/06/2008
Rjun
16/06/2008
Rrodrigues_sts
Ser que um alt+delte me elimina a linha??
E vocês sabem qual é o código asc deles.
Grato
Clique aqui para fazer login e interagir na Comunidade :)