Форум: "Основная";
Текущий архив: 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