ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Criar arquivo txt numa posição definida

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
amunizbrr
Novato
Novato


Registrado: Terça-Feira, 26 de Mai de 2015
Mensagens: 7

MensagemEnviada: Ter Mai 26, 2015 6:49 pm    Assunto: Criar arquivo txt numa posição definida Responder com Citação

Ola experts,

Estou tentando criar um arquivo txt com nas seguintes posições mas estou com dificuldade

--HEADER---
LINHA1
1-2:00(FIXO)
3-9:REMESSA(FIXO)
10-17:DDMMAAA
18-25:NUMEROSEQUENCIAL
26-30:001(FIXO)
--TRAILER--
LINHA2
1-2:99
3-8:QTDREGISTROS(QUERY DO BANCO DE DADOS)
9-324:EM BRANCO
325-340:NUMEROSEQUENCIAL(MESMO DO HEADER)
--CONSUMIDOR--
1-2:00(FIXO)
3-18:CPFCNPJ(QUERY PARA TRAZER CPF OU CNPJ)
---------------
O nome do arquivo obrigatório ser: REG_AAAAMMDD_HHMI.TXT

Alguma dica?

Obg
Anderson
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Ter Mai 26, 2015 11:08 pm    Assunto: Re: Criar arquivo txt numa posição definida Responder com Citação

amunizbrr escreveu:
Ola experts,

Estou tentando criar um arquivo txt com nas seguintes posições mas estou com dificuldade

--HEADER---
LINHA1
1-2:00(FIXO)
3-9:REMESSA(FIXO)
10-17:DDMMAAA
18-25:NUMEROSEQUENCIAL
26-30:001(FIXO)
--TRAILER--
LINHA2
1-2:99
3-8:QTDREGISTROS(QUERY DO BANCO DE DADOS)
9-324:EM BRANCO
325-340:NUMEROSEQUENCIAL(MESMO DO HEADER)
--CONSUMIDOR--
1-2:00(FIXO)
3-18:CPFCNPJ(QUERY PARA TRAZER CPF OU CNPJ)
---------------
O nome do arquivo obrigatório ser: REG_AAAAMMDD_HHMI.TXT

Alguma dica?

Obg
Anderson


use a função formatfloat para os numeros e AddEspaco para texto

--HEADER---
LINHA1
1-2:fomatfloat('00',valor1); -> 00(FIXO)
3-9:fomatfloat('000000000',valor2); -> REMESSA(FIXO)
10-17:fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA); -> DDMMAAAA
18-25:fomatfloat('00000000',valor3); -> NUMEROSEQUENCIAL
26-30:fomatfloat('00000',valor4); -> 001(FIXO)

ficando
Código:
HEADER:=fomatfloat('00',valor1)+fomatfloat('000000000',valor2)+fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA)+fomatfloat('00000000',valor3)+fomatfloat('00000',valor4);


--TRAILER--
LINHA2
1-2:fomatfloat('00',valor5); -> 99
3-8:fomatfloat('000000',valor6); -> QTDREGISTROS(QUERY DO BANCO DE DADOS)
9-324:AddEspaco(txt1,316); -> EM BRANCO
325-340:AddEspaco(txt2,26); -> NUMEROSEQUENCIAL(MESMO DO HEADER)

ficando
Código:
TRAILER:=fomatfloat('00',valor5)+fomatfloat('000000',valor6)+AddEspaco(txt1,315)+AddEspaco(txt1,25);



--CONSUMIDOR--
1-2:fomatfloat('00',valor7); -> 00(FIXO)
3-18:AddEspaco(txt3,16); -> CPFCNPJ(QUERY PARA TRAZER CPF OU CNPJ)

ficando
Código:
CONSUMIDOR:=fomatfloat('00',valor7)+AddEspaco(txt3,16);



assim todo o codigo fica

Código:


function AddEspaco(txt:string;lim:integer):string;
begin
if length(txt)<lim then
while length(txt)<lim do
begin
txt:=txt+' ';
end else
if length(txt)>lim then
txt:=copy(txt,1,lim);
result:=txt;
end;

...

procedure Tform1.Button1click(sender:tobject);
var
FileText:tstrings;
HEADER,TRAILER,CONSUMIDOR:string;
begin

HEADER:=fomatfloat('00',valor1)+fomatfloat('000000000',valor2)+fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA)+fomatfloat('00000000',valor3)+fomatfloat('00000',valor4);
TRAILER:=fomatfloat('00',valor5)+fomatfloat('000000',valor6)+AddEspaco(txt1,315)+AddEspaco(txt1,25);
CONSUMIDOR:=fomatfloat('00',valor7)+AddEspaco(txt3,16);

FileText:=Tstringlist.create;
FileText.add(HEADER);
FileText.add(TRAILER);
FileText.add(CONSUMIDOR);
FileText.salvetofile('REG_'+formatdate('YYYYMMDD_',date)+formatdate('HHNN',time)+'.txt');
end;

_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
amunizbrr
Novato
Novato


Registrado: Terça-Feira, 26 de Mai de 2015
Mensagens: 7

MensagemEnviada: Qua Mai 27, 2015 1:09 pm    Assunto: Re: Criar arquivo txt numa posição definida Responder com Citação

strak2012 escreveu:
amunizbrr escreveu:
Ola experts,

Estou tentando criar um arquivo txt com nas seguintes posições mas estou com dificuldade

--HEADER---
LINHA1
1-2:00(FIXO)
3-9:REMESSA(FIXO)
10-17:DDMMAAA
18-25:NUMEROSEQUENCIAL
26-30:001(FIXO)
--TRAILER--
LINHA2
1-2:99
3-8:QTDREGISTROS(QUERY DO BANCO DE DADOS)
9-324:EM BRANCO
325-340:NUMEROSEQUENCIAL(MESMO DO HEADER)
--CONSUMIDOR--
1-2:00(FIXO)
3-18:CPFCNPJ(QUERY PARA TRAZER CPF OU CNPJ)
---------------
O nome do arquivo obrigatório ser: REG_AAAAMMDD_HHMI.TXT

Alguma dica?

Obg
Anderson


use a função formatfloat para os numeros e AddEspaco para texto

--HEADER---
LINHA1
1-2:fomatfloat('00',valor1); -> 00(FIXO)
3-9:fomatfloat('000000000',valor2); -> REMESSA(FIXO)
10-17:fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA); -> DDMMAAAA
18-25:fomatfloat('00000000',valor3); -> NUMEROSEQUENCIAL
26-30:fomatfloat('00000',valor4); -> 001(FIXO)

ficando
Código:
HEADER:=fomatfloat('00',valor1)+fomatfloat('000000000',valor2)+fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA)+fomatfloat('00000000',valor3)+fomatfloat('00000',valor4);


--TRAILER--
LINHA2
1-2:fomatfloat('00',valor5); -> 99
3-8:fomatfloat('000000',valor6); -> QTDREGISTROS(QUERY DO BANCO DE DADOS)
9-324:AddEspaco(txt1,316); -> EM BRANCO
325-340:AddEspaco(txt2,26); -> NUMEROSEQUENCIAL(MESMO DO HEADER)

ficando
Código:
TRAILER:=fomatfloat('00',valor5)+fomatfloat('000000',valor6)+AddEspaco(txt1,315)+AddEspaco(txt1,25);



--CONSUMIDOR--
1-2:fomatfloat('00',valor7); -> 00(FIXO)
3-18:AddEspaco(txt3,16); -> CPFCNPJ(QUERY PARA TRAZER CPF OU CNPJ)

ficando
Código:
CONSUMIDOR:=fomatfloat('00',valor7)+AddEspaco(txt3,16);



assim todo o codigo fica

Código:


function AddEspaco(txt:string;lim:integer):string;
begin
if length(txt)<lim then
while length(txt)<lim>lim then
txt:=copy(txt,1,lim);
result:=txt;
end;

...

procedure Tform1.Button1click(sender:tobject);
var
FileText:tstrings;
HEADER,TRAILER,CONSUMIDOR:string;
begin

HEADER:=fomatfloat('00',valor1)+fomatfloat('000000000',valor2)+fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA)+fomatfloat('00000000',valor3)+fomatfloat('00000',valor4);
TRAILER:=fomatfloat('00',valor5)+fomatfloat('000000',valor6)+AddEspaco(txt1,315)+AddEspaco(txt1,25);
CONSUMIDOR:=fomatfloat('00',valor7)+AddEspaco(txt3,16);

FileText:=Tstringlist.create;
FileText.add(HEADER);
FileText.add(TRAILER);
FileText.add(CONSUMIDOR);
FileText.salvetofile('REG_'+formatdate('YYYYMMDD_',date)+formatdate('HHNN',time)+'.txt');
end;


Olá,

fiz um pequeno ajuste do código e coloquei na aplicação porém quando tendo rodar me apresenta 1 erro:
1.) [dcc32 Error] Unit3.pas(51): E2250 There is no overloaded version of 'FormatFloat' that can be called with these arguments

Obrigado pela ajuda
Anderson
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
amunizbrr
Novato
Novato


Registrado: Terça-Feira, 26 de Mai de 2015
Mensagens: 7

MensagemEnviada: Qua Mai 27, 2015 1:59 pm    Assunto: Re: Criar arquivo txt numa posição definida Responder com Citação

amunizbrr escreveu:
strak2012 escreveu:
amunizbrr escreveu:
Ola experts,

Estou tentando criar um arquivo txt com nas seguintes posições mas estou com dificuldade

--HEADER---
LINHA1
1-2:00(FIXO)
3-9:REMESSA(FIXO)
10-17:DDMMAAA
18-25:NUMEROSEQUENCIAL
26-30:001(FIXO)
--TRAILER--
LINHA2
1-2:99
3-8:QTDREGISTROS(QUERY DO BANCO DE DADOS)
9-324:EM BRANCO
325-340:NUMEROSEQUENCIAL(MESMO DO HEADER)
--CONSUMIDOR--
1-2:00(FIXO)
3-18:CPFCNPJ(QUERY PARA TRAZER CPF OU CNPJ)
---------------
O nome do arquivo obrigatório ser: REG_AAAAMMDD_HHMI.TXT

Alguma dica?

Obg
Anderson


use a função formatfloat para os numeros e AddEspaco para texto

--HEADER---
LINHA1
1-2:fomatfloat('00',valor1); -> 00(FIXO)
3-9:fomatfloat('000000000',valor2); -> REMESSA(FIXO)
10-17:fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA); -> DDMMAAAA
18-25:fomatfloat('00000000',valor3); -> NUMEROSEQUENCIAL
26-30:fomatfloat('00000',valor4); -> 001(FIXO)

ficando
Código:
HEADER:=fomatfloat('00',valor1)+fomatfloat('000000000',valor2)+fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA)+fomatfloat('00000000',valor3)+fomatfloat('00000',valor4);


--TRAILER--
LINHA2
1-2:fomatfloat('00',valor5); -> 99
3-8:fomatfloat('000000',valor6); -> QTDREGISTROS(QUERY DO BANCO DE DADOS)
9-324:AddEspaco(txt1,316); -> EM BRANCO
325-340:AddEspaco(txt2,26); -> NUMEROSEQUENCIAL(MESMO DO HEADER)

ficando
Código:
TRAILER:=fomatfloat('00',valor5)+fomatfloat('000000',valor6)+AddEspaco(txt1,315)+AddEspaco(txt1,25);



--CONSUMIDOR--
1-2:fomatfloat('00',valor7); -> 00(FIXO)
3-18:AddEspaco(txt3,16); -> CPFCNPJ(QUERY PARA TRAZER CPF OU CNPJ)

ficando
Código:
CONSUMIDOR:=fomatfloat('00',valor7)+AddEspaco(txt3,16);



assim todo o codigo fica

Código:


function AddEspaco(txt:string;lim:integer):string;
begin
if length(txt)<lim then
while length(txt)<lim>lim then
txt:=copy(txt,1,lim);
result:=txt;
end;

...

procedure Tform1.Button1click(sender:tobject);
var
FileText:tstrings;
HEADER,TRAILER,CONSUMIDOR:string;
begin

HEADER:=fomatfloat('00',valor1)+fomatfloat('000000000',valor2)+fomatfloat('00',DD)+fomatfloat('00',MM)+fomatfloat('0000',AAAA)+fomatfloat('00000000',valor3)+fomatfloat('00000',valor4);
TRAILER:=fomatfloat('00',valor5)+fomatfloat('000000',valor6)+AddEspaco(txt1,315)+AddEspaco(txt1,25);
CONSUMIDOR:=fomatfloat('00',valor7)+AddEspaco(txt3,16);

FileText:=Tstringlist.create;
FileText.add(HEADER);
FileText.add(TRAILER);
FileText.add(CONSUMIDOR);
FileText.salvetofile('REG_'+formatdate('YYYYMMDD_',date)+formatdate('HHNN',time)+'.txt');
end;


Olá,

fiz um pequeno ajuste do código e coloquei na aplicação porém quando tendo rodar me apresenta 1 erro:
1.) [dcc32 Error] Unit3.pas(51): E2250 There is no overloaded version of 'FormatFloat' that can be called with these arguments

Obrigado pela ajuda
Anderson


Olá,

Fiz um ajuste novamente e consegui corrigir o erro. Vou parametrizar todo arquivo e testar.

Depois apresento o resultado.

Obrigado pela ajuda.
Anderson
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
amunizbrr
Novato
Novato


Registrado: Terça-Feira, 26 de Mai de 2015
Mensagens: 7

MensagemEnviada: Qua Mai 27, 2015 3:21 pm    Assunto: Re: Criar arquivo txt numa posição definida Responder com Citação

Olá experts,

Estou conseguindo gerar arquivo mas preciso fazer alguns ajustes que não estou conseguindo

tem um campo
UnidadeNegocio posicao 318-322 tamanho 5. Valor Fixo SPC

Eu tentei formatfloat('%5s',[SPC]) mas não funcionou. Preenche o campo porém tamanho 3.

Como faço ?

Obrigado
Anderson
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qua Mai 27, 2015 3:32 pm    Assunto: Re: Criar arquivo txt numa posição definida Responder com Citação

amunizbrr escreveu:
Olá experts,

Estou conseguindo gerar arquivo mas preciso fazer alguns ajustes que não estou conseguindo

tem um campo
UnidadeNegocio posicao 318-322 tamanho 5. Valor Fixo SPC

Eu tentei formatfloat('%5s',[SPC]) mas não funcionou. Preenche o campo porém tamanho 3.

Como faço ?

Obrigado
Anderson


Código:
function AddEspaco(txt:string;lim:integer):string;
begin

if length(txt)<lim then
while length(txt)<lim do
begin
txt:=txt+' ';
end;

if length(txt)>lim then
txt:=copy(txt,1,lim);

result:=txt;
end;


em vez de
formatfloat('%5s',[SPC]);
use
AddEspaco(SPC,5);
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
amunizbrr
Novato
Novato


Registrado: Terça-Feira, 26 de Mai de 2015
Mensagens: 7

MensagemEnviada: Qui Mai 28, 2015 10:44 am    Assunto: Re: Criar arquivo txt numa posição definida Responder com Citação

strak2012 escreveu:
amunizbrr escreveu:
Olá experts,

Estou conseguindo gerar arquivo mas preciso fazer alguns ajustes que não estou conseguindo

tem um campo
UnidadeNegocio posicao 318-322 tamanho 5. Valor Fixo SPC

Eu tentei formatfloat('%5s',[SPC]) mas não funcionou. Preenche o campo porém tamanho 3.

Como faço ?

Obrigado
Anderson


Código:
function AddEspaco(txt:string;lim:integer):string;
begin

if length(txt)<lim then
while length(txt)<lim>lim then
txt:=copy(txt,1,lim);

result:=txt;
end;


em vez de
formatfloat('%5s',[SPC]);
use
AddEspaco(SPC,5);


Ola Expert,

Funcionou.

Obrigado
Anderson
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB