Защо функциите System.IOUtils и TStreamReader използват fmShareCompat?

Когато за първи път видях модула System.IOUtils с функции като TFile.ReadAllBytes и TFile.ReadAllText и класовете TStreamReader и TBinaryReader в System.Classes, бях доста развълнуван, че имам лесни начини за четене на двоични и текстови файлове.

След като ги използвах известно време, забелязах, че режимът на споделяне по подразбиране имплицитно е fmShareCompat, тъй като всички те използват TFileStream.Create, но не посочват изрично режим на споделяне.

Тъй като fmShareCompat се третира като fmShareExclusive в Windows, това води до проблеми със заключването на файлове при използването им.

Това пропуск от страна на разработчиците на Delphi ли е? Или има причина да не използвате fmShareDenyWrite по подразбиране?

Освен това защо няма начин да се посочи режим на споделяне?

Сега съм изкушен да напиша моя собствена версия на тези класове, за да ги направя по-удобни за споделяне.


person Jens Mühlenhoff    schedule 29.04.2014    source източник
comment
IIRC това е гигантска топка, извършена от Emba. Последните версии коригират това.   -  person David Heffernan    schedule 29.04.2014