Importar TXT a partir da Linha 22
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
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
Curtidas 0
Respostas
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:
aqui você faz a instrução para inserção dos dados... espero ter ajudado! :wink:
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
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
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:
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
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;
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
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:
[/quote:10d9319197]boa fábio, eu uso StringList mas não lembrei dessa alternativa!!! :lol:
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
30/03/2008
senhores, consegui resolver meu problema.
agradeço a todos que me ajudaram!
obrigado
Gustavo
agradeço a todos que me ajudaram!
obrigado
Gustavo
GOSTEI 0