How to use TFileStream with FILE_SHARE_DELETE?
delphi, tfilestream, winapi
Solution
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.
Problem
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?