"Обрезка" (ограничение) компилируемого кода.

Общие вопросы программирования, алгоритмы и т.п.

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

Re: "Обрезка" (ограничение) компилируемого кода.

Сообщение Сквозняк » 08.08.2021 05:39:54

Seenkao писал(а):я задолбался с этими исключениями...


В процедурах обрабатывающих нетривиальную логику их вообще вагон и маленькая тележка. Собственно выполнение продирается через фильтр исключений. Или не продирается и тогда выходит что действие делать не нужно/ не возможно/ нужно но попозже/ уже не надо/ и т.д. А если это писать километровой конструкцией с кучей if и else, то её смысл теряется. Попробуй что-то внутрь добавить и всё пересчитывать придётся :mrgreen:
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: "Обрезка" (ограничение) компилируемого кода.

Сообщение Seenkao » 08.08.2021 08:18:29

Так вот и не хочется лепить то, к чему потом костыли прилеплять нужно будет.
Лучше сделать на раз, на низком уровне, чем потом вылавливать эти баги когда всё кодом покроется... Сейчас-то не всегда сразу поймёшь, откуда ошибка идёт, а потом это будет дремучий лес. )))
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

Re: "Обрезка" (ограничение) компилируемого кода.

Сообщение Сквозняк » 08.08.2021 16:27:33

Лучше всего когда есть параллельно две системы подавления багов. Одна старается не допустить попадания в процедуры неверных данных, а вторая что-то химичит чтобы ликвидировать возникающие решаемые звиздецы. Всего ведь заранее не угадаешь, а тут твоя программа умеет продолжать работу при неверных данных. Например, программа распознавания лиц должна как-то пережить попадание в кадр мухи и не определить людское рыло как инсектоидное. С другой стороны она не должна отбрасывать вероятности попадания в кадр реального инсектоида - а вдруг попадёт :P
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: "Обрезка" (ограничение) компилируемого кода.

Сообщение wavebvg » 09.08.2021 18:30:43

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

{$MACRO ON}
{$define Button:=3}

function TestButton: Boolean;
begin
{$IF Button=3}
  {$Error "Don't Worry, Be Happy"}
{$ENDIF}
  // рабочий код
end;

begin
  TestButton;
end.   


https://www.freepascal.org/docs-html/prog/progse5.html
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: "Обрезка" (ограничение) компилируемого кода.

Сообщение Seenkao » 09.08.2021 20:19:51

wavebvg, поступающие данные, это данные поступающие в функцию/процедуру. И нам известна только размерность этих данных. А что туда "засунет" пользователь, не известно.

По сути, да, известно, что подаёт константы, которые как раз в пределе этих данных. Но, найдётся какой-нибудь умник и возьмёт не константу, а число и воткнёт в функцию/процедуру. Мы можем приравнять этот дефайн к входящим данным? Проверил - может.
Но при попытке проверить ловим вот это: "Error: Incompatible types: got "AnsiString" expected "Int64"" - получается, мы проверяем не число с числом, а символ с числом.

Результат, решение не достаточно верное. И, кстати, не вызывает ошибки, если мы сумеем скомпилировать код, данное место просто не проверится?
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

Пред.

Вернуться в Общее

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

Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 11

Рейтинг@Mail.ru