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

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

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

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

Сообщение BJIaquMup » 04.05.2007 18:53:06

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?
BJIaquMup
новенький
 
Сообщения: 12
Зарегистрирован: 15.04.2007 11:00:34

Сообщение STAKANOV » 04.05.2007 18:56:57

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

Сообщение BJIaquMup » 04.05.2007 19:18:37

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

Сообщение STAKANOV » 04.05.2007 19:22:40

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


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

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

Сообщение shade » 05.05.2007 12:40:47

Все должно быть так же
+ должен быть подключен SysUtils, там определен EOverflow (в Delphi тоже требование)
+ модуль должен быть скомпилирован в режиме {$MODE OBJFPC} или {$MODE DELPHI}
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение BJIaquMup » 09.05.2007 10:03:09

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

Пробовал. Ругается на try по-прежнему.
BJIaquMup
новенький
 
Сообщения: 12
Зарегистрирован: 15.04.2007 11:00:34

Сообщение shade » 09.05.2007 11:06:29

А что у тебя за 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.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение SAK » 09.05.2007 13:44:18

А в чём проблема-то, при компиляции или при выполнении? У меня при компиляции нет ошибок, при выполнении происходит исключение деления на 0.
Почему не написать проще:
Код: Выделить всё
  try
   Calc:=exp(p*ln(g));
  except ResetResult:=true;
  end;//try

В этом случае исключение обрабатывается.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Сообщение BJIaquMup » 10.05.2007 11:15:52

А проблема оказалась здесь:
Код: Выделить всё
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}
BJIaquMup
новенький
 
Сообщения: 12
Зарегистрирован: 15.04.2007 11:00:34

Сообщение Attid » 10.05.2007 12:32:16

не надо леаперда обижать, он об этом стопудова писал, надо читать что он говорит. вообще надо забанить подобные вопросы без копи\пасте сообщений фпц. так глядишь пока скопируют и прочитают что там .
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru