Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функции в 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 - сумма


Наверх

Титульная страница Поиск, карта сайта Написать письмо