Em termos de código, ficaria assim:

 

{ Troca as virgulas e aspas por ponto-e-vírgula }

function NormalizaLinha(sLinha: string): string;

begin

  Result := sLinha;

  Result := StringReplace(Result, '","', ';', [rfReplaceAll]);

  Result := StringReplace(Result, ',"', ';',  [rfReplaceAll]);

  Result := StringReplace(Result, '",', ';',  [rfReplaceAll]);

end;

 

procedure ImportarArquivo(NomeArquivo: string);

var

  sLinha: string;

  lArquivo, lLinha: TStringList;

begin

  if not FileExists(NomeArquivo) then

    Exit;

  lArquivo := TStringList.Create;

  try

    lArquivo.LoadFromFile(NomeArquivo);

    while lArquivo.Count > 0 do

    begin

      if not Assigned(lLinha) then

      begin

        lLinha := TStringList.Create;

        lLinha.Delimiter := ';';

      end;

      sLinha := NormalizeLinha(lArquivo[0]);

      lLinha.DelimitedText := sLinha;

 

      { Aqui, o StringList lLinha contém, em cada posição

        dentro dele, um valor separado. Aqui, poste o código

        para efetuar a importação do registro!  }

 

      lArquivo.Delete(0);

    end;

  finally

    if Assigned(lLinha) then lLinha.Free;

    lArquivo.Free;

  end;

end;

 

Sds.

 

 

 

De: Rubem Rocha [mailto:rubem.ro...@dtmanaus.com.br] 
Enviada em: terça-feira, 13 de julho de 2010 17:15
Para: 'delphi-br@yahoogrupos.com.br'
Assunto: RES: RES: [delphi-br] Importação de Arquivo
Prioridade: Alta

 

Simples! Faz um StringReplace() na linha lida fazendo as seguintes trocas:

 

1)      De [,”] para [;]

2)      De [“,] para [;]

3)      De [“,”] para [;]

 

Assim, a linha lida terá os valores dos campos delimitados por ponto-e-vírgula! 
Bem mais fácil pra ler, não?

 

Sds.

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome 
de Walter Chagas (Bol)
Enviada em: terça-feira, 13 de julho de 2010 17:06
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: RES: [delphi-br] Importação de Arquivo

 

  

Não não não não.

Da forma como você está propondo, voce supoe que entre os valores do tipo 
String (que são delimitados por aspas duplas) pode vir apenas um valor float. 
Mas e se vier dois ou mais na sequência?? Veja o caso abaixo:

"601","029",2.010,98,1.011,32,"01",20100517,17,05,20,10,"04","122","0003","2
","002","0000","33901400","130.00"

como ficaria este caso?

[]s


Walter Alves Chagas Junior
Belo Horizonte - MG - Brazil
wchag...@bol.com.br <mailto:wchagasj%40bol.com.br> 
http://delphitocorporerm.blogspot.com/
http://twitter.com/wchagas
MSN: whitesock...@hotmail.com <mailto:whitesockets%40hotmail.com> 
SKYPE: WalterChagasJr

----- Original Message ----- 
From: Marcelo 
To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>  
Sent: Tuesday, July 13, 2010 5:29 PM
Subject: Res: RES: [delphi-br] Importação de Arquivo

tem que trocar a aspa dupla junta Walter, ai não tem enigma , pois nos valores 
decimais não será substituida. Ai ele terá um separador padrão o ponto e 
virgula. depois fica facil.

________________________________
De: Walter Chagas (Bol) <wchag...@bol.com.br <mailto:wchagasj%40bol.com.br> >
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Enviadas: Terça-feira, 13 de Julho de 2010 17:09:01
Assunto: Re: RES: [delphi-br] Importação de Arquivo

é mas e a virgula dos valores decimais??

É um enigma essa parada daí.

[]s

Walter Alves Chagas Junior
Belo Horizonte - MG - Brazil
wchag...@bol.com.br <mailto:wchagasj%40bol.com.br> 
http://delphitocorporerm.blogspot.com/
http://twitter.com/wchagas
MSN: whitesock...@hotmail.com <mailto:whitesockets%40hotmail.com> 
SKYPE: WalterChagasJr

----- Original Message ----- 
From: Marcelo 
To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>  
Sent: Tuesday, July 13, 2010 5:04 PM
Subject: Res: RES: [delphi-br] Importação de Arquivo

Já pensou em dar um StringReplace nas "," trocando por ";" ai voce teria um 
separador padrão ai facaria muito mais facil de trabalhar

________________________________
De: Ralp Alves Bezerra <ral...@gmail.com <mailto:ralprd%40gmail.com> >
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Enviadas: Terça-feira, 13 de Julho de 2010 16:09:57
Assunto: RES: [delphi-br] Importação de Arquivo

Não estou conseguindo montar uma rotina para pegar os dados contidos dentro
das aspas duplas e delimitadas por vírgula.

Existe um campo no formato "100.000,00" que também contém vírgulas em seu
conteúdo.

De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>  
[mailto:delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> ] 
Em
nome de Rubem Nascimento da Rocha
Enviada em: terça-feira, 13 de julho de 2010 15:54
Para: delphi-br
Assunto: RE: [delphi-br] Importação de Arquivo
Prioridade: Alta

Qual é exatamente a sua dificuldade?

Sds.

To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>  
<mailto:delphi-br%40yahoogrupos.com.br> 
From: ral...@gmail.com <mailto:ralprd%40gmail.com>  <mailto:ralprd%40gmail.com> 
Date: Tue, 13 Jul 2010 15:50:44 -0300
Subject: [delphi-br] Importação de Arquivo

Nobres colegas, estou tentando importar para o meu banco de dados um arquivo
no formato txt com o formato abaixo:

"601","029",201000,"02","01",20100512,"12050002",201005,"04","122","0003","2
","002","0000","33901400","100.000,00"

"601","029",201000,"02","01",20100517,"17050003",201005,"04","122","0003","2
","002","0000","33901400","130.00"

"601","029",201000,"02","01",20100517,"17050004",201005,"04","122","0003","2
","002","0000","33901400","1.000,00"

"601","029",201000,"02","01",20100524,"24050005",201005,"04","122","0003","2
","003","0000","33903000","10.000,00"

"601","029",201000,"03","01",20100503,"03050009",201005,"04","122","0003","2
","006","0000","33903900","100,00"

Já vasculhei a net e até o momento ainda não consegui nenhum êxito.

Algum dos nobres colegas já efetuou este tipo de importação com um arquivo
neste formato?

Estou utilizando Delphi 7/Firebird 2.1

Grato.

Ralp Alves



 



[As partes desta mensagem que não continham texto foram removidas]

Responder a