ler uma linha txt e deletar
caros amigos , estou precisando de uma ajuda pois não tenho ideia com fazer para o meu programinha ler todo arquivo txt depois se encontra o a linha que tenha uma data ele deleta da aquela para traz
por ex:
coleta.txt
0000050214060821075107040102
0000600261060821075344040102
0000050038060822075551040102
0000050140060822075628040102
0000050045060823075803040102
0000050141060823075950040102
0000050116060823080100040102
0000050076060823081028040102
0000050034060823085922040102 /060823/ e a data
preciso que ler e quando achar data 060822 deletar desta linha para traz
se alguem poder ajuda agradece pois conheço muito pouco em delphi
Att.
Emerson
por ex:
coleta.txt
0000050214060821075107040102
0000600261060821075344040102
0000050038060822075551040102
0000050140060822075628040102
0000050045060823075803040102
0000050141060823075950040102
0000050116060823080100040102
0000050076060823081028040102
0000050034060823085922040102 /060823/ e a data
preciso que ler e quando achar data 060822 deletar desta linha para traz
se alguem poder ajuda agradece pois conheço muito pouco em delphi
Att.
Emerson
Emerson1
Curtidas 0
Respostas
Siam
24/08/2006
Acho que diretamente no arquivo txt não dá para fazer.
Utilize um TStringList, execute LoadFromFile, faça as operações e depois execute SaveToFile.
Utilize um TStringList, execute LoadFromFile, faça as operações e depois execute SaveToFile.
GOSTEI 0
Beto_martini
24/08/2006
Para fazer direto do arquivo vc teria na verdade que salvar o conteúdo em um outro arquivo.
Ex:
Abre arquivo 1
abre arquivo 2
lê arquivo 1 até encontrar a data
à partir daí, grave o restante no arquivo 2.
Se não souber como fazer as operações entre em contato. Ok?
Ex:
Abre arquivo 1
abre arquivo 2
lê arquivo 1 até encontrar a data
à partir daí, grave o restante no arquivo 2.
Se não souber como fazer as operações entre em contato. Ok?
GOSTEI 0
Fabiano Góes
24/08/2006
procedure NewTxt( pathArq, Data: String ); var Arquivo, NovoArq: TStringList; i, Index: Integer; linha: String; begin Index := 0; Arquivo := TStringList.Create; NovoArq := TStringList.Create; try Arquivo.LoadFromFile(pathArq); for i := 0 to Arquivo.Count - 1 do begin linha := Arquivo.Strings[i]; if copy(linha, 11, 06) = Data then begin index := i + 1; Break; end; end; for i := Index to Arquivo.Count - 1 do NovoArq.Add(Arquivo.Strings[i]); NovoArq.SaveToFile(pathArq); ShowMessage(´concluido !!!´); finally FreeAndNil(Arquivo); FreeAndNil(NovoArq); end; end;
usar assim:
NewTxt(´c:\coleta.txt´, ´060822´);
obs: se a sua condição é apenas a data ´060822´, esta função conta apartir da primeira que encontra.
testa e posta se funcionou ou não !!!
abraço !!!
GOSTEI 0
Antseralves
24/08/2006
Se não quiser fazer no mesmo arquivo use o metodo [b:bbe2d57456] Delete[/b:bbe2d57456].
procedure TForm1.DelData(PathArq,Data : string);
var S : TstringList;
I,Cont : integer;
begin
S := TStringList.Create;
S.LoadFromFile(PathArq);
Cont := S.Count;
I := 0;
while I < Cont do
begin
if Copy (S.Strings[I],1,8) = Data then
begin
S.Delete(I);
Dec(Cont);
end
else
Inc(I);
end;
S.SaveToFile(PathArq);
S.Free;
end;
procedure TForm1.DelData(PathArq,Data : string);
var S : TstringList;
I,Cont : integer;
begin
S := TStringList.Create;
S.LoadFromFile(PathArq);
Cont := S.Count;
I := 0;
while I < Cont do
begin
if Copy (S.Strings[I],1,8) = Data then
begin
S.Delete(I);
Dec(Cont);
end
else
Inc(I);
end;
S.SaveToFile(PathArq);
S.Free;
end;
GOSTEI 0
Emerson1
24/08/2006
Fabiano Góes
muito obrigado deu certinho...agora eu vou pensar um jeito de o sistema olhar data do dia - 30 e jogar la no codigo que vc me passou
valeu
muito obrigado deu certinho...agora eu vou pensar um jeito de o sistema olhar data do dia - 30 e jogar la no codigo que vc me passou
valeu
GOSTEI 0
Fabiano Góes
24/08/2006
emerson1,
não entendi o que você dize com:
se você postar mais detales eu posso tentar te ajudar.
abraço !!![/code]
não entendi o que você dize com:
agora eu vou pensar um jeito de o sistema olhar data do dia - 30 e jogar la no codigo que vc me passou
se você postar mais detales eu posso tentar te ajudar.
abraço !!![/code]
GOSTEI 0
Emerson1
24/08/2006
Fabiano Góes
ex: quando clicar no botão o sistema olhar a data do dia 29/08/2006 pega essa data (- 30)dias=060729 e colocar no parametro
NewTxt(´c:\coleta.txt´, ´060729´);
fabiano góes desculpa se não fui claro.... mas ja agradeço sua ajuda muito obrigado......
ex: quando clicar no botão o sistema olhar a data do dia 29/08/2006 pega essa data (- 30)dias=060729 e colocar no parametro
NewTxt(´c:\coleta.txt´, ´060729´);
fabiano góes desculpa se não fui claro.... mas ja agradeço sua ajuda muito obrigado......
GOSTEI 0
Fabiano Góes
24/08/2006
emerson1,
descupe a demora, eu estava meio enrolado aqui no trampo.
se você ainda não conseguiu a solução pra sua data-30 ai vai:
cara nem testei, teata ai depois post pra saber se funcionou;
descupe a demora, eu estava meio enrolado aqui no trampo.
se você ainda não conseguiu a solução pra sua data-30 ai vai:
NewTxt(´c:\coleta.txt´, FormatDateTime( ´yymmdd´, (Now-30) ) );
cara nem testei, teata ai depois post pra saber se funcionou;
GOSTEI 0
Emerson1
24/08/2006
Fabiano Góes
deu certo...muito obrigado......valeuuuuuu
deu certo...muito obrigado......valeuuuuuu
GOSTEI 0
Fabiano Góes
24/08/2006
Falowwww mano,
se precisar tamo ai !!!!
abraxxxx !!!
se precisar tamo ai !!!!
abraxxxx !!!
GOSTEI 0