Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: 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 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
3-83917
krotik
2003-06-03 12:29
2003.06.26
RDSConnection в ADO - вопрос не для слабаков


14-84568
comintegrator
2003-06-07 08:37
2003.06.26
integer & string


3-83906
Stas
2003-06-03 12:09
2003.06.26
Составной ключ


1-84169
alecs
2003-06-11 16:52
2003.06.26
Как поместить в заголовок PageControl кнопку?


7-84793
Alex000
2003-04-15 08:52
2003.06.26
Считывание серийного номера