Foi mau eu esqueci de testar o Abrir e estava com erro. ttAbrir : begin Readln(F, Linha); s := ''; x := -1; pDataSet.Append; for i := 1 to Length(Linha) do begin if Linha[i] <> ';' then s := s + Linha[i] else begin Inc(x); case pDataSet.Fields[x].DataType of ftDate, ftDateTime : pDataSet.Fields[x].AsDateTime := StrToDate(s); ftInteger : pDataSet.Fields[x].AsDateTime := StrToInt(s); ftFloat, ftCurrency : pDataSet.Fields[x].AsDateTime := StrToFloat(s); else pDataSet.Fields[x].AsString := s; end; s := ''; end; end; Inc(x); case pDataSet.Fields[x].DataType of ftDate, ftDateTime : pDataSet.Fields[x].AsDateTime := StrToDate(s); ftInteger : pDataSet.Fields[x].AsDateTime := StrToInt(s); ftFloat, ftCurrency : pDataSet.Fields[x].AsDateTime := StrToFloat(s); else pDataSet.Fields[x].AsString := s; end; pDataSet.Post; end;
Basta usar assim que funciona. Eduardo Eduardo Castro Alves escreveu: > Ta na mão, > > type > TTipo = (ttAbrir, ttGravar); > TForm1 = class(TForm) > ... > > procedure ProcessarArquivo(pDataSet: TDataSet; pArquivo: String; > pTipo: TTipo); > var > F : TextFile; > i, > x : Integer; > Linha, > s : String; > vArquivo : Array [0..MAX_PATH] of Char; > > begin > > StrPCopy(vArquivo, pArquivo); > if (FileExists(vArquivo)) and (pTipo = ttGravar) then > DeleteFile(vArquivo); > AssignFile(F, vArquivo); > if FileExists(vArquivo) then > Reset(F) > else > begin > Rewrite(F); > Append(F); > end; > case pTipo of > ttGravar : > begin > for i := 0 to pDataSet.RecordCount - 1 do > begin > s := ''; > for x := 0 to pDataSet.Fields.Count - 1 do > begin > s := s + pDataSet.Fields[x].AsString; > if x < pDataSet.Fields.Count - 1 then > s := s + ';'; > end; > Writeln(F, s); > end; > end; > ttAbrir : > begin > Readln(F, Linha); > s := ''; > x := -1; > for i := 1 to Length(Linha) do > begin > pDataSet.Append; > if Linha[i] <> ';' then > s := s + Linha[i] > else > begin > Inc(x); > case pDataSet.Fields[x].DataType of > ftDate, > ftDateTime : pDataSet.Fields[x].AsDateTime := > StrToDate(s); > ftInteger : pDataSet.Fields[x].AsDateTime := > StrToInt(s); > ftFloat, > ftCurrency : pDataSet.Fields[x].AsDateTime := > StrToFloat(s); > else > pDataSet.Fields[x].AsString := s; > end; > end; > end; > Inc(x); > pDataSet.Fields[x].AsVariant := s; > pDataSet.Post; > end; > end; > CloseFile(F); > > end; > > procedure TForm1.btn1Click(Sender: TObject); > begin > > ProcessarArquivo(qry1, 'C:\TESTE.TXT', ttGravar); > > end; > > > QQ Avise !!! > > Eduardo > Fco Yahoo escreveu: >> >> Ola pessoal, estou tendo um problema muito serio aqui comigo, preciso >> gerar >> um arquivo contendo os registros de uma determinada tabela por periodo, >> portanto eu faria isso construindo uma query: >> If query1.active = true then query1.active:=false; >> query1.sql.clear; >> query1.sql.add('select * from table1 where (condicao) '); >> Agora como eu faço para gravar 1 arquivo contendo esses registros >> Dai pra frente eu nao sei, e tambem como faço para ler esse arquivo e >> inserir os registros dele em uma table, >> Preciso disso, pois estou colocando 1 aplicativo fora do escritorio e >> tenho >> q capturar tudo o que nesse aplicativo for digitado. >> >> Agradeco imensamente toda e qualquer ideia; >> Se quizerem podem entrar em contato em pvt >> [EMAIL PROTECTED] <mailto:franciscoacao%40hotmail.com> >> [EMAIL PROTECTED] <mailto:franciscocarlos65%40hotmail.com> >> [EMAIL PROTECTED] <mailto:fcandrade2001%40yahoo.com.br> >> [EMAIL PROTECTED] >> <mailto:fcandrade%40acaocontabilidade.com.br> >> >> [As partes desta mensagem que não continham texto foram removidas] >> >> >