Linha em branco no arquivo TXT
[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
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
Curtidas 0
Respostas
Vitor Alcantara
03/06/2008
Amigo coloque ai a sua rotina pra que possamos tentar lhe ajudar.
GOSTEI 0
Brunodsr
03/06/2008
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
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
GOSTEI 0
Rrodrigues_sts
03/06/2008
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);
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);
GOSTEI 0
Brunodsr
03/06/2008
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:
Espero que tenha ajudado
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
GOSTEI 0
Rrodrigues_sts
03/06/2008
Bruno
Muito obrigado pelo seu auxilio.
Grato pelo sua ajuda.
Muito obrigado pelo seu auxilio.
Grato pelo sua ajuda.
GOSTEI 0
Rrodrigues_sts
03/06/2008
Bruno
Infelizmente não deu certo, gravando o primeiro registro antes do loop.
Tem alguma outra solução.
Grato
Infelizmente não deu certo, gravando o primeiro registro antes do loop.
Tem alguma outra solução.
Grato
GOSTEI 0
Brunodsr
03/06/2008
Vc lembrou de colocar o #13 antes de escrever??
Aqui funciona na boa..
WriteLn(Local4,13+´E59661132000107´+ACODPROD+AQTDADE);
Aqui funciona na boa..
GOSTEI 0
Rjun
03/06/2008
Em vez de usar o WriteLn, use uma TStringList para salvar seu texto.
GOSTEI 0
Rrodrigues_sts
03/06/2008
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
Ser que um alt+delte me elimina a linha??
E vocês sabem qual é o código asc deles.
Grato
GOSTEI 0
Emerson Nascimento
03/06/2008
troque o WriteLn por Write
GOSTEI 0