zub писал(а):А почему в procedure x(a:integer;b:real); не обявить все параметры и неиспользовать их? если это не ваша процедура, запускать ее через прокладку с объявлеными всеми параметрами
Потому-что процедуру объявляет конечный пользователь моего проекта, а я ее только вызываю. Говорить юзеру "Объяви процедуру со 100500 параметрами, потомучто" - не есть правильно. И я не знаю, сколько конкретно параметров объявит юзер. Поэтому максимум что я фиксирую, это устанавливаю верхнюю границу кол-ва параметров и требую для них всех тип variant. Либо только один параметр в виде константного массива (с этим вопросов нет, все работает штатно). После чего юзер передет мне указатель на эту процедуру.
Когда приходит время вызывать юзеровскую процедуру, то вызываю ее с максимальным кол-м аргументов, вне зависимости, сколько аргументов в ней было заявлено. И, блин, это работает! Я не верил в это, когда проверял, ждал проблем со стеком, сегфолта или утечек памяти, но работает все без проблем, debian 8,9, altlinux 7,8, fpc 2.6.4. 3.0.0, 3.0.2.
Вопрос только в одном: не эксплуатирую-ли я некий редкий баг, который с успехом и фанфарами исправят в новой версии fpc, поломав мне весь код?
serbod писал(а):Подумайте получше, что важнее - удобно при разработке или надежно при эксплуатации. Потратить минуты при разработке сейчас или потратить часы при отладке потом. Не исключаю, что у вас сугубо одноразовый демонстрационный проект, вроде тестового задания, где важнее сделать быстро, чем качественно.
О надежности и думаю, поэтому и поднял тут тему. И в релиз проекта эту фичу не запущу, пока не найду подтверждения, что это безопасно. Либо не найду и тогда откачу до предыдущей, крайне многословной версии. Хоть и не хочется.