Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1211229020
Vinum
2008-05-20 00:30
2008.06.15
Нереальные цвета после масштабирования битмапа


2-1211292641
LightRipple
2008-05-20 18:10
2008.06.15
Работа ф-ии RtlPrefixUnicodeString


2-1211457859
toredo
2008-05-22 16:04
2008.06.15
квадратная матрица


9-1170425767
akaValerius
2007-02-02 17:16
2008.06.15
Хранение текстур


2-1211547311
МаксИкс
2008-05-23 16:55
2008.06.15
Как получить имя текущей формы ?





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