在TFileStream的构造函数中指定"FILE_SHARE_READ或FILE_SHARE_WRITE"时,Delphi XE3给出了EFOpenError

SOU*_*ser 1 delphi tfilestream delphi-xe3

以下语句在Delphi XE(Windows 7 x64)下正常运行,但在Delphi XE3(Windows 7 x64)下提供了"Exception class EFOpenError with message ...".它看起来像一个bug.如果是这样,有解决方法吗?

      TFileStream.Create(
        'C:\Test.txt'
        , fmOpenRead,
//        FILE_SHARE_READ);
//        FILE_SHARE_WRITE);
        FILE_SHARE_READ or FILE_SHARE_WRITE);
Run Code Online (Sandbox Code Playgroud)

klu*_*udg 5

使用fmShareDenyNone常量而不是FILE_SHARE_READ or FILE_SHARE_WRITE:

 TFileStream.Create(
    'C:\Test.txt', fmOpenRead or fmShareDenyNone);
Run Code Online (Sandbox Code Playgroud)

这不是一个bug.请参阅文档了解详细信

  • @Xichen - fmShareDenyNone不是4,但如果它是4或其他什么它会有什么区别?FILE_SHARE_ ..标志用于`CreateFile`,它们与TFleStream无关. (3认同)