Importar TXT a partir da Linha 22

Delphi

30/03/2008

Senhores, boa tarde!

Preciso importar um arquivo txt para algumas variáveis (13) para posteriormente efetuar algumas verificações e então gravar no BD (Firebird).
Mas este arquivo tem um cabeçalho da linha 1 até a 21, esses dados eu quero pular, não tem necessidade de importar, já procurei algumas coisas no forum, mas ainda não consegui implementar este código.

Ex do Arquivo:
Linha 1 até 21: Cabeçalho
55 9118-5077;Claro-Claro;01/12/2007;16:10:26;Rio Grande do Sul-Rio Grande do Sul (055);55-9172-6604;00:00:48;0,33;0,26;0,00;;;;Ligações Locais

Alguém poderia me ajudar? Algum exemplo?

Sds

Gustavo


Lange

Lange

Curtidas 0

Respostas

Paullsoftware

Paullsoftware

30/03/2008

Boa tarde amigo, uma alternativa seria você criar um laço for para contar até a linha desejada, depois passar para um novo laço que faria a inserção desses dados, por exemplo:
for I := 0 to 22 do
 conta;

aqui você faz a instrução para inserção dos dados... espero ter ajudado! :wink:


GOSTEI 0
Wanderok

Wanderok

30/03/2008

// 12 linhas que nao interessam for i := 1 to 12 readln(ARQUIVO, vlinha); // 1a linha que interessa readln(ARQUIVO, vlinha);



GOSTEI 0
Fabiano Góes

Fabiano Góes

30/03/2008

se entendi bem,
você quer traalhar com o arquivo sempre da linha 22 pra frente,
se este cabeçalho será sempre fixo da linha 1 até 21 você pode fazer assim:
var
   slFile: TStringList;
   i: integer;
begin

   slFile := TStringList.Create;
   try
      slFile.LoadFromFile(´c:\Arquivo.txt´);
      
      // começa de 21 porque a primeira linha sempre é ´0´
      for i := 21 to slFile.Count - 1 do
      begin

         // aqui você executa seu processamento ex:
         ShowMessage(MidStr(slFile.Strings[i], 34, 17));

      end;

   finally
      slFile.Free;
   end;

end;



GOSTEI 0
Lange

Lange

30/03/2008

Pessoal, consegui com o seguinte código, mas ainda não consegui pular para a linha que me interessa, estou conseguindo editando o txt e apagando o cabeçalho,

procedure Tfrm_imp.Button1Click(Sender: TObject);
var
Arq: TextFile;
Texto: String;
I: Integer;

function MontaVariavel: String;
var
monta: String;
begin
monta := ´´;
inc(I);
while Texto[I] <> ´*´ do
begin
if Texto[I] = ´;´ then
break;
monta := monta + Texto[I];
inc(I);
end;
result := monta;
end;

begin
if odlg_1.Execute then
begin
Screen.Cursor := crHourGlass;
Table1.Open;
AssignFile(Arq, odlg_1.FileName);
Reset(Arq);
if not EOF(Arq) then
repeat
ReadLn(Arq,Texto);
with Table1 do
begin
Insert;
i := 0;
MySelect(dm_main.q_select,´select max(id) as newcod from importa´);
FieldByName(´ID´).Asinteger := dm_main.q_select.FieldByname(´newcod´).AsInteger + 1;
FieldByName(´tel´).AsString := MontaVariavel;
FieldByName(´tipo´).AsString := MontaVariavel;
FieldByName(´data´).AsString := MontaVariavel;
FieldByName(´hora´).AsString := MontaVariavel;
FieldByName(´origem´).AsString := MontaVariavel;
FieldByName(´duracao´).AsString := MontaVariavel;
FieldByName(´tarifa´).AsString := MontaVariavel;
FieldByName(´valor´).AsString := MontaVariavel;
FieldByName(´valorcob´).AsString := MontaVariavel;
FieldByName(´nome´).AsString := MontaVariavel;
FieldByName(´cc´).AsString := MontaVariavel;
FieldByName(´matr´).AsString := MontaVariavel;
FieldByName(´descr´).AsString := MontaVariavel;
Post;
end;
until EOF(Arq);
CloseFile(Arq);
Table1.Close;
Screen.Cursor := crDefault;
end;
end;


GOSTEI 0
Paullsoftware

Paullsoftware

30/03/2008

[quote:10d9319197=´Fabiano Góes´]se entendi bem,
você quer traalhar com o arquivo sempre da linha 22 pra frente,
se este cabeçalho será sempre fixo da linha 1 até 21 você pode fazer assim:
var
   slFile: TStringList;
   i: integer;
begin

   slFile := TStringList.Create;
   try
      slFile.LoadFromFile(´c:\Arquivo.txt´);
      
      // começa de 21 porque a primeira linha sempre é ´0´
      for i := 21 to slFile.Count - 1 do
      begin

         // aqui você executa seu processamento ex:
         ShowMessage(MidStr(slFile.Strings[i], 34, 17));

      end;

   finally
      slFile.Free;
   end;

end;
[/quote:10d9319197]boa fábio, eu uso StringList mas não lembrei dessa alternativa!!! :lol:


GOSTEI 0
Lange

Lange

30/03/2008

senhores, consegui resolver meu problema.
agradeço a todos que me ajudaram!

obrigado

Gustavo


GOSTEI 0
POSTAR