我有一个应用程序,它有一个创建文件的日志系统,并使用这种方式创建的TFileStream处理它: FFileStream:= TFileStream.Create(FFilename,fmOpenWrite);
确定。当我尝试用记事本打开这个文件时没问题,用notepad ++没问题。当我尝试使用我创建的其他应用程序加载文件时,它会引发一个错误,指出该文件已被其他进程使用。 我尝试了TStringList,LoadFromFile和TFileStream.Create(LFile,fmOpenRea);。
有人知道我怎么能像记事本和记事本那样阅读这个?
韩国社交协会
答案 0 :(得分:7)
Erik首先到达那里,但使用fmShareDenyNone,这将允许其他进程写入同一个文件。如果您只想允许其他进程阅读,请使用:
FFileStream := TFileStream.Create(FFilename, fmOpenWrite or fmShareDenyWrite);
答案 1 :(得分:4)
使用fmOpenWrite or fmShareDenyNone
启用分享。
答案 2 :(得分:1)
我正在使用 Delphi7 并且我遇到了, TFileStream 有时无法打开文件进行阅读,而只是为了写入而被锁定。 (在开始讨论 TFileStream 类的共享参数之前;我知道它们并将它们设置正确。)虽然我还没有找到这种明显错误行为的原因,我发现它可以通过使用其他一些文件处理方法来解决:
虽然无法使用 TFileStream 打开文件 - 即使使用正确的共享设置(是的,我知道我在做什么) - 可以使用适当的WinAPI调用轻松打开它:{{ 3}} / ReadFile / SetFilePointer / CloseHandle包含在 Windows 单元中。