Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.25;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-82320
Grouzd[E]v
2003-09-13 09:19
2003.09.25
Будете смеятся: работать с архивами я теперь умею (ho-ho-ho)!


14-82445
jack128
2003-09-08 00:15
2003.09.25
Именинники 8 сентября


1-82266
A-DiL
2003-09-14 17:53
2003.09.25
Метод итераций : помогите найти вспомогательную функцию


7-82531
$hade
2003-07-15 11:14
2003.09.25
CD-R/RW


3-82149
Anton_2003
2003-09-04 01:32
2003.09.25
Сортировка в обратном порядке