Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизФункции, процедуры... Найти похожие ветки
← →
Димыч (2003-06-11 22:19) [0]Как создать функцию с переменным количеством параметров? (пример: SetLength(a, 3, 3, 2, 8); SetLength(b, 2); )
← →
stranger___ (2003-06-11 22:34) [1]никак
можно использовать открытые массивы не более
← →
Li (2003-06-11 22:42) [2]Вообще-то функции типа SetLength были еще в TP, но они системные и взависимости от количества параметров компилятор генерировал разный код, такой возможности нет в Paskale.
← →
Melamed (2003-06-11 23:19) [3]Если нужно одну и тужу функцию или процедуру вызывать с разными параметрами (их число и тип) то можно применить перегружаемые функции. Они появились с 4 версии. Но в этом случае для каждого набора аргументов пишеится сво функция/процедура.
Если типы аргументов одинаковые и меняется только их число, то применяй открытые массивы. Примеры таких функций можно найти в файле Math.pas, поставляемого с Delphi.
Изучайте исходники!
← →
pasha_golub (2003-06-12 09:43) [4]К примеру так:
procedure Some(a: byte; b: byte = 5; c: byte = 6);
При указании Some(9) функция оперирует значениями 9, 5, 6.
При указании Some(9,4) функция оперирует значениями 9, 4, 6.
При указании Some(9,0,0) функция оперирует значениями 9, 0, 0.
← →
Armen (2003-06-12 12:03) [5]Можно использовать VarArrayCreate, VarArrayOf.
← →
Levan Varshanidze (2003-06-12 12:15) [6]На поставленный вопрос самим точным ответом можнго считать ответ
pasha_golub-а,
жал только, что там нельзя визывать
Some(9,,7) для оперирования значениями 9,5,7
(например, в клиппере так можно, и это очень мощное средство)
← →
Armen (2003-06-12 12:30) [7]procedure A(V: Variant);
begin
.......
end;
begin
A(VarArrayOf[1, 2, "Some Text", true, 3.14, integer(@SomeVariable)], VarArrayOf(["a", "b"]));
end.
Помоему лучше не придумаешь.
← →
Anatoly Podgoretsky (2003-06-12 12:30) [8]Melamed (11.06.03 23:19)
Это не совсем верно, параметры открытого массива могут быть любого типа и любое количество.
procedure Some(const Args: array of const);
← →
Anatoly Podgoretsky (2003-06-12 12:32) [9]Вызов
Some(["test", 100, True, 3.14, TForm]);
← →
Armen (2003-06-12 12:33) [10]> Armen (12.06.03 12:30)
В конце скобок не хватает.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.025 c