Страница 1 из 1

Вновь про перегрузку функций

Добавлено: 11 июн 2008, 18:20
galover
Покуривая манул наткнулся на то, что Round имеет следующие сигнатуры:
Round (x : anyType; precision : word) : double
Round(x : anyType) : double;

Как же так, почему vip не дает мне сделать свои перегруженные функции? Хотя полагаю, что в мануале ошибка - функция одна, просто 2-й параметр не обязательный. Могу я сделать хотябы так же, т.е. как объявить необязательный параметр? Спасибо!

Добавлено: 11 июн 2008, 18:46
Ged
interface DefaultParam;
procedure MyRound(sss:string='Раз');
{
Message(sss);
}

HandleEvent
cmInit:
{
MyRound;
MyRound('Два');
}
End;
end.

Добавлено: 11 июн 2008, 19:07
galover
Ged
Thnx!!! :cool: ларчик открывался просто

Добавлено: 11 июн 2008, 19:28
galover
Засада, если первый параметр умолчковый, то его нельзя пропустить. Т.е. вот так не канает

Код: Выделить всё

function Foo(str : string = ''; val : longint = 0);
{
}

Foo(, 14);
а жаль, было бы вообще ажурно :(

P.S. Порадовало, если объявить функцию без возвращаемого параметра, то компилятор выдает
Foo.vip(29) Предупреждение: Считаю эту функцию процедурой (исправь, да?) (стр.29, поз.46 в Foo.vip)

Добавлено: 11 июн 2008, 19:32
Ged
в любом языке в т.ч. и сях вроде нельзя пропускать параметры. Обычно дефолтные пихают в конец.

Добавлено: 11 июн 2008, 19:34
galover
Ged
в бэйсике мона :)

Добавлено: 11 июн 2008, 19:39
Ged
На счет Бэйсика не скажу.. Было давно лет 10 назад...
А так обратитесь в свою ОТП для расширения функционала :-o
PS: Бывает и "Ресурс протух"