Try ... except проблема

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
BJIaquMup
новенький
Сообщения: 12
Зарегистрирован: 15.04.2007 11:00:34

Try ... except проблема

Сообщение BJIaquMup »

function Calc(g,p:extended):extended;
begin
ResetResult:=false;
try
Calc:=exp(p*ln(g));
except on EOverflow do ResetResult:=true;
end;//try
end;

Так в Delphi. Подскажите пожалуйста, как бы это выглядело в FPC?
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

BJIaquMup
новенький
Сообщения: 12
Зарегистрирован: 15.04.2007 11:00:34

Сообщение BJIaquMup »

Не открывается ссылка.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

BJIaquMup писал(а):Не открывается ссылка.


Не знаю. У меня открывается. Если документация есть, то это "Free Pascal :Reference guide.", раздел 13.2

Хотя можно поверить наслово :wink:
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Все должно быть так же
+ должен быть подключен SysUtils, там определен EOverflow (в Delphi тоже требование)
+ модуль должен быть скомпилирован в режиме {$MODE OBJFPC} или {$MODE DELPHI}
BJIaquMup
новенький
Сообщения: 12
Зарегистрирован: 15.04.2007 11:00:34

Сообщение BJIaquMup »

shade писал(а):Все должно быть так же
+ должен быть подключен SysUtils, там определен EOverflow (в Delphi тоже требование)
+ модуль должен быть скомпилирован в режиме {$MODE OBJFPC} или {$MODE DELPHI}

Пробовал. Ругается на try по-прежнему.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

А что у тебя за ResetResult
Может Result? хотя нет, не понятно...

Приведи полный код, и укажи версию своего компилятора.
----------------------

Обрати на место положение {$MODE DELPHI}, в новой версии компиятора (у меня 2.3.1) если указать после uses, то не компилятор генерирует предупреждение и игнорирует эту директиву, поэтому не работает.

Код: Выделить всё

program test;

{$MODE DELPHI}

uses SysUtils;


var ResetResult : boolean;

function Calc(g,p:extended):extended;
begin
  ResetResult:=false;
  try
   Calc:=exp(p*ln(g));
  except on EOverflow do ResetResult:=true;
  end;//try
end;

begin
  calc(0, 0);
end.
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

А в чём проблема-то, при компиляции или при выполнении? У меня при компиляции нет ошибок, при выполнении происходит исключение деления на 0.
Почему не написать проще:

Код: Выделить всё

  try
   Calc:=exp(p*ln(g));
  except ResetResult:=true;
  end;//try

В этом случае исключение обрабатывается.
BJIaquMup
новенький
Сообщения: 12
Зарегистрирован: 15.04.2007 11:00:34

Сообщение BJIaquMup »

А проблема оказалась здесь:

Код: Выделить всё

procedure ingraf;
var gd,gm:smallint;
// 6peg kakou~-mo :-/ Tpe6yem smallint BMecmo integer. uguomu3M!
begin gd:=detect;initgraph(gd,gm,'C:\Pascal\FPC') end;

Это всё после ввода директивы компилятору подключение модуля Delphi {$ MODE DELPHI}
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

не надо леаперда обижать, он об этом стопудова писал, надо читать что он говорит. вообще надо забанить подобные вопросы без копи\пасте сообщений фпц. так глядишь пока скопируют и прочитают что там .
Ответить