| 
| 
 | Вопрос # 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]:Такие функции/процедуры на ассемблере делаются (а вот как именно, не знаю, поэтому и написал в форуме). |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |