Вниз
Скачать: 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.022 c
1-84336
alexvan
2003-06-16 10:13
2003.06.26
Странный глюк при выходе из критической секции


1-84359
SkySlider
2003-06-16 16:15
2003.06.26
Dll Forms In Delphi


3-83941
Stam
2003-05-23 10:26
2003.06.26
Ошибка при работе с Oracle - ORA-04031. Помогите...


1-84397
YuraKiller
2003-06-07 22:18
2003.06.26
Как обнулить таймер?


1-84157
Hog
2003-06-11 09:47
2003.06.26
PChar and Null-terminator




   Наверх