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

Как на кнопку получить result1 и result2?
Как двумя отдельными функциями сделать я знаю.
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39404574
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
procedure Some(var result1, result2: integer);
begin
  result1 := 1;
  result2 := 2;
end;
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39404579
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Получить из функции 2 выходных результата, возможно ли?!
    #39404580
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Получить из функции 2 выходных результата, возможно ли?!
    #39404619
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Получить из функции 2 выходных результата, возможно ли?!
    #39404620
Фотография 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
Получить из функции 2 выходных результата, возможно ли?!
    #39404626
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim RusovНедоработка, я считаю.
Где такое можно? И как такое использовать в условиях?
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39404631
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
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
Получить из функции 2 выходных результата, возможно ли?!
    #39404634
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanГде такое можно? И как такое использовать в условиях?
Да почти во всех современных языках. Например, поменять 2 переменные:

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

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

В каких?
Гугли "параллельное присваивание"
Ок.
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39404652
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно вернуть запись, а в ней - хоть 100500 полей.
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39404657
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно, это имеет такой вид:
Код: 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
Получить из функции 2 выходных результата, возможно ли?!
    #39404672
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov
Код: pascal
1.
function MyFind :Boolean, Index;




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

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

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

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

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

Код: 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
Получить из функции 2 выходных результата, возможно ли?!
    #39405094
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Rusov, ну, я погуглил "параллельное присваивание". Так всё-таки, в каких-нибудь языках, кроме Lua или Python (про которые мы говорить не будем, во избежание), это есть?
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39405175
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_original...Так всё-таки, в каких-нибудь языках, кроме Lua или Python (про которые мы говорить не будем, во избежание), это есть?
Изучай: http://hyperpolyglot.org/
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39405199
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
В объектных языках параллельное присваивание - нонсенс. Нужно, как корове пятая нога.
Нужно вернуть набор данных? Верни объект. Вырожденные случаи возвращения integer x и y рассматривать смысла нет.
...
Рейтинг: 0 / 0
Получить из функции 2 выходных результата, возможно ли?!
    #39405203
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параллельное присваивание есть в том же джаваскрипте и называется 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
Получить из функции 2 выходных результата, возможно ли?!
    #39405242
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
25 сообщений из 57, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить из функции 2 выходных результата, возможно ли?!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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