Eu uso muito este tipo de rotina aqui, como o código aqui é protegido por
normas da empresa, eu vou te passar o nucleo da rotina (a que faz a leitura
da linha e pega somente os dados separados por tabulação. Dá uma analisada
que você vai entender.


      readln(fi, line);
      iLenghtLine := length(Line) + 2;
      if (line <> '') then
      begin
        StatusBar1.Panels[0].Text := 'Lendo o arquivo de importação';
        i := 0;
        j := 0;
        DadNumMedicao := '';
        DadNumNota := '';
        DadNumItem := '';
        DadNumPedido := '';
        DadPedItem := '';
        preco := '';
        DadPedValor := '0';
        btnAbort.Visible := True;
        btnImport.Visible := False;
        while i <= length(line) do
        begin
          while (i <= length(line)) and (line[i] <> #$09) do
            inc(i);
          while line[i] = #$09 do <- Lê a área da tabulação
            inc(i);
          while (i <= length(line)) and (line[i] <> #$09) do
            inc(i);
          while line[i] = #$09 do
            inc(i);
          while (i <= length(line)) and (line[i] <> #$09) do
            inc(i);
          while line[i] = #$09 do
            inc(i);
          while (i <= length(line)) and (line[i] <> #$09) do    // Numero do
movimento/Medição
          begin
            if line[i] <> '' then DadNumMedicao := DadNumMedicao + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          //
          if iStatusPlan = 1 then
          begin
            while (i <= length(line)) and (line[i] <> #$09) do    // Numero
da Nota fiscal (somente para importação de pedidos já faturados)
            begin
              if line[i] <> '' then DadNumNota := DadNumNota + line[i];
              inc(i);
            end;
          while line[i] = #$09 do
            inc(i);
          end;
          //
          while (i <= length(line)) and (line[i] <> #$09) do
          begin
            if line[i] <> '' then DadNumItem := DadNumItem + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          while (i <= length(line)) and (line[i] in ['0'..'9', ',', '.','
']) do
          begin
              if line[i] in ['0'..'9',','] then DadPedValor := DadPedValor +
line[i];
              inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          while (i <= length(line)) and (line[i] <> #$09) do
          begin
            if line[i] <> '' then DadNumPedido := DadNumPedido + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          while (i <= length(line)) and (line[i] <> #$09) do
          begin
            if line[i] <> '' then DadPedItem := DadPedItem + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          inc(i);  // para pular coluna de valor do serviço
          inc(j);
          Application.ProcessMessages;
        end;
        if iStatusPlan = 0 then
          DadNumMedicao := SomenteDigitos(DadNumMedicao,6)
        else
          DadNumNota := SomenteDigitos(DadNumNota,6);
        Label5.Caption := '';
        StatusBar1.Panels[0].Text := 'Processando o arquivo de importação';
 
 
 []s

 Walter Alves Chagas Junior
 Projeto e desenvolvimento
 Telemont Engenharia de telecomunicações
 Belo Horizonte - MG - Brazil 
 [EMAIL PROTECTED]
 Fone: (31) 3389-8215 Fax: (31) 3389-8200
 

> -----Mensagem original-----
> De: Rodrigo Ribeiro [mailto:[EMAIL PROTECTED]
> Enviada em: sexta-feira, 24 de junho de 2005 08:34
> Para: Lista Delphi
> Assunto: [delphi-br] Arquivo texto separado por taulações
> 
> 
> Pessoal,
> 
> Preciso ler um arquivo texto q tem colunas separadas por 
> tabulações....alguém tem alguma rotina que percorre as 
> colunas pegando os valores q estão entre as tabulações??
> 
> [ ]'s
> 
>       Rodrigo Ribeiro 
>       Programador 
>       WMix Distribuidora Ltda 
>       Fone/Fax: +55(48)381.4740 
>         
> 
> --------------------------------------------------------------
> ------------
>       Esta mensagem foi enviada pela Wmix Distribuidora Ltda, 
> para uso exclusivo do destinatário, podendo conter 
> informações confidenciais. Se for recebida por terceiro que 
> não o destinatário, deve ser apagada imediatamente do seu 
> computador e a Wmix Distribuidora Ltda notificada 
> ([EMAIL PROTECTED]). As informações aqui prestadas não podem 
> ser distribuídas ou reproduzidas sem a expressa autorização 
> da Wmix Distribuidora Ltda. 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> -- 
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
> 
> Para ver as mensagens antigas, acesse:
>  http://br.groups.yahoo.com/group/delphi-br/messages
> 
> Para falar com o moderador, envie um e-mail para:
>  [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>  
> Links do Yahoo! Grupos
> 
> 
> 
> 
>  
> 
> 


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



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

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Reply via email to