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犯下的一个大错误。最近的版本修复了这个问题。