Delphi lit la ligne suivante et remplace
Question
J'ai un programme qui importe un fichier texte comportant de nombreuses entrées:
###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
###
Starttime: 21.03.2008
Data SOME RECORDS HERE
... et ainsi de suite
Non, je souhaite avoir l'heure de fin après "Données:". c'est la prochaine heure de démarrage -1 donc j'ai
###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
EndTime: 20.03.2008
###
Starttime: 21.03.2008
Data SOME RECORDS HERE
EndTime: (next starttime -1)
... et ainsi de suite
La solution
Le moyen le plus simple consiste à lire le fichier dans une TStringList
et à y travailler.
Pseudocode:
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;
Ce code n'est pas très robuste, il ne vérifie aucun cas particulier, comme la première date de début, mais il devrait suffire à vous aider à démarrer.
Autres conseils
Eh bien, vous devrez copier le fichier, ligne par ligne, et insérer les nouvelles lignes au bon moment. Vous ne pouvez pas déplacer des éléments dans un fichier texte.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow