Fórum ler txt e gravar txt #339127

22/03/2007

0

caros amigos preciso ler um arquivo txt e depois gerar o mesmo em txt so alterando a ordem colunas ........


o arquivo esta gerado assim

7896048202000 AZEITONA C/CAROCO CASTELO 200GR 9290 3,98
7896048280084 COGUMELOS CASTELO 100GR 9244 3,2
7891700032759 MAIONESE TARTARO ARISCO 250GR 8464 1,55
7891700032384 MAIONESE LIGHT ARISCO 500GR 8696 2,29



devo colocalo assim


Campo
Tamanho
Descrição

Tipo do registro
N(01)
Valor fixo = 2

Número do lote
N(07)
Preencher com zeros (função não implementada)

Código da operação
A(01)
Código da operação

I – Inclusão

A – Alteração

E – Exclusão

Código do produto
N(13)
Código de barras do produto, Para códigos com tamanho menor que 13 caracteres preencher com zeros no inicio do código.

Descrição
A(80)
Descrição do produto que será exibida no momento da consulta, lembrando que o display do QuickWay Checker tem quatro linhas com 20 caracteres cada linha, caso tenha alguma mensagem no local configurado para exibir o preço o sistema da prioridade para o preço omitindo a descrição neste local.

Preço
N(10)
Preço do produto com duas casas decimais alinhado a direita da linha configurada para preço (recomendado quarta linha).

CRLF (Enter)
X(02)
Valor fixo: 0D0A – Indica fim de registro.



desde ja agradeço


Emerson1

Emerson1

Responder

Posts

22/03/2007

Ffabiop

Na minha interpretação, não tem como identificar os campos pois o txt não tem um delimitador de campos, que poderia ser um ´;´ ou as colunas com um tamanho fixo. ex.:
7896048202000;AZEITONA C/CAROCO CASTELO 200GR;9290;3,98
7896048280084;COGUMELOS CASTELO 100GR;9244;3,2
7891700032759;MAIONESE TARTARO ARISCO 250GR;8464;1,55
7891700032384;MAIONESE LIGHT ARISCO 500GR;8696;2,29
ou
7896048202000AZEITONA C/CAROCO CASTELO 200GR92900003,98
7896048280084COGUMELOS CASTELO 100GR 92440003,20
7891700032759MAIONESE TARTARO ARISCO 250GR 84640001,55
7891700032384MAIONESE LIGHT ARISCO 500GR 86960002,29


Responder

Gostei + 0

22/03/2007

Ffabiop

Na minha interpretação, não tem como identificar os campos pois o txt não tem um delimitador de campos, que poderia ser um ´;´ ou as colunas com um tamanho fixo. ex.:
7896048202000;AZEITONA C/CAROCO CASTELO 200GR;9290;3,98
7896048280084;COGUMELOS CASTELO 100GR;9244;3,2
7891700032759;MAIONESE TARTARO ARISCO 250GR;8464;1,55
7891700032384;MAIONESE LIGHT ARISCO 500GR;8696;2,29
ou
7896048202000AZEITONA C/CAROCO CASTELO 200GR 92900003,98
7896048280084COGUMELOS CASTELO 100GR 92440003,20
7891700032759MAIONESE TARTARO ARISCO 250GR 84640001,55
7891700032384MAIONESE LIGHT ARISCO 500GR 86960002,29


Responder

Gostei + 0

22/03/2007

Ffabiop

Na minha interpretação, não tem como identificar os campos pois o txt não tem um delimitador de campos, que poderia ser um ´;´ ou as colunas com um tamanho fixo. ex.:
7896048202000;AZEITONA C/CAROCO CASTELO 200GR;9290;3,98
7896048280084;COGUMELOS CASTELO 100GR;9244;3,2
7891700032759;MAIONESE TARTARO ARISCO 250GR;8464;1,55
7891700032384;MAIONESE LIGHT ARISCO 500GR;8696;2,29
ou
7896048202000AZEITONA C/CAROCO CASTELO 200GR 92900003,98
7896048280084COGUMELOS CASTELO 100GR 92440003,20
7891700032759MAIONESE TARTARO ARISCO 250GR 84640001,55
7891700032384MAIONESE LIGHT ARISCO 500GR 86960002,29


Responder

Gostei + 0

22/03/2007

Emerson1

ffabiop

desculpa mas foi na hora de grava, mas o arquivo fica assim tudo na sua coluna

codbarra descrição preço

7896048280084 COGUMELOS CASTELO 100GR 9244 3,2
7891700032759 MAIONESE TARTARO ARISCO 250GR 8464 1,55
7891700032384 MAIONESE LIGHT ARISCO 500GR 8696 2,29


Responder

Gostei + 0

22/03/2007

Emerson1

cod barra descriçao preço

789 teste 3,5


Responder

Gostei + 0

22/03/2007

Ffabiop

var
Origem, destino: TextFile;
aux, Linha, texto:String;
begin

AssignFile(Origem,c:\produtos.txt);
Reset(Origem);
AssignFile(Destino,c:\produtos1.txt);
Reset(Origem);

// leitura arquivo txt até o fim
while not eof(Origem) do
begin
Readln(Origem,Texto);

//Para pegar o campo desejado
Aux := trim(Copy(texto,14,50));// copia da posição 14, 50 caracteres(tamanho do campo);
// Preenche com tamanho 80
while Length(Aux) < 80 do
Aux := Aux + ´ ´;
Linha := Aux;
// grava a linha
writeln(Destino,Linha);
end;
CloseFile(Origem);
CloseFile(Destino);
end;

bom é maio ou menos isso, é pra você ter uma idéia de como funciona leitura e gravação de txts


Responder

Gostei + 0

23/03/2007

Emerson1

ffabiop muito obrigado pela força

fiço assim, mas deu erro

var
Origem, Destino: TextFile;
aux,aux1,aux2, Linha, texto:String;
begin

AssignFile(Origem,´c:\teste.txt´);
Reset(Origem);
AssignFile(Destino,´c:\testea.txt´);
Reset(Destino);

// leitura arquivo txt até o fim
while not eof(Origem) do
begin
Readln(Origem,Texto);

//Para pegar o campo desejado
Aux := trim(Copy(texto,1,13));// copia da posição 14, 50 caracteres(tamanho do campo);
aux1:= trim (Copy(texto,32,72));
aux2:= trim(copy (texto,74,84));
// Preenche com tamanho 80
while Length(Aux) < 13 do
Aux := Aux + ´ ´;
while Length(Aux1) < 80 do
Aux1 := Aux1 + ´ ´;
while Length(Aux2) < 11 do
Aux2 := Aux2 + ´ ´;
Linha := Aux + aux1 + aux2;
// grava a linha
writeln(Destino,Linha);///////// o erro da aqui e eu não sei o que e
end;


CloseFile(Origem);
CloseFile(Destino);
end;


Responder

Gostei + 0

23/03/2007

Ffabiop

Poxa vida, não sei o erro que é mais pode ser aqui:
AssignFile(Origem,´c:\teste.txt´);
Reset(Origem);
AssignFile(Destino,´c:\testea.txt´);
//Reset(Destino);//Reset é para ler somente
Rewrite(destino);

Se der errado manda o que o delphi tá te dizendo.


Responder

Gostei + 0

23/03/2007

Emerson1

ffabiop.....muito obrigado funcionou blzzzzz


Responder

Gostei + 0

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

Aceitar