![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функции в Delphi [D6, XP]
Id © (2006-08-02 16:24:00)Еще раз здраствуйте.
Вопрос по function.
Ee можно использовать для получения какого-то результата с входными параметрами. Выходной параметр один - Result.
А если мне надо несколько выходных параметров?
Подскажите синтаксис.(Если это возможно)
Ega23 (2006-08-02 17:06:00) [1]Как Result ты можешь и класс и рекорд получить. А в нём уже всё, что тебе надо.
type
TОфигеннаяСтруктура=record
ОфигенныйПараметр1 : Boolean;
ОфигенныйПараметр2 : Integer;
ОфигенныйПараметр3 : String;
............
end;
function Ля_ля:TОфигеннаяСтруктура;
Id (2006-08-02 16:52:00) [2]Огромное спа!
Desdechado (2006-08-02 16:40:00) [3]У тебя Result может быть и массивом типизированным или даже разнотипным, если он Variant.
Не запутайся только.
Возврат функцией нескольких значений, особенно разнотипных, говорит о плохом проектировании.
Сергей М. (2006-08-02 16:37:00) [4]
> А если мне надо несколько выходных параметров?
К функции как таковой это отношения не имеет.
Zeqfreed (2006-08-02 16:35:00) [5]
function SomeRoutine(out OutParam; var VarParam) : ReturnParam;
begin
OutParam := VarParam;
Result := Whatever;
end;
See Also:Delphi Help: Parameter semantics
Alkid (2006-08-02 16:30:00) [6]Это можно сделать несколькими методами.
Самый простой: определять параметры по ссылке:
function sumAndCheck(a,b : integer;var c : integer) : boolean;
begin
c := a + b;
Result := c < 10;
end;
Данная функция суммирует 2 числа и возвращает true, если сумма меньше 10.
При этомо на так же возвращает И результат - через параметр c.
Синтаксис для вызова:
var r : integer;
b : boolean;
begin
b := sumAndCheck(10,15,r);
end;
Теперь в b - результат сравнения, а в r - сумма