Можно ли получить список аргументов функции и их значения?

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
Hershy
рег.отделение
Сообщения: 64
Зарегистрирован: Вт, 03/03/2009 07:53
Имя Фамилия: Николай Воронцов
Откуда: Галактика-Урал
Контактная информация:

Можно ли получить список аргументов функции и их значения?

Сообщение Hershy »

Добрый день, гуру!

Собственно вопрос в заголовке.

Просто так давно уже не занимался такими тривиальными задачами, забыл напрочь все
Помнится в С такая возможность есть, а вот в випере или в делфях хотяб - не помню :conf:
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: Можно ли получить список аргументов функции и их значения?

Сообщение cruger »

А как в C получить список аргументов? Помнится, там есть макросы va_list и прочие, но с их помощью даже количество аргументов нельзя узнать. Не говоря уж о типе.
vadim
топ-софт
Сообщения: 197
Зарегистрирован: Чт, 06/09/2007 17:38
Имя Фамилия: Вадим Володько
Откуда: ТопСофт
Контактная информация:

Re: Можно ли получить список аргументов функции и их значения?

Сообщение vadim »

ну и скромный до наивности вопрос - зачем это надо?

по нашим внутренним стандартам ни одна функция не должна менять количество и тип своих параметров
если такое потребовалось - должна быть создана новая функция, а старая - продолжить работать в старом режиме (либо в крайнем случае выводить предупреждающее сообщение о необходимости использовать такую-то новую функцию - это тогда, когда она сама не в курсе, откуда взять, к примеру, новый параметр, являющийся значением обязательной аналитики)
Hershy
рег.отделение
Сообщения: 64
Зарегистрирован: Вт, 03/03/2009 07:53
Имя Фамилия: Николай Воронцов
Откуда: Галактика-Урал
Контактная информация:

Re: Можно ли получить список аргументов функции и их значения?

Сообщение Hershy »

Это все понятно, Вы немного зашли вперед, углубились, так сказать в объектную модель

Если просто - решили таки хоть как - то реализовать систему ведения логов в наших доработках, чтобы пользователи (если появляются какие - то замечания или дополнения) не объясняли нам как и что не работает, а объяснили в общем что не так и прислали нам файл с логами.
Логи решили сделать в xml формате, написали требование, щас реализуем.
Ну и по вопросу: есть функция, которая, например называется lxml, и создает логи в формате xml (это сильно упрощенно). Решили сделать так, чтобы нам самим было удобно, т.е. одна функция на все случаи. В функции передаются определенные параметры, ну так вот, хотелось бы, чтобы эти параметры передавались не как стринги, опять же чтобы меньше писать, а как обычные переменные.
Получается, что эта функция может иметь разное количество параметров.
С одной стороны мы это уже реализовали, т.е. задаем значения по умолчанию в функции lxml, и те параметры которые не заданы не используем, однако хотелось бы еще упростить эту систему и не передавать в функцию lxml название фукнции, в котрой она была вызвана (это нужно для структуры xml файла).
Вот, собственно, и все, хотя получилось, наверно, не очень понятно.

Ну и если есть какие - нибудь варианты реализации этой задачи, пришлите пожалуйста ссылочку на инфу, о чем буду премного благодарен.

А если можно, может кто поделится, как вообще реализуется в разных организациях выявление ошибок.
Сами мы пытались через отладку випера делать, да тормозит он больно и настроек много делать нужно на каждый интерфейс, да еще и работает через раз. Плюс, не понятно, что же делал пользователь с интерфейсом, когда ошибку получил, поэтому остановились на логах. Сначала были текстовые логи, но когда они превысили мыслимые размеры и в них разбираться сложно стало, решили структурировать логи, а что может быть лучше xml, вот и поехала эта доработка.
Аватара пользователя
larin
топ-софт
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Re: Можно ли получить список аргументов функции и их значения?

Сообщение larin »

Для реализации логов, лучше того что вы сами напишете будут специализированные библиотеки. Например Smart Inspect - http://www.gurock.com/smartinspect/

Возможно скоро это, или нечто подобное, будет прикручено к Галактике.
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: Можно ли получить список аргументов функции и их значения?

Сообщение cruger »

Ничего умнее использования #__file__ и #__line__ из существующих встроенных средств предложить не могу.
Ответить