1

多くのエントリを持つテキスト ファイルをインポートするプログラムがあります。

###
Starttime: 06.03.2008
Data: SOME RECORDS HERE

###
Starttime: 21.03.2008
Data SOME RECORDS HERE

... 等々

「Data:」の後に終了時刻を設定したいわけではありません。これは次の starttime -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

ファイルを 1 行ずつコピーし、適切なタイミングで新しい行を挿入する必要があります。テキストファイル内のものをシフトすることはできません。

于 2009-07-30T11:53:05.883 に答える
3

最も簡単な方法は、ファイルを に読み込んで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;

このコードはあまり堅牢ではありません。最初の開始日などの特別なケースはチェックしませんが、始めるには十分なはずです。

于 2009-07-30T11:57:04.237 に答える