Delphi读取下一行并替换

发布于 2024-07-30 06:15:42 字数 415 浏览 7 评论 0原文

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

###
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)

...... 等等

I have a program that imports a text file that has many entrys:

###
Starttime: 06.03.2008
Data: SOME RECORDS HERE

###
Starttime: 21.03.2008
Data SOME RECORDS HERE

...
and so on

Not I want to have an end time after "Data:" that is the next starttime -1 so i have

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

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

...
and so on

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

过气美图社 2024-08-06 06:15:42

最简单的方法是将文件读入 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;

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

The easiest way would be to read the file into a TStringList and work there.

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;

This code is not very robust, it doesn't check for any special cases, like the first starting date, but it should be enough to get you started.

少女的英雄梦 2024-08-06 06:15:42

那么,您必须逐行复制文件,并在适当的时候插入新行。 您无法移动文本文件中的内容。

Well, you will have to Copy the file, line by line, and insert the new lines at the right moment. You can't shift stuff in a text file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文