IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Проблема в FPC при работе с файлами, При попытке открытия несуществующего файла программа закрывается с код
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Код:
assign(f,fname);
{I-}
reset(f);
{I+}
if IOResult <> 0 then begin
rewrite(f);

Если файла нет, на строке с reset(f) программа вылетает с exitcode = 2.
Ошибка не в программе, со старыми исходниками дела так же.
Переустановка (после полного удаления ручками) ничего не дает.
Все нормально после удаления всех файлов fp.cfg, fp.dsk, fp.ini и чего-то еще похожего что там рядом лежит, но это не решает проблему - ведь исчезают все настройки, в том числе директории включаемых файлов (прощай библиотеки).

Что за ерунда??

Добавлено через 7 мин.
Виновата конфигурация.
Сношу конфиг файлы - все работает как надо.
Выложите кто свои 100% рабочие?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Разработчик
Free Pascal: Разработчик

Репутация: -  627  +


Вообще-то ТУТ дело явно в программе, у тебя не отключение/включение контроля ошибок ввода-вывода, а простые комментарии, и при включенном режиме Options ->Compiler -> Generated code -> IO Checking программа должна вылетать. А при удалении конфигов ты просто сбрасываешь этот ключ компилятора в дефолтное состояние (а дефолтное у него - "Отключено"), и просто замалчиваешь ошибку. Не надо искать проблем там, где их нет. Исправь программу ({$I-} и {$I+}) и все будет нормально.

Кстати: в папке, куда установлен FPC (т.е., в \fpc\bin\{target}) есть копия fp.cfg, всегда можно забрать ее оттуда.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Цитата(IUnknown @ 27.11.2011 1:33) *
Исправь программу ({$I-} и {$I+}) и все будет нормально.

Вот это я ступил ypriamii.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Не знаю, как это получилось, но еще зависало когда печатал syst, хотя если напечатать sys, а через пробел utils, то после удаления пробела все нормально. Вообщем решилась проблема удалением файла fp.dsk.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


А зачем вообще $I обратно на + ставить?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Разработчик
Free Pascal: Разработчик

Репутация: -  627  +


Затем, что это - дефолтное значение. Как говорится, "не будем нарушать отчетности" (С), было включено - выключили, сделали при выключенном состоянии то, что нужно, включили назад. Да и сам FPC так написан (и компилятор, и IDE, и все дополнительные утилиты).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


А если программа изначально компилируется при {$I-}? То получается, что нарушаем как раз.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Разработчик
Free Pascal: Разработчик

Репутация: -  627  +


Цитата(TarasBer @ 13.01.2012 8:25) *
А если программа изначально компилируется при {$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, этот ключ потерял первоначальный смысл, раньше без его отключения нельзя было обойтись, теперь - можно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> то программист - ССЗБ

Ну и зря.
Я этот ключ отрубил раз и навсегда и при открытии файлов никаких плясок с директивами не делаю вообще.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 21.05.2018 0:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"