Вниз
Скачать: CL | DM;

Функции, процедуры...   Найти похожие ветки 

← →
Димыч   (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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
14-84716
KaRaT
2003-06-05 14:48
2003.06.26
manual по Бест?


3-83858
DBDev
2003-06-01 16:57
2003.06.26
Как бы сделать управляемый ORDR BY в SP? Помогите ПЛЗ!


1-84297
Doc
2003-06-14 20:51
2003.06.26
Как скачать DFM работающего приложения?


14-84561
RIMMER
2003-06-07 23:54
2003.06.26
Интерфейс и методы


3-83982
Ренат
2003-05-30 08:29
2003.06.26
Некорректная запись в базе




   Наверх