Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить из функции 2 выходных результата, возможно ли?! / 25 сообщений из 57, страница 1 из 3
15.02.2017, 08:28:11
    #39404571
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Допустим есть функция
function abc(x,y:integer):integer;
result1:=(какие то расчеты по x);
result2:=(какие то расчеты по y);

Как на кнопку получить result1 и result2?
Как двумя отдельными функциями сделать я знаю.
...
Рейтинг: 0 / 0
15.02.2017, 08:42:39
    #39404574
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Код: pascal
1.
2.
3.
4.
5.
procedure Some(var result1, result2: integer);
begin
  result1 := 1;
  result2 := 2;
end;
...
Рейтинг: 0 / 0
15.02.2017, 08:56:52
    #39404579
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
venza,
Код: pascal
1.
2.
3.
4.
5.
6.
function abc(out x,y:integer):integer;
begin
result:= some_result: 
x:=(какие то расчеты по x);
y:=(какие то расчеты по y);
end;


?
...
Рейтинг: 0 / 0
15.02.2017, 08:59:53
    #39404580
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
venza,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
type
 myRec = record
  res1:Integer;
  res2:Real;
  res3:String;
  res4:TDateTime;
 end;

...

function myFunc:myRec;
...
...
Рейтинг: 0 / 0
15.02.2017, 10:27:31
    #39404619
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function SetButton(AButton: TButton; ACaption: string; R: TRect; OnClick: TNotifyEvent): boolean;
begin
  Result := Assigned(AButton);
  if not Result then Exit;
  AButton.Caption := ACaption;
  AButton.SetBounds(R.Left,R.Top,R.Right,R.Bottom);
  AButton.OnClick := OnClick;  
end;
...
Рейтинг: 0 / 0
15.02.2017, 10:28:19
    #39404620
Maxim Rusov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
В новых Delphi еще нельзя написать:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function MyFind :Boolean, Index;
begin
  return False, -1;
end

//...

Found, Index := MyFind;


?

Недоработка, я считаю.
...
Рейтинг: 0 / 0
15.02.2017, 10:32:23
    #39404626
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Maxim RusovНедоработка, я считаю.
Где такое можно? И как такое использовать в условиях?
...
Рейтинг: 0 / 0
15.02.2017, 10:35:14
    #39404631
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Maxim RusovВ новых Delphi еще нельзя написать:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function MyFind :Boolean, Index;
begin
  return False, -1;
end

//...

Found, Index := MyFind;


?

Недоработка, я считаю.

Да, нужно больше говнокода !
...
Рейтинг: 0 / 0
15.02.2017, 10:38:34
    #39404634
Maxim Rusov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
wadmanГде такое можно? И как такое использовать в условиях?
Да почти во всех современных языках. Например, поменять 2 переменные:

X,Y := Y,X;
...
Рейтинг: 0 / 0
15.02.2017, 10:39:43
    #39404638
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Maxim RusovДа почти во всех современных языках.
В каких?
...
Рейтинг: 0 / 0
15.02.2017, 10:39:55
    #39404640
Maxim Rusov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
defecatorДа, нужно больше говнокода !
Ну так уже натащили всякой гадости, типа лямбд, чего уж...
...
Рейтинг: 0 / 0
15.02.2017, 10:41:14
    #39404642
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
wadmanMaxim RusovНедоработка, я считаю.
Где такое можно? И как такое использовать в условиях?

А это еще одна недоработка )
...
Рейтинг: 0 / 0
15.02.2017, 10:41:22
    #39404643
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Maxim RusovdefecatorДа, нужно больше говнокода !
Ну так уже натащили всякой гадости, типа лямбд, чего уж...
+100
и генериков
...
Рейтинг: 0 / 0
15.02.2017, 10:42:18
    #39404645
Maxim Rusov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
wadmanMaxim RusovДа почти во всех современных языках.
В каких?
Гугли "параллельное присваивание"
...
Рейтинг: 0 / 0
15.02.2017, 10:44:22
    #39404646
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Maxim Rusovwadmanпропущено...

В каких?
Гугли "параллельное присваивание"
Ок.
...
Рейтинг: 0 / 0
15.02.2017, 10:49:35
    #39404652
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Можно вернуть запись, а в ней - хоть 100500 полей.
...
Рейтинг: 0 / 0
15.02.2017, 10:52:48
    #39404657
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Обычно, это имеет такой вид:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Function Some(var S1, S2: String):Boolean;
begin
  S1 := 'Hello';
  S2 := ' World';
  Result:=True;
end;
...
var
 S1,S2:String;
begin
 If Some(S1, S2) then
  ShowMessage(S1+S2);
end;
...
Рейтинг: 0 / 0
15.02.2017, 11:06:00
    #39404672
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Maxim Rusov
Код: pascal
1.
function MyFind :Boolean, Index;




Массив верни. Если разных типов, то variant.

А лучше record.
...
Рейтинг: 0 / 0
15.02.2017, 15:42:45
    #39405039
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
wadmanГде такое можно? И как такое использовать в условиях?
Это из древнего Бейсика. Полная форма выглядела так:

Код: plaintext
LET A, B, C = 10

Оператор LET быстро стал необязательным, поэтому начали писать просто

Код: plaintext
A = 10
...
Рейтинг: 0 / 0
15.02.2017, 16:05:42
    #39405059
Maxim Rusov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Не, параллельное присваивание - это другое. В общем случае допустимы такие фишки:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function GetSize :Integer, Integer;
begin
  return Width, Height;
end;

procedure SetSize(aWidth, aHeight :Integer)
begin
end;

CX, XY := GetSize;
SetSize( CX, CY ) ;

SetSize( GetSize ) ;
...
Рейтинг: 0 / 0
15.02.2017, 16:32:33
    #39405094
jmp_original
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Maxim Rusov, ну, я погуглил "параллельное присваивание". Так всё-таки, в каких-нибудь языках, кроме Lua или Python (про которые мы говорить не будем, во избежание), это есть?
...
Рейтинг: 0 / 0
15.02.2017, 17:43:40
    #39405175
Maxim Rusov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
jmp_original...Так всё-таки, в каких-нибудь языках, кроме Lua или Python (про которые мы говорить не будем, во избежание), это есть?
Изучай: http://hyperpolyglot.org/
...
Рейтинг: 0 / 0
15.02.2017, 18:26:23
    #39405199
Adx
Adx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
В объектных языках параллельное присваивание - нонсенс. Нужно, как корове пятая нога.
Нужно вернуть набор данных? Верни объект. Вырожденные случаи возвращения integer x и y рассматривать смысла нет.
...
Рейтинг: 0 / 0
15.02.2017, 18:30:15
    #39405203
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
Параллельное присваивание есть в том же джаваскрипте и называется Destructuring Assignment :

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var a, b, rest;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

({a, b} = {a: 10, b: 20});
console.log(a); // 10
console.log(b); // 20
...
Рейтинг: 0 / 0
15.02.2017, 19:47:57
    #39405242
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить из функции 2 выходных результата, возможно ли?!
JaDiПараллельное присваивание есть в том же джаваскрипте и называется Destructuring Assignment :

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var a, b, rest;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

({a, b} = {a: 10, b: 20});
console.log(a); // 10
console.log(b); // 20



Матерь Б-жья, это за что их так?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить из функции 2 выходных результата, возможно ли?! / 25 сообщений из 57, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]