Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Вниз

Параметры в процедурах и функциях   Найти похожие ветки 

 
Wild   (2003-09-11 17:40) [0]

Народ, может кто подскажет....может прошло время ограничения и можно писать функции/процедуры с неопределенным заранее количеством параметров? Я думаю Вы уже поняли, но приведу пример:

procedure MyProc(Param1,Param2,... : variant);
begin
//...и каким-то образом знать сколько и чего передано
end;


Ну вот и все. Пишите.


 
Skier   (2003-09-11 17:43) [1]

Что имеется в виду ?
1) Открытый массив ?
2) Дефолтные параметры ?


 
Юрий Зотов   (2003-09-11 17:43) [2]

На самом деле нужен только один параметр - открытый вариантный массив.


 
Wild   (2003-09-11 18:03) [3]

2Skier: Неважно. Надо чтобы была такая процедура, чтобы я ее мог вызывать например так:
1. MyProc(1,"test_string")
2. MyProc(Now)
3. MyProc(1,2,54,3,36,12,6)


т.е. процедура не знает сколько параметров в нее передадут...

2Юрий Зотов: Вы пример напишите, а мы посмотрим


 
Skier   (2003-09-11 18:05) [4]

>Wild (11.09.03 18:03)
см. Юрий Зотов © (11.09.03 17:43)

1) procedure MyProc(Param1 : array of Variant);
begin
//...........
end;
2) Кроме того Variant сам по себе может быть массивом, например...


 
Юрий Федоров   (2003-09-11 18:06) [5]

с параметрами типа Variant через defalut-значения ничего не выйдет( Parameters of this type cannot have default values), только как сказал Юрий Зотов ©


 
Dimka Maslov   (2003-09-11 18:09) [6]

procedure MyProc(const Args: array of const)

Low(Args) - индекс первого элемента массива
High(Args) - индекс последнего аргумента массива

Если посмотреть справку, то там сказано, как распознать и тип агрументов


 
Юрий Зотов   (2003-09-11 18:33) [7]

> Wild (11.09.03 18:03) [3]
> Вы пример напишите, а мы посмотрим

Однако...
Ага, вот прям сейчас все брошу и начну для Вас, скромный Вы наш, примеры писать.

> Dimka Maslov © (11.09.03 18:09) [6]
Это и имелось в виду.


 
Verg   (2003-09-11 18:33) [8]


> Надо чтобы была такая процедура, чтобы я ее мог вызывать
> например так:
> 1. MyProc(1,"test_string")
> 2. MyProc(Now)
> 3. MyProc(1,2,54,3,36,12,6)


Так правильно:

> Dimka Maslov © (11.09.03 18:09) [6]


Но есть еще и вариант, когда ты определаяешь нужное количество
функций с одним и тем же именем, но разным количеством и типом аргументов. Заявляешь, что эти функции overload и все.
По ходу кода программы компилер сам подберет нужную, руководствуясь кол-вом и типами параметров, с которыми она вызывается.
Может этого будет достаточно?


 
Андрей Сенченко   (2003-09-11 20:27) [9]

ЧЕГО ???????


 
Verg   (2003-09-12 11:26) [10]


> Андрей Сенченко © (11.09.03 20:27) [9]
> ЧЕГО ???????


А?


 
Плохиш_   (2003-09-12 11:31) [11]

Verg © (11.09.03 18:33) [8]

:-)) Ну ты их и загрузил :-P


 
Digitman   (2003-09-12 11:37) [12]


> Wild


> может прошло время ограничения и можно писать функции/процедуры
> с неопределенным заранее количеством параметров


не прошло.

и вряд ли пройдет, пока в Паскале не будет реализован макрос-препроцессинг и нет для этого соотв.языкового интерфейса... а эта фича весьма сомнительна как минимум в необходимости... не говоря уже о потере в результате некоторых важных преимуществ компиляторов Паскаля


 
Verg   (2003-09-12 11:40) [13]


> Плохиш_ (12.09.03 11:31) [11]


Ты про over load?


 
Плохиш_   (2003-09-12 11:44) [14]

>Verg © (12.09.03 11:40) [13]

Тсссс
А то они книжек/справок не читают и опять вопросы задавать начнут.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
1-82325
SomeBody
2003-09-13 17:04
2003.09.25
TOffice97Button


1-82251
AHTOH
2003-09-14 22:19
2003.09.25
Стандартное меню для TEdit в виндах


3-82067
Yuri
2003-09-02 11:24
2003.09.25
Ограничение записей в ПАРАДОКС


3-82087
PrettyFly
2003-09-06 14:03
2003.09.25
TClientDataSet


14-82481
AndreySoft
2003-08-28 12:59
2003.09.25
Как включить комп программно





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