|
|
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
Есть подключенное в виде папки облако (сталкивался с DropBox, Mail.ru и еще чьим-то). Приложение живет на нем. При закрытии приложения все настройки скидываются в ini. Вот на этом моменте время от времени вылетает ошибка EFCreateError - Cannot create file "C:\Users\jagunso-pc\Dropbox\macros\Stealth_v8.5.8\Stealth.ini". The process cannot access the file because it is being used by another process. при MemIni.UpdateFile; на моменте Stream := TFileStream.Create(FileName, fmCreate); Довольно редко, у разных пользователей, но регулярно. Предполагаем, что зло в синхронизации, когда именно в этот момент файл монопольно занимается для проверки или что-то в этом роде. Может кто-то сталкивался, как бороться? Попробовать через пару сотен мс повторить сохранение, или еще что... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2017, 09:19:20 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
Vizit0r, попробуй. Или что ещё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2017, 10:19:55 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
Vizit0r, замени Stream := TFileStream.Create(FileName, fmCreate); на Stream := TFileStream.Create(FileName, fmCreate or fmShareDenyWrite) ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2017, 10:32:29 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
AltHaspзамени Stream := TFileStream.Create(FileName, fmCreate); на Stream := TFileStream.Create(FileName, fmCreate or fmShareDenyWrite) ;Идея правильная, но не взлетит Код: pascal 1. 2. or ни к чему не приведет. Решение: использовать THandleStream + апишную CreateFile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2017, 19:30:38 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
Наоборот, надо отобрать доступ у других приложений к файлу, пока с файлом происходит работа. Либо писать всё за один раз (в одну транзакцию). Либо писать настройки во временный файл, а когда всё будет готово -- копировать его на место старого. Кривой сервис синхронизации ловит изменение файла и сразу начинает его синхронизировать, тогда как другие части приложения еще не успели туда сохраниться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2017, 21:01:29 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
JaDiНаоборот, надо отобрать доступ у других приложений к файлу, пока с файлом происходит работа. Либо писать всё за один раз (в одну транзакцию). Либо писать настройки во временный файл, а когда всё будет готово -- копировать его на место старого. Кривой сервис синхронизации ловит изменение файла и сразу начинает его синхронизировать, тогда как другие части приложения еще не успели туда сохраниться. MemIni так и делает - все держится в памяти, в конце делается UpdateFile, где делается сохранение в файл. И ошибка именно там. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 20:51:06 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
Vizit0r, Может кто-то еще туда пишет, в этот файл. Можно запустить Process Monitor от SysinternalsSuite и прогнать работу приложения, посмотреть, когда идут обращения к этому файлу и с каким доступом (поставит бряк на UpdateFile, остановить на нем программу и убедиться через логи, что до этого момента никто в ини не пишет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 21:07:39 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
я себе на компе делал облачную папку, держал там приложение, долго и нудно тестил - так и не смог ни разу повторить. Если б мог - этой темы бы небыло :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 11:20:18 |
|
||
|
сохранение в ini на облачном диске
|
|||
|---|---|---|---|
|
#18+
Vizit0r, Попробуй сделать то, что JaDi предложил. Процмон, бывает, реально помогает найти проблему. Недавно на одном из компов обнаружили им проблему с доступом к файлам из-за прав, неверно устанавливаемых инсталлятором. Без нужных прав программа просто падала с AV, падала так, что даже эврикалог не могла дамп снять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 12:54:52 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2041556]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
11ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 482ms |

| 0 / 0 |
