você nao viu a solução que eu mandei ontem?

=============

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: Ralp Alves Bezerra <ral...@gmail.com>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quarta-feira, 14 de Julho de 2010 12:45:15
Assunto: RES: RES: RES: [delphi-br] Importação de Arquivo

  
Desculpe pessoal é porque eu realmente nunca importei um arquivo de texto
com esta estrutura.

Seguindo a dica do Rubem, consegui esta procedure para tratar o arquivo
antes da importação:

procedure  FileReplaceString( const FileName, searchstring, replacestring:
string  );
var
fs: TFileStream;
S: string ;
begin
fs := TFileStream.Create(FileName, fmOpenread or fmShareDenyNone);
try
SetLength(S, fs.Size);
fs.ReadBuffer(S[1], fs.Size);
finally
fs.Free;
end ;
S  := StringReplace(S, SearchString, replaceString, [rfReplaceAll,
rfIgnoreCase]);
fs := TFileStream.Create(FileName, fmCreate);
try
fs.WriteBuffer(S[1], Length(S));
finally
fs.Free;
end ;

Estou utilizando da seguinte maneira:

StringReplace(Entrada, ',"'  ,  ';'  , [rfReplaceAll] );
StringReplace(Entrada, '",'  ,  ';'  , [rfReplaceAll] );
StringReplace(Entrada, '","'  ,  ';'  , [rfReplaceAll] );

Funcionou parcialmente. O problema agora é com os campos do tipo float que
não estão entre aspas duplas. Eles continuam com a vírgula na delimitação.

E se eu substituir as vírgulas por ponto e vírgula, a vírgula do histórico
também muda. Ai gera o problema.

;0254;Atender as necessidades das Escolas deste Municipio, conforme Termo de
Contrato no 021/2010.;2295.32,787.00,1508.32,

Abraço.

-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Rubem Nascimento da Rocha
Enviada em: quarta-feira, 14 de julho de 2010 11:57
Para: delphi-br
Assunto: RE: RES: RES: [delphi-br] Importação de Arquivo
Prioridade: Alta

Mas se for prestar bem atenção ao formato do texto, basta remover as
seguintes sequencias de caracteres por ponto-e-vírgula:

1) '","';

2) ',"';

3) '",'

Isso não impacta, por exemplo, no conteúdo de um campo literal(string) como
o que vc ilustrou. Pensei q isto estivesse claro!

Sds.


To: delphi-br@yahoogrupos.com.br
From: ral...@gmail.com
Date: Wed, 14 Jul 2010 11:54:06 -0300
Subject: RES: RES: [delphi-br] Importação de Arquivo

O que ocorre é o seguinte:

Neste arquivo texto contém um campo histórico da seguinte forma. exemplo:
“Pagamento efetuado em 25/14, visto que houve atraso.” 

Note que existe uma vírgula dentro do histórico.

Retirar as aspas duplas é beleza, porém, se for substituir as vírgulas por
ponto e vírgula, a vírgula contida dentro do campo histórico também será
substituída por ponto e vírgula. (é vírgula demais!)

Neste caso, pode ser interpretada como novo campo.

Será que existe alguma maneira de antes de eliminar as aspas duplas e
substituir as vírgulas por ponto e vírgula, efetuar uma pesquisa em tudo que
se encontra dentro das aspas duplas e se for encontrada alguma vírgula a
mesma ser eliminada?

Abraço.

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Rubem Rocha Enviada em: quarta-feira, 14 de julho de 2010 11:03
Para: delphi-br@yahoogrupos.com.br
Assunto: RES: RES: [delphi-br] Importação de Arquivo
Prioridade: Alta

Ora, o StringReplace vai retirar as aspas onde apenas haverão aspas, e o
separador será ponto-e-vírgula. Não vejo problema nenhum nisso.

Sds.

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 Walter Chagas (Bol) Enviada em: quarta-feira, 14 de julho de
2010 08:00
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
Assunto: Re: RES: [delphi-br] Importação de Arquivo

Ruben, torno a questionar.

E se tiver dois valores float na sequencia? Lembre-se que os valores float
não vem entre aspas.

[]s

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

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

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-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.com.br> [mailto:delphi-br@yahoogrupos.com.br
<mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.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 <mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.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>
<mailto:wchagasj%40bol.com.br> <mailto:wchagasj%40bol.com.br>
http://delphitocorporerm.blogspot.com/
http://twitter.com/wchagas
MSN: whitesock...@hotmail.com <mailto:whitesockets%40hotmail.com>
<mailto:whitesockets%40hotmail.com> <mailto:whitesockets%40hotmail.com>
SKYPE: WalterChagasJr

----- Original Message -----
From: Marcelo
To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.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>
<mailto:wchagasj%40bol.com.br> <mailto:wchagasj%40bol.com.br> >
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.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>
<mailto:wchagasj%40bol.com.br> <mailto:wchagasj%40bol.com.br>
http://delphitocorporerm.blogspot.com/
http://twitter.com/wchagas
MSN: whitesock...@hotmail.com <mailto:whitesockets%40hotmail.com>
<mailto:whitesockets%40hotmail.com> <mailto:whitesockets%40hotmail.com>
SKYPE: WalterChagasJr

----- Original Message -----
From: Marcelo
To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.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>
<mailto:ralprd%40gmail.com> <mailto:ralprd%40gmail.com> >
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.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%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.com.br> [mailto:delphi-br@yahoogrupos.com.br
<mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.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>
<mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.com.br>
From: ral...@gmail.com <mailto:ralprd%40gmail.com>
<mailto:ralprd%40gmail.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


__________________________________________________________
ACESSE SEUS EMAILS DE QUALQUER LUGAR PELO SEU CELULAR. CLIQUE E VEJA COMO
FAZER ISSO.
http://celular.windowslive.com.br/hotmail.asp?produto=Hotmail&utm_source=Liv
e_Hotmail&utm_medium=Tagline&utm_content=ACESSESEUS85&utm_campaign=MobileSer
vices

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

------------------------------------

--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>


 


      

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

Responder a