Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Как из функции передать несколько значений?  [new]
Fier
Member

Откуда:
Сообщений: 9
На форме кнопка Button и Label1 Label2:
+

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function d (a, b:integer):integer;

  public
    { Public declarations }
  end;

var
  Form2: TForm2;


implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var i,i2,a,b:integer; 
begin
a:=5;
b:=5;
i:=d(a,b); //ссумируем
Label1.Caption:=IntToStr(i);//выводим    d1

i2:=d(a,b);
Label2.Caption:=IntToStr(i2);//выводим    d2
end;

function TForm2.d(a, b: integer): integer;
var d1,d2: integer;
begin
d1:=a+b*a; //Присваиваем функции сумму переменных 1
Result:=d1;

//d2:=a*2+b*a; //Присваиваем функции сумму переменных 2
//Result:=d2;

end;

end.


Сообщение было отредактировано: 9 фев 20, 05:25
9 фев 20, 05:24    [22076210]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
x1ca4064
Member

Откуда:
Сообщений: 1055
Fier,

перейти на питон :)

А если не переходить: либо var параметры, либо возвращать record
9 фев 20, 06:40    [22076211]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
Sinemurius
Member

Откуда:
Сообщений: 123
И никогда !!! Ни при каких обстоятельствах, не используйте глобальные переменные !!!
9 фев 20, 07:16    [22076212]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
DimaBr
Member

Откуда:
Сообщений: 11496
1.
TMyRecord = record
  Res1: integer;
  Res2: double;
end;
function d(a,b: integer): TMyRecord;


2.
function d(a,b: integer; var Res1,Res2: integer): boolean;
9 фев 20, 15:54    [22076306]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
Fier
Member

Откуда:
Сообщений: 9
DimaBr, ошибку показывает:
+
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
   // function d (a, b:integer):integer;

  public
    { Public declarations }
  end;

var
  Form2: TForm2;

type
  TMyRecord = record
  Res1: integer;
  Res2: double;
end;
 function d(a,b: integer): TMyRecord;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var i,i2,a,b:integer; 
begin
a:=5;
b:=5;
i:=d(a,b); //ссумируем
Label1.Caption:=IntToStr(i);//выводим    d1

i2:=d(a,b);
Label2.Caption:=IntToStr(i2);//выводим    d2

end;



function d(a,b: integer; var Res1,Res2: integer): boolean;
var d1,d2: integer;
begin
d1:=a+b*a; //Присваиваем функции сумму переменных 1
Res1:=d1;

d2:=a*2+b*a; //Присваиваем функции сумму переменных 2
Res2:=d2;

end;

end.


Сообщение было отредактировано: 9 фев 20, 18:15
9 фев 20, 18:10    [22076334]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2250
Прочитать хотя бы одну книжку или конспекты лекций (взять у кого они есть)
9 фев 20, 18:14    [22076335]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
Fier
Member

Откуда:
Сообщений: 9
Белых негров не бывает.
9 фев 20, 18:17    [22076336]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
DimaBr
Member

Откуда:
Сообщений: 11496
Я вам показал 2 варианта. Первый через запись, второй через параметры. Вы, в своём коде их объединили

var
  Form2: TForm2;

type
  TMyRecord = record
  Res1: integer;
  Res2: double;
end;
 function d(a,b: integer): TMyRecord; // тут объявлено одно

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var i,i2,a,b:integer; 
begin
a:=5;
b:=5;
i:=d(a,b); // тут обращаемся к методу, которого нет ни в первой ни во втором случае
// в первом случае возвращается Запись, и тогда переменная i и i2 должны иметь тип TMyRecord
// во втором случае в функцию нужно передавать 4 параметра
Label1.Caption:=IntToStr(i);//выводим    d1

i2:=d(a,b);
Label2.Caption:=IntToStr(i2);//выводим    d2

end;



function d(a,b: integer; var Res1,Res2: integer): boolean; // а тут другое
var d1,d2: integer;
begin
d1:=a+b*a; //Присваиваем функции сумму переменных 1
Res1:=d1;

d2:=a*2+b*a; //Присваиваем функции сумму переменных 2
Res2:=d2;

end;
9 фев 20, 19:10    [22076343]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
DimaBr
Member

Откуда:
Сообщений: 11496


К сообщению приложен файл. Размер - 22Kb
9 фев 20, 19:34    [22076345]     Ответить | Цитировать Сообщить модератору
 Re: Как из функции передать несколько значений?  [new]
Fier
Member

Откуда:
Сообщений: 9
DimaBr, спасибо,разобрался.
10 фев 20, 05:28    [22076480]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить