Главная страница
    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.024 c
14-84743
Сатир
2003-06-02 13:18
2003.06.26
Не верьте гороскопам


1-84411
Гость необразованный
2003-06-09 18:51
2003.06.26
иконка на кнопке


3-83898
malamba
2003-06-03 09:37
2003.06.26
подключение к ODBC


1-84140
ngczn
2003-06-10 13:27
2003.06.26
маска ввода


3-83888
XConeo
2003-05-28 01:35
2003.06.26
Люди кто работал с ADO то милости прошу





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский