| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Фции с переменным количеством аргументов в Delphi? |
| Автор: jonie 25.10.2006, 21:31 |
| Сам я не сильно в делфи чета кодирую... всеж предпочитаю С(++\#)... и стало инетересно как же реализована в делфи (равно как и в паскале) таже ф-ция writeln ? В паскале я как понимаю это макрос(?), ибо переменное кол-во аргументов в языке не заложено. Если это ф-ция то как написать свою такую же? (чтобы синтаксически они отличны НЕ были (тот же Format(...) - имеет отличия!)). Если макрос, то как он реализован и где его пардон "искать" ? Если в паскале сий способ не был заложен, то изменилось ли это в Delphi ? -------------- в общем ваши соображения) ЗЫ в поиске похожего не нашел( может руки кривыЕ? |
| Автор: Snowy 25.10.2006, 21:52 |
| Вариантов несколько. 1. Использовать перегруженные функции (справка по overload) 2. Использовать функции с параметром по умолчанию (Типа function MyFunc(a: integer; b: string = 'строка'): boolean;) 3. Использовать функуии с параметрами open array (опять же справка) |
| Автор: jonie 25.10.2006, 22:02 | ||
1 - не примелемо (сколько перегрузок для writeln тогоже надо сделать (я так подозреаю почти бесконечное множество)?)) 2 - аналогично. 3 - хм... если сделать `array of pointer` ...... возникнет проблема при передачи констант?( Constants cannot be used as open array arguments |
| Автор: Romikgy 25.10.2006, 22:11 | ||||
Воть пример
|
| Автор: jonie 25.10.2006, 22:16 | ||||
равно как и тут) writeln - то без `[]` ! /* подобное я видел ранее) почему это мои ф-ции должны синтаксически отличаться?) я хочу писать также легко, да и без строки форматирования)) */ |
| Автор: bems 25.10.2006, 23:35 |
| Встроено в компилятор. Идеологически это функция, на практике - часть языка |
| Автор: Sunvas 26.10.2006, 17:08 |
и функцию inc я тоже не могу найти. |
| Автор: Romikgy 26.10.2006, 18:33 |
имхо также вшито в компилятор |
| Автор: digs 26.10.2006, 18:36 |
| Проблем то добавить две скобки? А массив можно вариантный задать, а внутри уже разбирать по типам |
| Автор: bems 26.10.2006, 18:53 | ||
да, и он заменяет это на соотв. инструкцию процессора. Это эффективнее чем вызывать функцию. кто-нибудь может мне сказать почему в Паскале до сих пор нет макросов? |
| Автор: Romikgy 26.10.2006, 18:58 | ||
имхо вопрос к борланду , а не к форумчанам |
| Автор: Snowy 26.10.2006, 19:10 |
| Потому что макросы это зло Код должен быть прямо читаемым, а не подразумеваемым. |
| Автор: jonie 26.10.2006, 19:29 | ||||
А зачем? Дело не в скобках. Сравнивая с С\С++ тем же...там все что есть возможно написать своими силами с идентичным синтаксисом. Делфи же написан тоже не делфи). Лично мне не нравятся "черные ящики".
|
| Автор: bems 27.10.2006, 00:06 | ||
С точки зрения кода макрос - это функция. Только вопрос в эффективности. Помоему местами есть смысл заюзать препроцессор. да, но реализация - [censored34! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме]. Если бы были макросы как часть языка, то 1) без "тонкостей" компилятора 2) красивый и прозрачный модуль "system" |
| Автор: bems 27.10.2006, 00:22 |
| Форумчане (некоторые) рулят. Snowy например. И другие. Snowy, Где зло? (ну или хоть ссылку на авторитеты) goto не предлагать ))) |
| Автор: Romikgy 27.10.2006, 08:58 |
ты хошь сказать что Снежок принимал участие в разработке паскаля/дельфи? |
| Автор: bems 27.10.2006, 11:27 |
| Я хочу сказать что какой-никакой ответ у него нашелся |