Existe uma forma mais fácil de fazer a importação desses dados. Dê uma 
procurada na ajuda do Delphi pela função ExtractStrings(). Ela faz exatamente o 
que você precisa. 

Não lembro qual banco de dados você usa, mas já pensou em criar uma Stored 
Procedure que faça essa importação?

Abraço.


Eduardo C. Nicácio
Analista de Sistemas

  ----- Original Message ----- 
  From: itasouza 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Sunday, June 22, 2008 10:49 AM
  Subject: [delphi-br] Ajuda com Importação de dados em TXT 


  Importação e exportação de dados em TXT 

  Bom dia..

  Conseguir contar os espaços deu certo a inserção dos dados, mais só 
  gravou a primeira linha, debugei o código e não encontrei problemas, 
  verifiquei que estava usando o comando "Next;" não gerava erro mais 
  só gravava a primeira linha, substituir por "Readln" e agora gera o 
  erro:

  Project SysSam.exe raised exception class EInOutError with
  message 'I/O error 6'. Process stopped. Use Step or Run to continue.

  Como usar o comando POS ou Readln, para que grave todas as linhas?

  Layout de importação:
  3351781;MARIA DA PENHA 
  CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
  3351781;MARIA DA PENHA 
  CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
  3351781;MARIA DA PENHA 
  CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
  3351781;MARIA DA PENHA 
  CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;

  Código com os espaços corretos:

  while not Eof(fArq) do //Enquanto não chegar ao fim do arquivo
  begin
  Application.ProcessMessages;
  Readln(farq, linha); //Lê a linha e posiciona o cursor na próxima
  frmImportacao.Caption := 'Lendo Linha: ' + IntToStr(i) + ' de: ' 
  + IntToStr(ProgressBar1.Max);
  //Buscando pelo Parâmetro codigo, para verificar se já existe na 
  tabela
  //DM.cdsImportacao.Params.ParamByName('codigo').asString := Trim
  (Copy(Linha, 1, 8));
  DM.cdsImportacao.Open; //Abre o CDS
  //
  if DM.cdsImportacao.IsEmpty then //Se Não existir o registro
  DM.cdsImportacao.Append //Insira os dados da linha atual
  else //Senão, se o registro já existir
  DM.cdsImportacao.Edit; //Coloca em modo de edição para 
  atualizar os campos
  //Aqui os campos recebem as linhas lidas
  DM.cdsImportacaocod_integracao.AsString :=Trim(Copy(Linha, 
  1, 7 ));
  DM.cdsImportacaonome.AsString :=Trim(Copy(Linha, 
  9, 19 ));
  DM.cdsImportacaocontato.AsString :=Trim(Copy(Linha, 
  31, 9 ));
  DM.cdsImportacaoddi.AsString :=Trim(Copy(Linha, 
  41, 3 ));
  DM.cdsImportacaoddd.AsString :=Trim(Copy(Linha, 
  45, 3 ));
  DM.cdsImportacaofone.AsString :=Trim(Copy(Linha, 
  49, 8 ));
  DM.cdsImportacaoddd_2.AsString :=Trim(Copy(Linha, 
  58, 3 ));
  DM.cdsImportacaofone_2.AsString :=Trim(Copy(Linha, 
  62, 8 ));
  DM.cdsImportacaoddd_3.AsString :=Trim(Copy(Linha, 
  71, 3 ));
  DM.cdsImportacaofone_3.AsString :=Trim(Copy(Linha, 
  75, 8 ));
  DM.cdsImportacao.Post; //Salve o registro em memória
  DM.cdsImportacao.ApplyUpdates(0); //Aplica as atualizações em 
  memória no banco
  DM.cdsImportacao.Close; //Fecha o CDS }
  Inc(i);
  ProgressBar1.Position := ProgressBar1.Position + 1;
  Next;
  end;

  Agradeço a ajuda



   


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



  No virus found in this incoming message.
  Checked by AVG. 
  Version: 8.0.100 / Virus Database: 270.4.1/1514 - Release Date: 23/6/2008 
07:17


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

Responder a