Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Не могу открыть файл


Автор: Hacker 21.4.2006, 13:49
У меня такая проблема: есть файл (лог), который мне надо открыть и читать его, есть прога, которая в него пишет. Пока прога запущена, файл открыт ей. При открытии лога блокнотом проблем не возникает, а при открытии из моей проги через TFileStream орёт, что файл занят другим процессом и не может быть открыт. Пробовал сл. способы:

FileStreamLog:=TFileStream.Create(AppPath+'logfile.log',fmOpenRead);
FileStreamLog:=TFileStream.Create(AppPath+'logfile.log',fmOpenRead, fmShareCompat);
FileStreamLog:=TFileStream.Create(AppPath+'logfile.log',fmOpenRead, fmShareDenyNone);
FileStreamLog:=TFileStream.Create(AppPath+'logfile.log',fmOpenRead, fmShareCompat+fmShareDenyNone);

Почему блокнот открывает а моя прога не хочет? 

Автор: Snowy 21.4.2006, 13:53
Код
FileStreamLog:=TFileStream.Create(AppPath+'logfile.log', fmOpenRead or fmShareDenyNone);
 

Автор: Hacker 21.4.2006, 13:59
Урррраааа!!! Заработала!!!

Snowy, Спасибо огромное! Сделал как ты написал и всё сразу заработало!

 

Автор: Defm 10.9.2008, 10:16
Примерно такая же ситуация, но на сей раз моя прога - служба winnt. не могу открыть лог даже блокнотом во время ее работы. В сервисе прописано следующее
Код

 LogFileStream := TFileStream.create(LogName, fmCreate or fmOpenWrite or fmShareDenyNone);

Уж не пытается ли Notepad открыть лог-файл с режимом fmShareExclusive?

Автор: morpheyushka 10.9.2008, 10:28
Цитата

не могу открыть лог даже блокнотом во время ее работы

У меня так сделано и все можно открыть и смотреть
Код

  if FileExists(LogFName) then
    LogFile := TFileStream.Create(LogFName,fmOpenReadWrite or fmShareDenyWrite)
  else
    LogFile := TFileStream.Create(LogFName,fmCreate or fmShareDenyWrite);


Автор: Defm 10.9.2008, 10:34
Перекомпилировал службу с вашим кодом, утсановил, запустил...
Она пишет в файл.. Но я по прежнему не могу открыть его блокнотом..
А как у вас реализована сама запись?

Автор: CodeMonkey 10.9.2008, 12:34
Цитата(Defm @  10.9.2008,  10:16 Найти цитируемый пост)
служба winnt

А при создании файла, кто у вас владельцем получается? Случайно там не в правах на файл дело?
Если службу остановить, файл потом нормально открывается?

Автор: Snowy 10.9.2008, 15:00
А зачем открывать его блокнотом?
Можно и Far'ом посмотреть.
А можно и свой вьювер написать...

Автор: Defm 11.9.2008, 07:11
После завершения работы службы файл вполне нормально открывается тем же Notepad
На машине у меня админские права. Служба запускается под SYSTEM
Даже если предположить что во время выполнения службы мне не хватает прав, 
то откуда бы им взятся после ее завершения. Да и сообщение о недостатке прав выглядит по другому.
Far - стоит: "Нарушение совместного доступа к файлу" по F3
Писать свой просмотровщик - издеваетесь? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)