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

Était-ce utile?

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
scroll top