Delphi重写一行代码

Delphi重写一行代码,delphi,text-files,Delphi,Text Files,我们可以重写文本文件的一行,然后保存并关闭它吗 例如,我需要重写第一行,并保留所有其他行。是否有一个函数可以执行此操作,或者我必须在更改一行后复制整个文件 我的文件包含多个thausand行,我只需要更改第一行 文件示例: test;test1;test2 other;other;other other;other;other x1000 然后 something;something;something other;other;other other;other;other x1000 明白

我们可以重写文本文件的一行,然后保存并关闭它吗

例如,我需要重写第一行,并保留所有其他行。是否有一个函数可以执行此操作,或者我必须在更改一行后复制整个文件

我的文件包含多个thausand行,我只需要更改第一行

文件示例:

test;test1;test2
other;other;other
other;other;other
x1000
然后

something;something;something
other;other;other
other;other;other
x1000

明白我的意思吗?我只想保持我的文件原样,但更改第一行。我可以复制整个文件并在更改第一行后粘贴它,但我想知道delphi中是否已经包含了只更改文本文件中特定行的方法。谢谢

我认为这里最简单的方法是以这种方式使用TStringList:

procedure InPlaceFileEdit(fFile : String);
begin
F:=TStringList.Create;
try
  F.LoadFromFile(fFile);
  F.Strings[0]:='something;something;something' ;// Change the contents of the first line
  F.SaveToFile(fFile);
finally
 F.Free
end
end;

当然,这是一个每次完全重写文件的技巧。

这是不可能的。文件是线性存储的,不支持插入。如果您的行是固定长度的,则可以覆盖它。但是,您希望用更长的新内容替换该行。这是不可能做到的。您需要重新写入整个文件


数据库可能比文本文件更适合您的需要

从数据库转储?我希望你不是+1问题很清楚,这是唯一正确的答案。由于这是一个问答网站,目前接受的答案不能回答所提出的问题。OP应更改问题、删除问题或切换已接受的答案。。。(在我过去的日子里变得暴躁…哦,好吧…)不是sich的要点(David已经有足够的要点了),但是当你接受一个答案时,你应该选择正确的答案,以便下一个有相同问题的读者可以使用。请注意,这正是你要求不要做的,即重新编写整个文件。如果需要以这种方式更改文件,则您别无选择,但请不要错误地认为您正在避免重新写入文件。如果您有只重写文件一行的解决方案,则可以将其发布到此处。Idk如果delphi有这样的“编辑器”来处理file@user28470当前位置如果David知道一种完全按照要求解决您的问题的方法,他肯定不会发布回答说“这是不可能的!”!你同意接受一个最初试图避免的解决方案,这很好。我所看到的问题是,你发布了一个问题,专门要求避免完全重写文件,现在你接受了这个答案,这个答案是完全重写文件的,并给出了一条评论“工作完美”.因为我有点期待这是不可能的,正如david所说,我接受这个解决方案是不可能的,以取悦那些花时间回答问题的人。注意:这个解决方案不是真正的“就地”编辑。整个文件内容被加载到内存中,解析成单独的可寻址行,进行编辑,然后合并成覆盖的原始文件。