Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];
ВнизВопрос !!! Найти похожие ветки
← →
Vladi78 (2008-05-21 16:51) [0]Подскажите можно ли передавать функции неопределенное количество парметров, не создавая массивов или еще каких ни будь списков ?
Например, одной функции иногда передавать 2 параметра, иногда три ...
Или обязательно нужно сажать все параметры в массив, затем передавать массив в целом ???
← →
Putnik © (2008-05-21 16:53) [1]Директива overload не подходит?
← →
Anatoly Podgoretsky © (2008-05-21 16:54) [2]> Vladi78 (21.05.2008 16:51:00) [0]
Можно, смотри тему OpenArrays
← →
Vladi78 (2008-05-21 17:13) [3]Не соображу как использовать в данном случаи OpenArrays, подскажите ... Под рукой ни одного учебника а интернет лимитный :((
← →
Kolan © (2008-05-21 17:16) [4]> Можно, смотри тему OpenArrays
Я конечно поняимаю, что он сначала Open, а потом все остальное, но таки массив.
← →
han_malign © (2008-05-21 17:25) [5]function f(params: array of integer): integer;
begin
Result:= Low(Params);
while(Result <= High(Params))do begin
if(Params[Result] = 17)then exit;
inc(Result);
end;
end;
...............
var ar: array[byte]of integer;
dar: array of integer;
............
res:= f(ar);
res:= f(dar);
res:= f([1, -1, 17, 3245872934]);
-------------------------------------------------
function f2(params: array of const): integer;
begin
Result:= Low(Params);
while(Result <= High(Params))do begin
if((Params[Result].VType = vtInteger) and (Params[Result].VInteger = 17))then exit;
inc(Result);
end;
end;
...................
f2([@ar, "boo", true, 17, TForm]);
← →
Умище (2008-05-21 17:27) [6]Можно и без массива, если число параметров ограничено известным числом и типами данных.
function FuncTest(aStr: String=""; aInt: Integer=-1; aBool; Boolean=False): Boolean;
← →
MsGuns © (2008-05-21 17:28) [7]TList
← →
Renegat (2008-05-21 17:35) [8]Юзай стэк! PUSH + CALL и вся недолга! Главное, положить ДО параметров какое-нибудь терминирующее значение, типа 0BADC0DEh итп, по которому функция будет определять, что больше вынимать из стека ничего не надо.
ЗЫ: блин, плачут по мне лавры Кулибина %)
← →
Умище (2008-05-21 17:36) [9]
> не создавая массивов или еще каких ни будь списков ?
← →
MsGuns © (2008-05-21 17:41) [10]А-а-а-а.. Не в теме ;(
← →
Renegat (2008-05-21 17:45) [11]А вообще телепатор нашёптывает, что нужны всего-навсего параметры "по умолчанию". Проставь в заголовке функции третьему параметру некое значение, показывающее, что параметр передан не был:
func DoSmth(param1:DWORD; param2:string; param3:Byte=255);
← →
palva © (2008-05-21 18:22) [12]Имеется директива varargs, которая правда довольно ограничена по сфере применения. Цитирую справку:
When importing a C function that takes a variable number of parameters, use the varargs directive. For example,
function printf(Format: PChar): Integer; cdecl; varargs;
The varargs directive works only with external routines and only with the cdecl calling convention.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c