Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
ВнизДилетанский вопрос по функциям Найти похожие ветки
← →
Tornado (2003-10-02 11:41) [0]Заклинило...Подскажите как сделать чтобы функция вернула 2 значения например, вроде такого:
function XXX (a,s : integer): integer;
begin
//типа что-то такого:
Result1 := a + s;
Result2 := a * s;
end;
Как можно использовать Result1 и Result2 далее в программе? :)
← →
Skier (2003-10-02 11:44) [1]-function XXX (a,s : integer): TSomeRecord;
-function XXX (a,s : integer; var SecondParam : Integer): integer;
← →
ZEE (2003-10-02 11:45) [2]
procedure (a,s:integer; var res1:integer; var res2:integer);
begin
...
res1:=a+s;
res2:=a*s;
end;
← →
Murad (2003-10-02 11:47) [3]А можно так
-function XXX(a,s : integer): TSomeRecord;
-function XXX(a,s : integer; out SecondParam : Integer): integer;
← →
Skier (2003-10-02 11:50) [4]>Murad © (02.10.03 11:47) [3]
out наиболее эффективен если SecondParam - интерфейс
← →
Digitman (2003-10-02 11:51) [5]type
TMyResult = packed record
Result1: Integer;
Result2: Integer;
end;
...
function XXX (a,s : integer): TMyResult;
begin
Result.Result1 := a + s;
Result.Result2 := a * s;
end;
...
var
MyResult: TMyResult;
...
MyResult := XXX(1, 2);
ShowMessage(IntToStr(MyResult.Result1));
ShowMessage(IntToStr(MyResult.Result2));
← →
han_malign (2003-10-02 11:52) [6]>Murad © (02.10.03 11:47) [3]
>А можно так
- а можно и так
function XXX(a,s : integer; SecondParam : PInteger = nil): integer;
var Res2: integer;
begin
................................
if(SecondParam<>nil)then SecondParam^:=Res2;
end;
← →
Tornado (2003-10-02 12:13) [7]Огромное все спасибо!
← →
KSergey (2003-10-02 12:14) [8]> [6] han_malign © (02.10.03 11:52)
Не, передавать указатели - это не по дельфийски как-то. Для этого var есть.
Хотя, конечно, смотря что за задача
← →
han_malign (2003-10-02 12:18) [9]>Не, передавать указатели - это не по дельфийски как-то.
- зато, если второй параметр не нужен, его можно не указывать...
← →
Dimka Maslov (2003-10-02 12:21) [10]>KSergey © (02.10.03 12:14) [8]
Не важно по дельфийски это или не по дельфийски это всё праздные домыслы людей, который от нечем заняться пишут всякие вещи, призывающие к красоте кода и следованию традициям, которые сами же и выдумывают.
В примере han_malign © (02.10.03 11:52) [6] указатель передаётся как опциональный параметр, т.е. его можно опустить. В этом случае функция получит nil и не будет ничего лишнего куда-либо записывать, а вот с подельфийским var сделать такого невозможно.
← →
Digitman (2003-10-02 12:21) [11]
> KSergey
> передавать указатели - это не по дельфийски как-то
чтой-то вдруг ?)
это все же, наверно, зависит от того как объявлен фактически передаваемый параметр, и насколько удобно/безопасно (с многих т.з.) подставлять его при том или ином варианте его объявления
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c