Почему функции System.IOUtils и TStreamReader используют fmShareCompat?
Когда я впервые увидел System.IOUtils
блок с функциями, такими как TFile.ReadAllBytes
а также TFile.ReadAllText
и TStreamReader
а также TBinaryReader
занятия в System.Classes
Я был очень рад иметь простые способы чтения двоичных и текстовых файлов.
После их использования я заметил, что режим общего ресурса по умолчанию неявно fmShareCompat
, поскольку они все используют TFileStream.Create
, но не указывайте явно режим обмена.
поскольку fmShareCompat
рассматривается как fmShareExclusive
в Windows это приводит к проблемам с блокировкой файлов при их использовании.
Это недосмотр разработчиков Delphi? Или есть причина не использовать fmShareDenyWrite
по умолчанию?
Кроме того, почему нет способа указать режим обмена?
Теперь я испытываю желание написать свою собственную версию этих классов, чтобы сделать их более дружелюбными.