Обработка исключений

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

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

Re: Обработка исключений

Сообщение svk12 » 22.06.2009 15:36:50

В дельфях хорошо работает такое:

Код: Выделить всё
var
  i : Integer;
  y : double;
begin
  for i := -100 to 100 do
    try
      y := sqrt(i);
      Button1.Caption:=FloatToStr(y);
    except on E:Exception do
      begin
        Continue;
      end;
    end;
end;
Последний раз редактировалось svk12 22.06.2009 19:13:23, всего редактировалось 1 раз.
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: Обработка исключений

Сообщение Attid » 22.06.2009 18:27:51

svk12,
а на форуме хорошо когда пользуются тегом [code][/code]
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Обработка исключений

Сообщение EmeraldMan » 22.06.2009 21:00:19

Похоже все-таки у меня или с системой что-то или с железом, ничего не помогает... :(
Хотя других глюков вроде не наблюдаю...
В конце недели переставлю систему, потом отпишусь.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Re: Обработка исключений

Сообщение unC0Rr » 23.06.2009 00:51:56

По опыту: такие непонятные глюки могут быть связаны с антивирусами или/и видеодрайверами, что объясняет работу программы на других машинах
unC0Rr
новенький
 
Сообщения: 59
Зарегистрирован: 02.02.2006 03:44:44

Re: Обработка исключений

Сообщение Sergei I. Gorelkin » 23.06.2009 02:50:36

Да, кстати. Виноватой может быть любая программа, грузящая свою dll в адресное пространство процесса. Может сбивать режимы FPU. Собственно, для загрузки таких одаренных dll и существует SafeLoadLibrary.
Для проверки предположения можно попробовать сравнить значения, возвращаемые GetExceptionMask и GetRoundingMode на нормальной и глючной машинах.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Обработка исключений

Сообщение wavebvg » 24.06.2009 10:01:56

Вообще создать аналогичную ситуацию при всём желании не получается (ни в win32, ни в gtk2).
Пробовал на актуальной svn версии. Может быть сделать вот так
Код: Выделить всё
var
  i : Integer;
  y : double;
begin
  for i := -100 to 100 do
    try
      y := sqrt(i);
      Button1.Caption:=FloatToStr(y);
      Application.ProcessMessages;
    except
    end;
end;   
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Обработка исключений

Сообщение EmeraldMan » 01.07.2009 17:20:39

Похоже все-таки проблемы не в машине, а в ПО.
Ситуация следующая:
На моем компе:
при цикле i := -2 to 100 вылетат после 4го нажатия на кнопку
при цикле i := -100 to 100 вылетат после первого нажатия на кнопку (вылетает с первого раза когда начинаем от -7 или ещё меньше)
На других компах, однако скомпилированная на моем:
при цикле i := -2 to 100 сколько бы раз не нажимали - не вылетает, работает как надо!
при цикле i := -100 to 100 вылетает как у меня с первого раза...

Попробовал установить Lazarus 0.9.26.2 на другом компе, не поверите, так же косячно скомпилировался...
В связи с этим систему не стал сносить, потому как почти уверен, что глюки не пропадут, так же наверняка не в железе дело.

Выкладываю проект и скомпилированный EXE: http://www.freeprog.org/files/sqrt.rar
Пожалуйста, протестируйте у себя! На первой кнопке почти уверен у вас все отлично будет, очень интересно будет ли вылет на второй кнопке!
И ещё, если не сложно, после этого скомпилируйте проект на своем компьютере и выложите свой exe, я у себя проверю (думается вылетать не должен) или пришлите на aleksey@freeprog.org

Честно сказать, не знаю как все это поможет... идей особо нету... Однако есть спортивный интерес.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Re: Обработка исключений

Сообщение Vadim » 01.07.2009 18:08:48

Ваш экзешник у меня не вылетает - ни первая, ни вторая кнопка.
Вот у меня скомпилированный экзешник: http://aksinia.nm.ru/files/project1.rar.
0.9.27 20329 fpc 2.2.5
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Обработка исключений

Сообщение EmeraldMan » 01.07.2009 18:26:51

Vadim, спасибо большое!
У меня ваш экзешник тоже не вылетает! Что очень радует! :D
Vadim писал(а):Ваш экзешник у меня не вылетает - ни первая, ни вторая кнопка.

А на счет этого я прям удивился, на других компах вылетало...

Добавлено спустя 5 минут 10 секунд:
Да, и ещё
мой exe весит - 1,76 Мб
ваш - 1,59 Мб

интересно почему?..
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Re: Обработка исключений

Сообщение Vadim » 02.07.2009 08:03:00

EmeraldMan писал(а):интересно почему?

Чешу тыковку... :) Возможно FPC 2.2.5 даёт меньший объём экзешника, чем предыдущие версии. У Вас какой FPC?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Обработка исключений

Сообщение EmeraldMan » 02.07.2009 10:13:06

Vadim писал(а):У Вас какой FPC?

Обычно пользуюсь официальными релизами, а с версией 0.9.26.2 идет FPC 2.2.2, вот он то и у меня.
Надо тоже попробовать поновее поставить :)

Добавлено спустя 3 часа 29 минут 16 секунд:
Все-таки глюк в среде разработки был...
Поставил Lazarus-0.9.27-20777-fpc-2.2.5 (сегодня скачал), все норм! :)

Кстати, скомпилированный файл и правда немного меньше весит.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Пред.

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

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

Сейчас этот форум просматривают: MailRu[bot] и гости: 6

Рейтинг@Mail.ru
cron