Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Дилетанский вопрос по функциям   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
8-40523
Дмитрий К.
2003-06-11 13:19
2003.10.13
Показ видео под ХР


7-40704
qwerty2
2003-07-27 11:55
2003.10.13
Установить программно сетевой принтер


3-40258
Амир
2003-09-23 07:50
2003.10.13
Чайник простит помочь!


1-40469
GarryFV
2003-10-01 19:20
2003.10.13
Обращение к TAction в DLL


9-40228
APanyovin
2003-04-10 11:02
2003.10.13
Оптимальное хранилище для динамических массивов