質問
多くのエントリがあるテキストファイルをインポートするプログラムがあります:
###
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)
... などなど
解決
最も簡単な方法は、ファイルを 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;
このコードはそれほど堅牢ではなく、最初の開始日などの特別なケースをチェックしませんが、開始するには十分なはずです。
他のヒント
さて、ファイルを1行ずつコピーし、適切なタイミングで新しい行を挿入する必要があります。テキストファイルの内容をシフトすることはできません。
所属していません StackOverflow