segue a forma de você resolver: ( Eu coloquei um ClientDatSet no form e criei 15 Fields chamdos: campo1...2..3..4..15 como string e campo16 como Float, os tamanhos são de acordo a cada campo do txt )
procedure TForm1.Button1Click(Sender: TObject); var arq: TextFile; linha:string; begin ClientDataSet1.CreateDataSet; AssignFile(arq,'dados.txt'); Reset(arq); while not Eof(arq) do begin ClientDataSet1.Append; ReadLn(arq,linha);//Ler os dados da linha; linha := StringReplace(linha,',',';',[rfReplaceAll]); linha := StringReplace(linha,'"','',[rfReplaceAll]); //Delete(linha,1,1);//apaga a 1ª aspas duplas; ClientDataSet1.Fields[0].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[1].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[2].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[3].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[4].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[5].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[6].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[7].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[8].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[9].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[10].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[11].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[12].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[13].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); ClientDataSet1.Fields[14].AsString := Copy(linha,1,Pos(';',linha)-1); Delete(linha,1,Pos(';',linha)); linha := StringReplace(linha,'.','',[rfReplaceAll]);//Transforma os '.' em ',' para separar a casa de milar; linha := StringReplace(linha,';',',',[rfReplaceAll]);//Transforma os ';' em '.' para separar a casa decimal; ClientDataSet1.Fields[15].AsFloat := StrToFloat(linha);//FormatFloat('###,###,#0.00',StrToFloat(linha)); ClientDataSet1.Post; end; end; espero ter ajudado. =================================== Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br =================================== ________________________________ De: Rubem Rocha <rubem.ro...@dtmanaus.com.br> Para: Rubem Rocha <rubem.ro...@dtmanaus.com.br>; delphi-br@yahoogrupos.com.br Enviadas: Terça-feira, 13 de Julho de 2010 18:20:12 Assunto: RES: RES: [delphi-br] Importação de Arquivo 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] [As partes desta mensagem que não continham texto foram removidas]