Delphi прочитайте следующую строку и замените - PullRequest
1 голос
/ 30 июля 2009

У меня есть программа, которая импортирует текстовый файл, который имеет много записей:

###
Starttime: 06.03.2008
Data: SOME RECORDS HERE

###
Starttime: 21.03.2008
Data SOME RECORDS HERE

... и так далее

Не хочу, чтобы после "Data:" было время окончания, то есть следующее время начала -1, поэтому у меня

###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
EndTime: 20.03.2008

###
Starttime: 21.03.2008
Data SOME RECORDS HERE
EndTime: (next starttime -1)

... и так далее

Ответы [ 2 ]

3 голосов
/ 30 июля 2009

Самый простой способ - прочитать файл в TStringList и работать там.

псевдокод:

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;

Этот код не очень надежен, он не проверяет какие-либо особые случаи, такие как первая дата начала, но этого должно быть достаточно, чтобы начать работу.

3 голосов
/ 30 июля 2009

Ну, вам нужно будет скопировать файл построчно и вставить новые строки в нужный момент. Вы не можете сдвинуть вещи в текстовом файле.

...