This QC report say that Delphi doesn't support the file sharing mode FILE_SHARE_DELETE

http://qc.embarcadero.com/wc/qcmain.aspx?d=45628

I need to use this mode with TFileStreams - Can anyone think of a straightforward workaround that doesn't involve modifying the library code, or duplicating reams of stuff from the library?

有帮助吗?

解决方案

The QC report is correct. TFileStream (more specifically, the SysUtils.FileOpen() function) does not support FILE_SHARE_DELETE. It only supports FILE_SHARE_READ and FILE_SHARE_WRITE.

In order to use sharing rights beyond what TFileStream natively supports, you will have to call the Win32 API CreateFile() function directly, then you can construct a THandleStream object using the handle that CreateFile() returns.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top