Деление на 0

отредактировано 17:11 Раздел: FastReport 3.0
в строке [(<frxDBDataset1."indata">-<frxDBDataset1."outdata">)/<frxDBDataset1."indata">*100]

Если frxDBDataset1."indata" соответственно равен 0, то падаем с access violation. Разве это нормально? Может хотя бы проверять на 0 и выдавать в этом месте нулевой результат или пусто? Но не падать ИМХО.

Комментарии

  • отредактировано 17:11
    У меня выдает exception, он ловится внутри фр-овского кода, и показывается сообщение типа "division by zero".
  • отредактировано 17:11
    Прекращать отчет по моему не надо.
    поставить крыжик что если происходит
    деление на ноль в мемке выводилось сообщение деление на 0
    а отчет весь строился дальше.

    так ИМНО лучше будет.
  • отредактировано 17:11
    ну, понятно что это надо проверять на Null. Но не надо писать в отчете деление на ноль, либо дать этот вопрос решать опционально. типа указать что надо выдать при делении на 0 во всем отчете...
  • отредактировано 17:11
    ironwit написал:
    ну, понятно что это надо проверять на Null. Но не надо писать в отчете деление на ноль, либо дать этот вопрос решать опционально. типа указать что надо выдать при делении на 0 во всем отчете...
    Вообще-то деление на 0 - ситуация нештатная. Такие проверки надо учитывать при создании отчета.
    ps. на ru-board писали, как получить лицензию ;)
  • отредактировано 17:11
    AlexTZ написал:
    Вообще-то деление на 0 - ситуация нештатная. Такие проверки надо учитывать при создании отчета.
    ps. на ru-board писали, как получить лицензию ;)
    Штатная, не штатная... Программа уважающего себя разработчика падат ьне должна. А тем более по вине стороннего компонента ;) Может и правда ввести какой то способ указывать что отображать в случае деления на 0, да и все?

    ну дык я оттуда и пришел, даже ник такой же ;) Будем зарабатывать ;)
  • отредактировано November 2004
    написал:
    Штатная, не штатная... Программа уважающего себя разработчика падат ьне должна. А тем более по вине стороннего компонента  Может и правда ввести какой то способ указывать что отображать в случае деления на 0, да и все?

    А вот я думаю, что это не правильно. Ситуация деления на 0 сродни ситуации, когда винда пытается что-то записать в своп-файл, а его на диске нет ;) Я думаю, тут надо отваливаться и прекращать работу.
    написал:
    ну дык я оттуда и пришел, даже ник такой же  Будем зарабатывать

    И я ruboard.gif. Но мне кажется, что за такие деньги (для xUSSR) можно поддержать "нашего" (отечественного) производителя ;)
  • отредактировано 17:11
    А чего это, не грузятся картинки со сторонних сайтов?
  • отредактировано 17:11
    YuraZ написал:
    А вот я думаю, что это не правильно. Ситуация деления на 0 сродни ситуации, когда винда пытается что-то записать в своп-файл, а его на диске нет ;) Я думаю, тут надо отваливаться и прекращать работу.
    Ну вот смотри, я даю репорту отчет с данными - начислено, оплачено. Внутри отчета считаю абсолютное кол-во оплат и процентное отношение. Вот на процентном отношении оно и падает если начислений и оплат нет. Сейчас я это делаю обрабатываю IIF, но лениво же ;) А если бы репорт автоматом такое дело отхватывал, то мне было достаточно указать что нужно отображать 0 в такой ситуации. ;)
    YuraZ написал:
    И я ruboard.gif. Но мне кажется, что за такие деньги (для xUSSR) можно поддержать "нашего" (отечественного) производителя

    Нет возможности к сожалению ;) Но если проект пойдет - это будет первая лицензия которую я куплю даже в случае если мне ее подарят ;)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.