Delphi ler próxima linha e substituir
Pergunta
Eu tenho um programa que importa um arquivo de texto que tem muitos entrys:
###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
###
Starttime: 21.03.2008
Data SOME RECORDS HERE
... e assim por diante
Não quero ter um tempo final após "Dados:" que é o próximo starttime -1 então eu tenho
###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
EndTime: 20.03.2008
###
Starttime: 21.03.2008
Data SOME RECORDS HERE
EndTime: (next starttime -1)
... e assim por diante
Solução
A maneira mais fácil seria ler o arquivo em um TStringList
e trabalhar lá.
Pseudocódigo:
var
S: TStringList;
i: Integer;
LastDate: TDateTime;
CurDate: TDateTime;
begin
S := TStringList.Create;
S.LoadFromFile('c:\...');
i := 0;
while i < S.Count do
begin
if S[i] = "###" then
begin
CurDate := StrToDate(S[i+1])
S.Insert(i-3, DateToStr(CurDate));
LastDate := CurDate;
i := i+2;
end else
begin
i := i+1;
end;
end;
S.SaveToFile('c:\...');
end;
Este código não é muito robusto, não verificar quaisquer casos especiais, como a primeira data de início, mas deve ser suficiente para você começar.
Outras dicas
Bem, você terá que copiar o arquivo, linha por linha, e inserir as novas linhas no momento certo. Você não pode mudar coisas em um arquivo de texto.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow