Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Создаю текстовый файл на диске. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Самое интересное то, что: 1) из под обычного приложения работает как надо - пишет в файл, всё корректно. 2) из под службы вылетает на CloseFile(f); с исключением "I/O error 103", но при этом всё равно фиксирует изменения на диске и файл записывается нормальный. Почему же возникает исключение "I/O error 103" ? Эта же ошибка будет если просто вызвать CloseFile(f) без его предварительного открытия, ну это понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2020, 21:33 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
m52 Код: pascal 1. Файл существует ко времени старта службы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2020, 21:41 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Нет, файла не должно быть. А что это имеет значение? Rewrite должна пересоздать его в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2020, 21:53 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
m52 Нет, файла не должно быть. А что это имеет значение? Rewrite должна пересоздать его в любом случае. Разница в правах между службой и пользователем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2020, 21:56 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Служба запускается под "NT AUTHORITY\LocalSystem" Почему же возникает исключение "I/O error 103" ? Файл то при этом записывается нормально, если задавить исключение. Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2020, 22:00 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
m52Почему же возникает исключение "I/O error 103" ? Потому что код, который ты показываешь - туфта и такого исключения выкидывать не может по причине отключенных проверок. По той же причине ошибка способна возникать где угодно, сохраняясь через все вызовы. Наиболее вероятная причина - у тебя опечатка в имени переменной. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2020, 23:05 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Никаких MessageBox мой код конечно не выдает, но исключение "I/O error 103" на CloseFile(f) из под службы вызывает наверное потому, что после вызова AssignFile IOResult=103 Странно, что после повторного вызова AssignFile IOResult=0 и тогда после всех writeln, на вызове CloseFile(f) всё проходит гладко. Такое впечатление, что исключение "I/O error 103" при выполнении CloseFile относится не к CloseFile, а к AssignFile Что делать? Поставить 2 раза вызов AssignFile? Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 11:39 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Я разобрался, почему на CloseFile(f) возникало исключение "I/O error 103". Оказалось, что я сделал вызов Log (моя ф-ция для вывода инфы в другой txt-файл), а у меня внутри этой Log тоже делаются свои {$I-} и {$I+} и т.о, после выхода из той ф-ции включено {$I+} и далее может возникнуть Exception. Ладно, с этим разобрался. Но остается непонятно , почему на AssignFile, Rewrite, Reset или CloseFile иногда возникает IOResult=103 ("I/O error 103"). Наверное могут возникать и другие коды IOResult. Теоретически, что-то может блокировать файл (например, антивирусник). Пока нашел решение такое : перед AssignFile отключить генерацию исключений с помощью директивы {$I-} и самому контролировать каждую операцию, проверяя IOResult, а в конце {$I+}. Самое лучшее - каждую операцию AssignFile, Rewrite, Reset и CloseFile обернуть в цикл, например, 1 до N попыток. Практика показала, что при 1-й попытке может быть ошибка, а при 2-й попытке все ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 13:09 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
m52Теоретически, что-то может блокировать файл (например, антивирусник) Для кодера у тебя слишком буйная фантазия, с ней в архитекторы надо. Выключи воображение и выясни как на самом деле работает твоя программа, проверяя IOResult после каждого вызова каждой функции в блоке с отключенной автоматической проверкой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 13:44 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
m52 внутри этой Log тоже делаются свои {$I-} и {$I+} и т.о, после выхода из той ф-ции включено {$I+} и далее может возникнуть Exception Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 15:10 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Polesov, а тебя не смутил факт, что это опция компилятора и на вложенные вызовы она не распространяется, а аффтар просто бредит?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 17:17 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
m52 Я разобрался, почему на CloseFile(f) возникало исключение "I/O error 103". Оказалось, что я сделал вызов Log (моя ф-ция для вывода инфы в другой txt-файл), а у меня внутри этой Log тоже делаются свои {$I-} и {$I+} и т.о, после выхода из той ф-ции включено {$I+} и далее может возникнуть Exception. Ладно, с этим разобрался. Директивы так не работают. Разбирайся дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 17:22 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov а аффтар просто бредит?.. Удваиваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 17:23 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Polesov, а тебя не смутил факт, что это опция компилятора и на вложенные вызовы она не распространяется, а аффтар просто бредит?.. Да, действительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2020, 20:21 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Автор, 1. Удалите нафиг все ваши директивы 2. Научитесь пользоваться исключениями 3. Все CloseFile занесите в блок finally После этого приходите с новым кодом, текстом ошибки и строкой на которой она возникает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2020, 13:09 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
28.12.2020 13:09, _Vasilisk_ пишет: > 1. Удалите нафиг все ваши директивы > 2. Научитесь пользоваться исключениями +1 IOResult - "тяжелые пережитки тёмного прошлого" (С) ещё со времён TurboPascal'я Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2020, 13:28 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Рассказать ТС про исключения или рано еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2020, 13:45 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Автор, 1. Удалите нафиг все ваши директивы 2. Научитесь пользоваться исключениями 3. Все CloseFile занесите в блок finally После этого приходите с новым кодом, текстом ошибки и строкой на которой она возникает Большое спасибо за совет! Я тоже подозревал, что эти директивы - какой-то пережиток прошлого и с радостью избавился от них и сделал корректный отлов исключений. Получилось всё намного красивее и работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2020, 19:34 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
m52 Большое спасибо за совет! Я тоже подозревал, что эти директивы - какой-то пережиток прошлого Ну, как бы, AssignFile, CloseFile и т.п. - это такой же пережиток прошлого, как и IOResult... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2020, 21:26 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
alekcvp Ну, как бы, AssignFile, CloseFile и т.п. - это такой же пережиток прошлого, как и IOResult... А какой ещё механизм для последовательного чтения текстовых файлов предлагает Delphi? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2020, 21:30 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey alekcvp Ну, как бы, AssignFile, CloseFile и т.п. - это такой же пережиток прошлого, как и IOResult... А какой ещё механизм для последовательного чтения текстовых файлов предлагает Delphi? Delphi предлагает модули Windows.pas и Classes.pas. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2020, 22:36 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
ъъъъъ Delphi предлагает модули Windows.pas и Classes.pas. Расскажи о них подробнее, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2020, 22:51 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey alekcvp Ну, как бы, AssignFile, CloseFile и т.п. - это такой же пережиток прошлого, как и IOResult... А какой ещё механизм для последовательного чтения текстовых файлов предлагает Delphi? Для начала надо определиться: чтения или всё-таки записи? Логи - это вроде как про запись, да и у ТСа в коде я команд ReadLn не наблюдаю. Далее чтение файлов построчно - это какой-то не очень правильный подход, как по мне. Не лучше ли будет прочитать сразу весь файл через TStringList (если файл маленький) или работать через MMF/T(File|Memory)Stream (если большой)? P.S: AssignFile и компания вообще умеют выдавать понятные ошибки доступа, как, например, это делает CreateFile?..Или каждый раз надо гадать что за загадочная IO Error вылезла на этот раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2020, 00:41 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
alekcvp Для начала надо определиться: чтения или всё-таки записи? Логи - это вроде как про запись, да и у ТСа в коде я команд ReadLn не наблюдаю. Ну так эти функции используются не только для записи, верно? alekcvp Далее чтение файлов построчно - это какой-то не очень правильный подход, как по мне. Не лучше ли будет прочитать сразу весь файл через TStringList (если файл маленький) или работать через MMF/T(File|Memory)Stream (если большой)? Если использовать MMF или стрим, то придётся самому проделать ровно ту работу, которая уже сделана в системных функциях, с непонятными бенефитами в результате. alekcvp P.S: AssignFile и компания вообще умеют выдавать понятные ошибки доступа, как, например, это делает CreateFile?..Или каждый раз надо гадать что за загадочная IO Error вылезла на этот раз? Есть список: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Input-Output_Errors он правда не полный (есть ещё 131, 107). Если ни один из этих кодов, значит код системной ошибки. В любом случае, гадать не нужно, есть GetLastError. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2020, 01:50 |
|
||
|
Ошибка "I/O error 103" при выполнении CloseFile из-под службы
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey alekcvp Ну, как бы, AssignFile, CloseFile и т.п. - это такой же пережиток прошлого, как и IOResult... А какой ещё механизм для последовательного чтения текстовых файлов предлагает Delphi? Вот и я тоже хотел спросить, чем можно заменить последовательное по-строчное чтение из большого текстового файла? Сразу скажу, что TStringList.LoadFromFile не предлагать, т.к. есть риск сожрать всю память и получить "Out of Memory". Надо именно последовательно считывать текст, по-строчно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2020, 07:15 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40031770&tid=2037178]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
70ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 170ms |

| 0 / 0 |
