Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-84174
Alex_x
2003-06-11 17:42
2003.06.26
помогите с SaveToStream


3-83943
Danchik
2003-05-29 13:29
2003.06.26
вопрос по DBGrid


1-84368
kasper
2003-06-16 17:34
2003.06.26
Помогите с выводом на печать!!


1-84213
OlegNOE
2003-06-12 18:48
2003.06.26
Дочерние окна


1-84438
Delph1
2003-06-10 09:14
2003.06.26
TreeView и выделение нескольких узлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский