Fórum Gravando em arquivo txt #260915

01/12/2004

0

Tenho um arquivo texto onde preciso gravar seus registros em um banco de dados.

Cada registro é separado por um |, ao ler este registro o programa me retorna normalmente cada registro sem erro, porem apartir da segunda linha ele me retorna o primeiro registro como | e os outros normalmente, enquando o primeiro deveria ser o nome da empresa.

o arquivo é este :


[color=darkred:a91ff0e4cc] Holdercim Brasil S/A* | Italva | Rod. Br. 356 - KM 68 - B: Paraíso | RJ | 28.250-000 | 60.869.336/0091-73 | NULL |81071926| NULL |1| Fábrica de Cimento
Hotel Aeroporto Ltda - EPP* | Vitória | Rua Ary Ferreira Chagas, 30 - Mata da Praia | ES | 29.065-280 | 03.270.127/0001-19 | NULL | NULL | As atualizações deverá ser enviada para o email do Sr. Ricardo Augusto. Email: servetc@mailbr.com.br |1| Hospedagem || aeroporto@alvetur.com.br |
Orgbristol Organizações Bristol Ltda Edifício Costa Vitória* | Vitória | PRC Doutor Luind, 90 apto 103 - Lagoa Santa | ES | 33.400-000 | 23.306.087/0015-20 | NULL | NULL | As atualizações deverá ser enviada para o email do Sr. Ricardo Augusto. Email: servetc@mailbr.com.br Email do Encarregado de compras: ssupri@terra.com.br ENDEREÇO P/ FATURAMENTO Condomínio do Edif. Costa Vitória Rua Chapot Presvort, 25 - Praia do Canto Vitória - ES 29.055-410 |1| Condomínio || bfinanceiro@terra.com.br |
[/color:a91ff0e4cc]

e o programa é este:

var
   arq: TextFile;
   S: string;
   camp : array[1..14] of tam;
   i,f,t, poscam: integer;
begin
  AssignFile(arq, edtCaminho.Text);
  Reset(arq);
  i:=1;
  f:=0;
  poscam:=1;
  t:=0;
  while not eof(arq) do
  begin
    readln(arq,s);
    f:=0;
    t:=0;
    for f:=1 to length(s) do
    begin
      t:=t+1;
      if (copy(s,f,1) = ´|´) then
      begin
        camp[poscam, 1]:=i;
        camp[poscam, 2]:=t-1;
        ShowMessage(trim(copy(s,camp[poscam,1], camp[poscam,2])));
        i:=f+1;
        t:=0;
        poscam:=poscam + 1;
      end;
    end;
  end;
 CloseFile(arq);
end;



Douglasf

Douglasf

Responder

Posts

01/12/2004

Motta

Já vi esta questão aqui.

Eu prefiro fazer uma rotina proprietaria para carga, mas já vi referencias (nunca testei) de comp´s que fazem isto.

Trabalho com Oracle, em geral eu prefiro fazer estas rotinas em pl/sql e rodar no bd.

Para arquivos deste tipo em delphi faria.

Criar um TRecord com o formato do arquivo
Criar um array deste TRecord
ler o arquivo e montar o array
ler o array e gravar no bd.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar