1

我有一个程序可以导入一个包含许多条目的文本文件:

###
Starttime: 06.03.2008
Data: SOME RECORDS HERE

###
Starttime: 21.03.2008
Data SOME RECORDS HERE

... 等等

不是我想在“数据:”之后有一个结束时间,这是下一个开始时间 -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)

... 等等

4

2 回答 2

3

好吧,您必须逐行复制文件,并在适当的时候插入新行。您不能在文本文件中移动内容。

于 2009-07-30T11:53:05.883 回答
3

最简单的方法是将文件读入 aTStringList并在那里工作。

伪代码:

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;

这段代码不是很健壮,它不检查任何特殊情况,比如第一个开始日期,但它应该足以让你开始。

于 2009-07-30T11:57:04.237 回答