Delphi 为什么System.IOUtils函数和TStreamReader使用fmShareCompat?
当我第一次看到Delphi 为什么System.IOUtils函数和TStreamReader使用fmShareCompat?,delphi,delphi-xe2,share,file-access,Delphi,Delphi Xe2,Share,File Access,当我第一次看到System.IOUtils单元具有TFile.ReadAllBytes和TFile.ReadAllText等功能,以及System.classes中的TStreamReader和TBinaryReader类时,我非常激动地发现有了读取二进制文件和文本文件的简便方法 在使用它们一段时间后,我注意到默认的共享模式是隐式的fmShareCompat,因为它们都使用TFileStream.Create,但没有明确指定共享模式 由于Windows上的fmShareCompat被视为fmSh
System.IOUtils
单元具有TFile.ReadAllBytes
和TFile.ReadAllText
等功能,以及System.classes中的TStreamReader
和TBinaryReader
类时,我非常激动地发现有了读取二进制文件和文本文件的简便方法
在使用它们一段时间后,我注意到默认的共享模式是隐式的fmShareCompat
,因为它们都使用TFileStream.Create
,但没有明确指定共享模式
由于Windows上的fmShareCompat
被视为fmShareExclusive
,因此在使用它们时会导致文件锁定问题
这是Delphi开发人员的疏忽吗?或者有没有理由默认不使用fmShareDenyWrite
还有,为什么没有办法指定共享模式
我现在想写我自己版本的这些课程,以便让它们更友好地分享。IIRC这是Emba犯下的一个大错误。最近的版本修复了这个问题。