![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прочитать файл, открытый другим приложением? [D6, WinXP]
DNT © (2002-12-04 14:09:00)subj
С MemoryStream не работает : (
FreeLancer (2002-12-04 14:25:00) [1]> т.е. если прога открыла файл с fmShareExclusive значит я
> его не смогу открыть?
Читай: Song © (04.12.02 14:10)
DNT (2002-12-04 14:21:00) [2]2stas_a: читай внимательней, с MemoryStream не работает
2FreeLancer: т.е. если прога открыла файл с fmShareExclusive значит я его не смогу открыть?
stas_a (2002-12-04 14:17:00) [3]var Memory : TMemoryStream;
begin
Memory := TMemoryStream.Create;
try
Memory.LoadFromFile("busyfile.dat"); // это он!!
..
Memory.Read(...); // Вы можете использовать методы чтения как у файлов
Memory.Seek(...);
FileSize := Memory.Size;
..
finally
Memory.Free;
end;
end;
Данный способ никогда не открывает файл, а заместо этого создаёт копию его в памяти. Конечно Вы можете и записать в поток (Stream) в Памяти(Memory), но изменения не будут записаны на диск до тех пор, пока Вы не запишете их в файл (командой SaveToFile).
FreeLancer (2002-12-04 14:16:00) [4]TFileStream :
constructor Create(const FileName: string; Mode: Word);
The share mode must be one of the following values:
- fmShareCompat Sharing is compatible with the way FCBs are opened.
- fmShareExclusive Other applications can not open the file for any reason.
- fmShareDenyWrite Other applications can open the file for reading but not for writing.
- fmShareDenyRead Other applications can open the file for writing but not for reading.
- fmShareDenyNone No attempt is made to prevent other applications from reading from or writing to the file.
If the file can not be opened, Create raises an exception.
Song (2002-12-04 14:10:00) [5]Если не читается обычным способом, значит никак.