Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2738 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

ola podem me dar uma dica, estou precisando fazer um arquivo txt

DESSE FORMATO tem algum componente da acbr que faz isso exemplo

A;12024;389141;FULANO ;RUA TESTE;S/N;CIDADE TESTE;(77)9999-9999;
B;12024;389141;2113060;MSL;3;20160610;20160910;2500;
B;12024;389141;2029462;MSL;9;20151214;20160915;2500;
B;12024;389141;2029463;MSL;9;20151214;20160915;2500;
B;12024;389141;2029464;OBT;9;20151214;20160915;2500;
B;12024;389141;2029465;ALG;9;20151214;20160915;2500;

 

 

Postado (editado)

Use este procedimento para leitura :

procedure Split(const Delimiter: Char; Value: string; const Strings: TStrings) ;
begin
Assert(Assigned(Strings)) ;
Strings.Clear ;
Strings.Delimiter       := Delimiter ;
Strings.StrictDelimiter := True ;
Strings.DelimitedText   := Value ;
end;

 

Exemplo de Uso :

  procedure Cadastra_COOs ;
    var Arquivo_COO      : TStrings ;
        Data_Doc         : String ;
        ECF_Modelo       : String ;
        ECF_Numero_Serie : String ;
        ECF_Numero       : String ;
        Numero_Pdv       : String ;
        COO              : String ;
        Valor            : String ;
  begin
  Arquivo_COO:=TStringList.create ;
  Arquivo_COO.Clear ;
  try
  Split(';' , 'B;12024;389141;2029465;ALG;9;20151214;20160915;2500' , Arquivo_COO) ; // Delimeter pode ser '|' ou outro utilizado no seu arquivo

  Data_Doc         := Arquivo_COO.Strings[0]  ;
  ECF_Modelo       := Arquivo_COO.Strings[1] ;
  ECF_Numero_Serie := Arquivo_COO.Strings[2] ;
  ECF_Numero       := Arquivo_COO.Strings[3] ;
  Numero_Pdv       := Arquivo_COO.Strings[4] ;
  COO              := Arquivo_COO.Strings[5] ;
  Valor            := Arquivo_COO.Strings[6] ;

  with Qry_Avulsa_Temp do
       begin
       close ;
       sql.clear ;
       sql.text := 'insert into #'+ FrmPrincipal.SysInfo.ComputerName + 'COOS_Vinculados' + ' ( CodigoReferenciaNF ,'   +
                                                                                               'Data_Doc ,'             +
                                                                                               'ECF_Modelo  ,'          +
                                                                                               'ECF_Numero_Serie  ,'    +
                                                                                               'ECF_Numero  ,'          +
                                                                                               'Numero_Pdv ,'           +
                                                                                               'COO ,'                  +
                                                                                               'Valor )'                +
                                                                                               'values('                +
                                                                                               ':CodigoReferenciaNF ,'  +
                                                                                               ':Data_Doc ,'            +
                                                                                               ':ECF_Modelo , '         +
                                                                                               ':ECF_Numero_Serie ,'    +
                                                                                               ':ECF_Numero ,'          +
                                                                                               ':Numero_Pdv ,'          +
                                                                                               ':COO ,'                 +
                                                                                               ':Valor )' ;
       ParamByName('CodigoReferenciaNF').asinteger   := CodigoReferenciaNF ;
       ParamByName('Data_Doc').AsDate                := StrToDate(Data_Doc) ;
       ParamByName('ECF_Modelo').asstring            := ECF_Modelo ;
       ParamByName('ECF_Numero_Serie').asstring      := ECF_Numero_Serie ;
       ParamByName('ECF_Numero').asstring            := ECF_Numero ;
       ParamByName('Numero_Pdv').asstring            := Numero_Pdv ;
       ParamByName('COO').asstring                   := COO ;
       ParamByName('Valor').AsFloat                  := StrToFloat(Valor) ;
       ExecSQL ;
       end;
  finally
    Arquivo_COO.Free ;
  end;
  end;

Editado por marcelo_sp
Postado
1 hora atrás, dreamsoft_PR disse:

certo! obrigado... e para criar? :-D

Como assim ? Criar oque ?

Acima é somente uma chamada para quebrar os campos delimitados , vc usa o procedimento da maneira que quiser , não tem que criar nada .

Isso acima é só um exemplo .

 

Postado (editado)

vc passou a procedure para ler,  ai perguntei no caso tambem para criar o arquivo com formato como citei acima porque essa é para ler certo.. e para criar o txt ?

A;12024;389141;FULANO ;RUA TESTE;S/N;CIDADE TESTE;(77)9999-9999;
B;12024;389141;2113060;MSL;3;20160610;20160910;2500;
B;12024;389141;2029462;MSL;9;20151214;20160915;2500;
B;12024;389141;2029463;MSL;9;20151214;20160915;2500;
B;12024;389141;2029464;OBT;9;20151214;20160915;2500;
B;12024;389141;2029465;ALG;9;20151214;20160915;2500;

Editado por dreamsoft_PR
Postado

procedure Cria_Arquivo ;
    var Arquivo  : TStrings ;
  begin
  Arquivo  :=TStringList.create ;
  try

  Arquivo.Clear ;

  Arquivo.add('A;12024;389141;FULANO ;RUA TESTE;S/N;CIDADE TESTE;(77)9999-9999;');
  Arquivo.add('B;12024;389141;2113060;MSL;3;20160610;20160910;2500;');

  Arquivo.SaveToFile('c:\Meu_Arquivo.txt');

  finally
    Arquivo.Free ;
  end;
  end;

Postado

obrigado pelas dicas, so tenho outra duvida vcs sabem como acessar via FTP usando o delphi para salvar e depois baixar um arqquivo procurei na net achei usanod id so que tem campos que nao reconhece.. estou usando  o delphi xe10

  • 1 mês depois ...
Postado
Em 2017-4-11 at 14:24, marcelo_sp disse:

procedure Cria_Arquivo ;
    var Arquivo  : TStrings ;
  begin
  Arquivo  :=TStringList.create ;
  try

  Arquivo.Clear ;

  Arquivo.add('A;12024;389141;FULANO ;RUA TESTE;S/N;CIDADE TESTE;(77)9999-9999;');
  Arquivo.add('B;12024;389141;2113060;MSL;3;20160610;20160910;2500;');

  Arquivo.SaveToFile('c:\Meu_Arquivo.txt');

  finally
    Arquivo.Free ;
  end;
  end;

ol

 

Em 2017-4-11 at 11:58, marcelo_sp disse:

Use este procedimento para leitura :

procedure Split(const Delimiter: Char; Value: string; const Strings: TStrings) ;
begin
Assert(Assigned(Strings)) ;
Strings.Clear ;
Strings.Delimiter       := Delimiter ;
Strings.StrictDelimiter := True ;
Strings.DelimitedText   := Value ;
end;

 

Exemplo de Uso :

  procedure Cadastra_COOs ;
    var Arquivo_COO      : TStrings ;
        Data_Doc         : String ;
        ECF_Modelo       : String ;
        ECF_Numero_Serie : String ;
        ECF_Numero       : String ;
        Numero_Pdv       : String ;
        COO              : String ;
        Valor            : String ;
  begin
  Arquivo_COO:=TStringList.create ;
  Arquivo_COO.Clear ;
  try
  Split(';' , 'B;12024;389141;2029465;ALG;9;20151214;20160915;2500' , Arquivo_COO) ; // Delimeter pode ser '|' ou outro utilizado no seu arquivo

  Data_Doc         := Arquivo_COO.Strings[0]  ;
  ECF_Modelo       := Arquivo_COO.Strings[1] ;
  ECF_Numero_Serie := Arquivo_COO.Strings[2] ;
  ECF_Numero       := Arquivo_COO.Strings[3] ;
  Numero_Pdv       := Arquivo_COO.Strings[4] ;
  COO              := Arquivo_COO.Strings[5] ;
  Valor            := Arquivo_COO.Strings[6] ;

  with Qry_Avulsa_Temp do
       begin
       close ;
       sql.clear ;
       sql.text := 'insert into #'+ FrmPrincipal.SysInfo.ComputerName + 'COOS_Vinculados' + ' ( CodigoReferenciaNF ,'   +
                                                                                               'Data_Doc ,'             +
                                                                                               'ECF_Modelo  ,'          +
                                                                                               'ECF_Numero_Serie  ,'    +
                                                                                               'ECF_Numero  ,'          +
                                                                                               'Numero_Pdv ,'           +
                                                                                               'COO ,'                  +
                                                                                               'Valor )'                +
                                                                                               'values('                +
                                                                                               ':CodigoReferenciaNF ,'  +
                                                                                               ':Data_Doc ,'            +
                                                                                               ':ECF_Modelo , '         +
                                                                                               ':ECF_Numero_Serie ,'    +
                                                                                               ':ECF_Numero ,'          +
                                                                                               ':Numero_Pdv ,'          +
                                                                                               ':COO ,'                 +
                                                                                               ':Valor )' ;
       ParamByName('CodigoReferenciaNF').asinteger   := CodigoReferenciaNF ;
       ParamByName('Data_Doc').AsDate                := StrToDate(Data_Doc) ;
       ParamByName('ECF_Modelo').asstring            := ECF_Modelo ;
       ParamByName('ECF_Numero_Serie').asstring      := ECF_Numero_Serie ;
       ParamByName('ECF_Numero').asstring            := ECF_Numero ;
       ParamByName('Numero_Pdv').asstring            := Numero_Pdv ;
       ParamByName('COO').asstring                   := COO ;
       ParamByName('Valor').AsFloat                  := StrToFloat(Valor) ;
       ExecSQL ;
       end;
  finally
    Arquivo_COO.Free ;
  end;
  end;

ola pode me tirar so outra duvida como faço para ir para 2º ,3º 4º linha do arquivo 

Postado

obrigado pelas dicas tem me ajuda muito so estou com duvida 

Split(';' , 'B;12024;389141;2029465;ALG;9;20151214;20160915;2500' , Arquivo_COO) ; // Delimeter pode ser '|' ou outro utilizado no seu arquivo

nesse aqui para colocar no lugar para ir lento as linhas do arquivo txt 

esse que vc me passou nao achei no codigo que esta acima 

Arquivo_List.Strings

eu fiz assim mas ele esta pegando toda a linha

 

  try
   While not Eof(f) do BEGIN
      Readln(f, Linha);

  Split(';' , Linha , Arquivo_COO) ;

 ShowMessage(Arquivo_COO.Strings[0]);

nao esta separando pelos ;

seria

A

b

perdao deu certinho sim. rss muito obrigado!""!!!!

fiz assim deu certo sim.. valeu mesmo!!! exemplo

  try
   While not Eof(f) do BEGIN
      Readln(f, Linha);

  Split(';' , Linha , Arquivo_COO) ; // Delimeter pode ser '|' ou outro utilizado no seu arquivo
    ShowMessage(Arquivo_COO.Strings[0]);


  Data_Doc         := Arquivo_COO.Strings[0]  ;
  ECF_Modelo       := Arquivo_COO.Strings[1] ;
  ECF_Numero_Serie := Arquivo_COO.Strings[2] ;
  ECF_Numero       := Arquivo_COO.Strings[3] ;
  Numero_Pdv       := Arquivo_COO.Strings[4] ;
  COO              := Arquivo_COO.Strings[5] ;
  Valor            := Arquivo_COO.Strings[6] ;

   END;
  finally
     Arquivo_COO.Free ;
     CloseFile(f);
  end;
 

  • Este tópico foi criado há 2738 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.