Проблема в FPC при работе с файлами, При попытке открытия несуществующего файла программа закрывается с код |
Проблема в FPC при работе с файлами, При попытке открытия несуществующего файла программа закрывается с код |
AlexSun |
27.11.2011 1:11
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Александр Репутация: 0 |
Код:
assign(f,fname); Если файла нет, на строке с reset(f) программа вылетает с exitcode = 2. Ошибка не в программе, со старыми исходниками дела так же. Переустановка (после полного удаления ручками) ничего не дает. Все нормально после удаления всех файлов fp.cfg, fp.dsk, fp.ini и чего-то еще похожего что там рядом лежит, но это не решает проблему - ведь исчезают все настройки, в том числе директории включаемых файлов (прощай библиотеки). Что за ерунда?? Добавлено через 7 мин. Виновата конфигурация. Сношу конфиг файлы - все работает как надо. Выложите кто свои 100% рабочие? |
IUnknown |
27.11.2011 2:33
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Вообще-то ТУТ дело явно в программе, у тебя не отключение/включение контроля ошибок ввода-вывода, а простые комментарии, и при включенном режиме Options ->Compiler -> Generated code -> IO Checking программа должна вылетать. А при удалении конфигов ты просто сбрасываешь этот ключ компилятора в дефолтное состояние (а дефолтное у него - "Отключено"), и просто замалчиваешь ошибку. Не надо искать проблем там, где их нет. Исправь программу ({$I-} и {$I+}) и все будет нормально.
Кстати: в папке, куда установлен FPC (т.е., в \fpc\bin\{target}) есть копия fp.cfg, всегда можно забрать ее оттуда. |
AlexSun |
27.11.2011 13:52
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Александр Репутация: 0 |
|
zixeroryrooca |
11.01.2012 19:52
Сообщение
#4
|
Гость |
Не знаю, как это получилось, но еще зависало когда печатал syst, хотя если напечатать sys, а через пробел utils, то после удаления пробела все нормально. Вообщем решилась проблема удалением файла fp.dsk.
|
TarasBer |
12.01.2012 9:41
Сообщение
#5
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
А зачем вообще $I обратно на + ставить?
-------------------- |
IUnknown |
12.01.2012 19:45
Сообщение
#6
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Затем, что это - дефолтное значение. Как говорится, "не будем нарушать отчетности" (С), было включено - выключили, сделали при выключенном состоянии то, что нужно, включили назад. Да и сам FPC так написан (и компилятор, и IDE, и все дополнительные утилиты).
|
TarasBer |
13.01.2012 9:25
Сообщение
#7
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
А если программа изначально компилируется при {$I-}? То получается, что нарушаем как раз.
-------------------- |
IUnknown |
13.01.2012 11:33
Сообщение
#8
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
А если программа изначально компилируется при {$I-} , то программист - ССЗБ. Я имел в виду:Цитата(prog.pdf) 1.1.36 $I or $IOCHECKS : Input/Output checking The {$I-} or {$IOCHECKS OFF} directive tells the compiler not to generate input/output check- ing code in the program. By default, the compiler generates I/O checking code. К тому же теперь, с возможностью отлова исключения EInOutError, этот ключ потерял первоначальный смысл, раньше без его отключения нельзя было обойтись, теперь - можно. |
TarasBer |
13.01.2012 11:35
Сообщение
#9
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> то программист - ССЗБ
Ну и зря. Я этот ключ отрубил раз и навсегда и при открытии файлов никаких плясок с директивами не делаю вообще. -------------------- |
Текстовая версия | 19.11.2024 13:27 |