|
|
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
Добрый день! При запуске приложения определяю контрольную сумму файла DLL, после чего первое приложение начинает использовать DLL. При запуске второго экземпляра программы второй экземпляр начинает определять контрольную сумму этой-же DLL. Выскакивает ошибка I/O error 32. Пробовал проверять занятость файла, но при AssignFile(AFile,AFileName); во втором экземпляре выскакивает эта-же ошибка. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 16:55:30 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11, скопировать файл dll в темп и там считать не пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 16:58:18 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
andreymx, Хорошая мысль, если другого решения не будет то воспользуюсь этим советом. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 17:00:33 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11, Reset, по дефолту, открывает файл в режиме чтение+запись. Вариантов решения 2: 1. Делать FileMode := 0; но это кю. 2. Работать с файлом по-человечески, либо FileOpen+FileRead либо через файловый стрим, указав, что файл открывается только для чтения (fmOpenRead Or fmShareDenyWrite). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 17:26:25 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11andreymx, Хорошая мысль, если другого решения не будет то воспользуюсь этим советом. Спасибо.не, плохой мой вариант лишний раз куда-то копировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 17:30:00 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeyzeon11, Reset, по дефолту, открывает файл в режиме чтение+запись. Вариантов решения 2: 1. Делать FileMode := 0; но это кю. 2. Работать с файлом по-человечески, либо FileOpen+FileRead либо через файловый стрим, указав, что файл открывается только для чтения (fmOpenRead Or fmShareDenyWrite). Не вижу пути, как через TFileStream определить, что файл занят другим приложением. Если только воспользоваться идеей andreymx'а, не заморачиваться с занятостью файла, а сразу через TFileStream вытягивать файл в безопасное место и там определять его контрольную сумму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 19:11:18 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeyzeon11, Reset, по дефолту, открывает файл в режиме чтение+запись. Вариантов решения 2: 1. Делать FileMode := 0; но это кю. 2. Работать с файлом по-человечески, либо FileOpen+FileRead либо через файловый стрим, указав, что файл открывается только для чтения (fmOpenRead Or fmShareDenyWrite). До Reset 'а к сожалению не доходит, вылетает ещё на AssignFile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 19:14:15 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11Не вижу пути, как через TFileStream определить, что файл занят другим приложением. Не надо определять, что он занят. Надо сделать так, чтобы файл открывался даже если занят . Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 19:58:26 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovzeon11Не вижу пути, как через TFileStream определить, что файл занят другим приложением. Не надо определять, что он занят. Надо сделать так, чтобы файл открывался даже если занят . Так это не проблема. Как из TFileStream получить контрольную сумму файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 20:28:03 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
CRC это алгоритм который подсчитывает контрольную сумму по содержимому файла. TFileStream позволяет получить содержимое, осталось это содержимое отдать в функцию расчета CRC. P.S. Когда уже из Delphi выпилят AssignFile и прочую мертвечину, ну или введут директиву, которая отключит (а лучше включит для совместимости) это безобразие.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 20:59:40 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11До Reset 'а к сожалению не доходит, вылетает ещё на AssignFile На самом деле вылетает на Reset, просто отладчик показывает строку за той, на которой произошла ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 21:06:23 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
X-CiteКогда уже из Delphi выпилят AssignFile и прочую мертвечину, ну или введут директиву, которая отключит (а лучше включит для совместимости) это безобразие....Нафига? Кому оно мешает? А для чтения текстовых файлов так вообще ничего нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 21:59:28 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11Как из TFileStream получить контрольную сумму файла? Точно так же как и из File. Разницы никакой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 22:06:10 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11, матчасть: http://www.gunsmoker.ru/2011/10/pascal.html - см. "Общие принципы работы с файлами Pascal", "3. Далее файл открывается. Открывать файл можно в трёх режимах...", про FileMode, а также ниже - про обработку ошибок. http://www.gunsmoker.ru/2011/11/blog-post_12.html - что надо использовать в современных программах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 22:41:35 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
Сделал пока так: В функции определения CRC между AssignFile и Reset поставил FileMode := 0; Код: pascal 1. 2. 3. 4. 5. вроде проблема решена. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 05:03:56 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
В свежих средах можно еще посмотреть, чтение: TFile.ReadAllBytes, TFile.ReadAllLines, TFile.ReadAllText запись: TFile.WriteAllBytes, TFile.WriteAllLines, TFile.WriteAllText, TFile.AppendText ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 11:23:02 |
|
||
|
Как определить, что файл DLL занят?
|
|||
|---|---|---|---|
|
#18+
zeon11вроде проблема решена. Спасибо Застрелись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 15:19:13 |
|
||
|
|

start [/forum/moderation_log.php?user_name=%D0%BD%D0%B5+sog]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 701ms |
| total: | 1009ms |

| 0 / 0 |
