|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.10.2012, 09:01 | #1 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 79
|
Не даёт покоя TFileStream и fmShareDenyNone.
У кого есть Delphi XE(2,3) перебилдите пожалуйста, хочется узнать вдруг у вас всё заработает. У меня 2010.
Код:
|
16.10.2012, 11:02 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
проверил код у себя в Delphi 2006
та же фигня. погуглил. Это широкоизвестный факт. Насколько я понимаю, ключики с fmShareDenyxxxx Win API понимает только для режимов, когда файл открывается на чтение. попробуйте, например Stream := TFileStream.Create(name, fmOpenRead or fmShareDenyNone); решение. каждый раз после записи в файл закрывайте поток. вот так: Код:
Последний раз редактировалось Serge_Bliznykov; 16.10.2012 в 11:07. |
16.10.2012, 11:08 | #3 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
fmCreate = $FFFF - то бишь она перекрывает все с чем будет складываться (OR), и имеет эксклюзивный доступ.
По этому вначале создайте файл (с помощью CreateFile), а потом уже открывайте его файловым потоком с нужным Вам методом доступа. Последний раз редактировалось astecenko; 16.10.2012 в 11:13. |
16.10.2012, 11:32 | #4 | |
Пользователь
Регистрация: 06.06.2010
Сообщений: 79
|
Цитата:
fmCreate в модуле Classes: fmCreate = $FF00; Но, что интересно, блокнотом файл который Код:
Интересно всё-таки кто виноват в такой ситуации Delphi или API? Можно конечно придумать что-то типа Код:
Последний раз редактировалось avd; 16.10.2012 в 11:36. |
|
16.10.2012, 11:39 | #5 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Хм, странно.
У меня Delphi 7, в Classes буквально: Код:
смотрите тут Последний раз редактировалось astecenko; 16.10.2012 в 11:46. |
16.10.2012, 11:53 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
astecenko, это было бы хорошо, если это было так просто.
Дело в том, что при использовании кода fmOpenReadWrite ( fmOpenReadWrite = 0002 ) наблюдается точно такая же ошибка с доступом к файлу: проверьте: Код:
Цитата:
а попробуйте а) дополнительное приложение на Delphi откроет такой файл? b) если да - тогда попробуйте в дополнительном потоке открыть файл. Может операционка ограничивает доступ в пределах одного выполняемого потока (нити== thread)... Последний раз редактировалось Serge_Bliznykov; 16.10.2012 в 11:57. |
|
16.10.2012, 12:00 | #7 | |
Пользователь
Регистрация: 06.06.2010
Сообщений: 79
|
Цитата:
|
|
16.10.2012, 12:25 | #8 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Проверил, на LoadFromFile все равно выскакивает ошибка, но дополнительное приложение на Delphi (TotalCommander Viewer) открывает
|
16.10.2012, 12:41 | #9 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 79
|
astecenco, спасибо за помощь.
Видимо беда со StringList. Я об этом даже не подумал. Так всё работает: Код:
Последний раз редактировалось avd; 16.10.2012 в 12:52. |
16.10.2012, 12:56 | #10 | |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Цитата:
Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление в dataGridView даёт ошибку. | KatruKot | C# (си шарп) | 2 | 07.05.2012 10:21 |
Dataset - что даёт определение полей? | DeveloPerchik | БД в Delphi | 11 | 07.04.2012 19:44 |
Программа не даёт выключить компьютер | Shouldercannon | Общие вопросы Delphi | 3 | 22.08.2011 11:12 |
Канва не дает мне покоя:) | NitroSki | Компоненты Delphi | 0 | 03.06.2011 10:19 |
c++ ..при компиляции даёт ошибку.. | silveran | Помощь студентам | 6 | 17.05.2011 15:32 |