|
Вопрос # 965/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Каким образом можно описать функцию, число параметров которой было бы неограниченным? Примеры таких функций - Write(), WriteLn(), есть математические вроде Max() и др.
 |
Вопрос задал: Bookworm22 (статус: Посетитель)
Вопрос отправлен: 7 октября 2007, 21:51
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Bookworm22!
Ну начнём с того, что Write(), WriteLn() не функции, а процедуры. Но это не столь важно. важно другое, что эти процедуры называются "магическими". тоесть компилятор знает о них и умеет генерировать код. Но на самом деле нельзя описать их прототип. Язык Паскаль/Делфи не позволяет описать и реализовать эту процедуру. На данный момент.
Но, если процедура написана на С++, то можно импортировать и использовать функции с множеством параметров. Возможность появилась с 6 делфи.
Но есть другой способ. Называется открытый константный массив. Его можно увидеть на примере функции Format. она описанна как
Format(s:string; param:array of const);
и передать параметры можно следующим образом
format('%s %d',['stroka', 5])
И если лишняя пара квадратных скобок вас не смущает, то это самый лучший способ
Что бы разобраться, читайте тут
http://rvelthuis.de/articles/articles-openarr.html (исходники, хотя текст англ)
http://www.delphisources.ru/pages/faq/base/array_of_const.html (на русском с примерами как понять какого типа параметры)
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 7 октября 2007, 23:37
Оценка за ответ: 5
Комментарий к оценке: Спасибо, Вадим. Как раз та информация, которая и была нужна.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 7 октября 2007, 23:08; участников в обсуждении: 1.
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 7 октября 2007, 23:08 [#1]:
Такие функции/процедуры на ассемблере делаются (а вот как именно, не знаю, поэтому и написал в форуме).
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|