Форум: "Начинающим";
Текущий архив: 2016.04.24;
Скачать: [xml.tar.bz2];
ВнизFunction 2 значения Найти похожие ветки
← →
Stepan4ik (2014-09-21 00:41) [0]Как вернуть 2 значения с функции ?
1-ое Result, а 2-е ?
И можно пример, пжл )
← →
junglecat (2014-09-21 00:43) [1]> а 2-е ?
Result2
Шутка.
Заведи record с 2 полями и возвращай
← →
Stepan4ik (2014-09-21 00:44) [2]Я не понимаю что вы написали. Можете пример кинуть ?)
← →
Inovet © (2014-09-21 00:47) [3]Также смотри модификатор Var. Ещё указатели есть. Смотря что удобнее из 3-х.
← →
Ega23 © (2014-09-21 00:53) [4]1. procedure Bar(var Prarm1: Type1; var Param2: Type2; .....);
2.
type
TFoo = record
Field1: Type1;
Field2: Type2;
........
end;
function Bar: TFoo;
3.
function Bar: Pointer;
← →
Stepan4ik (2014-09-21 01:26) [5]Function GetSum(a, b : Integer) : Integer;
var
sum,raz:integer;
begin
sum:=a+b;
raz:=a-b;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetSum (3,3);
end;
Вот крч что мне надо. Я хз как получить и sum и raz.
← →
Ega23 © (2014-09-21 01:40) [6]
> Вот крч что мне надо. Я хз как получить и sum и raz.
Вариант 2.
← →
Stepan4ik (2014-09-21 01:51) [7]
function TForm1.GetSum(a, b : Integer) : Integer;
begin
Result.sum:=a+b;
Result.raz:=a-b;
end;
Ошибка лезет :[DCC Error] Unit1.pas(36): E2018 Record, object or class type required
[DCC Error] Unit1.pas(37): E2018 Record, object or class type required
← →
Stepan4ik (2014-09-21 02:02) [8]Всё. Догнал.
А как функцию теперь вызватьи получить значения ?
При обычном вызове он бьёт ошибку. Мол тип MyResult...
type
MyResult = record
sum:integer;
raz:integer;
end;
function GetSum(a, b : Integer) : MyResult;
begin
Result.sum:=a+b;
Result.raz:=a-b;
end;
← →
Stepan4ik (2014-09-21 02:03) [9]Всё. Догнал.
А как функцию теперь вызватьи получить значения ?
При обычном вызове он бьёт ошибку. Мол тип MyResult...
type
MyResult = record
sum:integer;
raz:integer;
end;
function GetSum(a, b : Integer) : MyResult;
begin
Result.sum:=a+b;
Result.raz:=a-b;
end;
← →
Stepan4ik (2014-09-21 02:47) [10]?
← →
Rouse__ (2014-09-21 03:01) [11]Делай переменную типа записи MyResult и ей присваивай результат вызова функции.
(Пфф... типа ей мы типо присвоим типо результат - сорри, чейто понесло :))
← →
Германн © (2014-09-21 03:24) [12]
> сорри, чейто понесло :))
>
Ну да. Конечно. Суперпупер проекты вы клепаете без проблем. А основы паскаля/Дельфи почти забыли.
← →
Плохиш © (2014-09-21 11:39) [13]
> Stepan4ik (21.09.14 02:03) [9]
> Всё. Догнал.
> А как функцию теперь вызватьи получить значения ?
> При обычном вызове он бьёт ошибку. Мол тип MyResult...
>
В ошибке, которую бьют, разве не написано, что надо поменять прокладку?
← →
Pavia © (2014-09-21 18:31) [14]function SumSub(a,b:Integer; var Sum:Integer; var Sub:Integer):Boolean;
begin
Result:=True;
Sub:=a-b;
Sum:=a+b;
Result:=((not (a xor b) and (a xor Sum)) shr 31) <>0;
end;
← →
имя (2014-09-22 07:30) [15]Удалено модератором
← →
antonn © (2014-09-23 16:50) [16]
> Stepan4ik (21.09.14 02:03) [9]
>
> Всё. Догнал.
> А как функцию теперь вызватьи получить значения ?
> При обычном вызове он бьёт ошибку. Мол тип MyResult...
ну тогда есть уже Tpoint на 2 значения и TRecord на 4 значения =)
← →
brother © (2014-09-23 18:01) [17]> При обычном вызове он бьёт ошибку. Мол тип MyResult...
чего именно в ошибке Вы не поняли?
← →
Керк (2014-09-25 16:41) [18]Формально MyResult - это не два значения, а одно :)
← →
имя (2014-09-25 16:52) [19]Удалено модератором
← →
Дмитрий (2014-09-26 16:12) [20]еще можно возвращать массив
← →
DQ (2014-09-30 14:54) [21]> Как вернуть 2 значения с функции ?
Никак. Возврат функции есть значение в регистре EAX.
Можно вернуть указатель. Можно менять значения переменных внутри функции переданные туды по указателям. Но вернуть можно только одно значение.
← →
brother © (2014-09-30 14:56) [22]> Но вернуть можно только одно значение.
возвращаем word интерпетируем как 2 byte :)
← →
junglecat © (2014-09-30 15:09) [23]> Возврат функции есть значение в регистре EAX
это если влезает. double возвращается через ST0 в стеке fpu, что не влезло - через скрытые var-параметры
← →
DQ (2014-09-30 15:32) [24]> возвращаем word
Ну и?) Возвращаем одно Word :)
А уже что с ним дальше это отдельная история.
> double возвращается через ST0 в стеке fpu
мда? Разве не по указателю? Думал в ST0 возвращаются только при работе с функциями FPU. Ну может быть, спасибо за просвещение. С:
Кстати не вбивайте double в Яндекс.... о___0
← →
brother © (2014-09-30 16:21) [25]я про инерпретацию...
← →
junglecat © (2014-09-30 16:38) [26]> не вбивайте double в Яндекс
а что там такого страшного?
← →
Inovet © (2014-09-30 20:12) [27]> [21] DQ (30.09.14 14:54)
> Возврат функции есть значение в регистре EAX
Какая разница где оно там возвращается, это не влияет на язык.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2016.04.24;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.002 c