Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2020, 06:05   #1
Rendw
Новичок
Джуниор
 
Регистрация: 09.03.2019
Сообщений: 3
По умолчанию Как из функции передать несколько значений?

На форме кнопка 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.
В label2 не получается вывести d2.

Последний раз редактировалось Rendw; 08.02.2020 в 06:07.
Rendw вне форума Ответить с цитированием
Старый 08.02.2020, 09:03   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Функция: возвращение нескольких значений
Как сделать, чтобы функция возвращала 2 и более значений?

Последний раз редактировалось Shouldercannon; 08.02.2020 в 09:33.
Shouldercannon вне форума Ответить с цитированием
Старый 08.02.2020, 12:47   #3
Rendw
Новичок
Джуниор
 
Регистрация: 09.03.2019
Сообщений: 3
По умолчанию

Эти страницы видел.
Rendw вне форума Ответить с цитированием
Старый 08.02.2020, 14:42   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от Rendw Посмотреть сообщение
Эти страницы видел.
И не понравились ?
digitalis вне форума Ответить с цитированием
Старый 10.02.2020, 09:59   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Вариант1;

Код:
function d(a, b: integer): string;
var d1,d2: integer;
begin
   d1:=a+b*a; 
   d2:=a*2+b*a; 
   Result:='d1 = '+IntToStr(d1)+', d2 = '+inttostr(d2);
end;

procedure TForm2.Button1Click(Sender: TObject);
var a,b:integer;
    s,s1:string;
begin
  a:=5;
  b:=5;
  s:=d(a,b);
  s1:=Copy(s,1,Pos(',',s)-1);
  Delete(s,1,Length(s1)+1);
  Label1.Caption:=s1;
  Label2.Caption:=s;
end;

Вариант2;
Код:

type
  DynArr = array of Integer;



function d(a, b,count: integer): DynArr;
var d_:DynArr;
    i:Integer;
begin
  SetLength(d_,count);   //инициализируем количесвто элементов массива count , нумерация начинается с 0

  for i:=0 to count-1 do
  if i=0 then       //если первый элемент с 0 адресацией, то формула 1 иначе формула 2
  d_[i]:=a+b*a else
  if i=1 then d_[i]:=a*2+b*a else
  d[i]:=a+b;
  Result:=d_;

end;



procedure TForm1.Button1Click(Sender: TObject);
var a,b,count:integer;
    d_:DynArr;

begin
a:=5;
b:=5;
count:=2;
d_:=d(a,b,count);
Label1.Caption:=IntToStr(d_[0]);
label2.Caption:=IntToStr(d_[1]);
d_:=nil;
end;
from dark to light)

Последний раз редактировалось Алексей_2012; 10.02.2020 в 10:23.
Алексей_2012 вне форума Ответить с цитированием
Старый 09.03.2020, 13:55   #6
Heneken
Новичок
Джуниор
 
Регистрация: 18.09.2011
Сообщений: 2
По умолчанию

Вариант 3;

Код:
type
    TResultArray = record
    private
       FOlolo1: Integer;
       FOlolo2: String;
       FOlolo3: TObject;
       FOlolo4: TForm;
       ......
       FOlolo9999999: TEdit;
   public
      property Ololo1: Integer read FOlolo1 write FOlolo1;
      property  Ololo2: String read FOlolo2 write FOlolo2;
      property  Ololo3: TObject read FOlolo3 write FOlolo3;
      property   Ololo4: TForm read FOlol4 write SetOlolo4;
       ......
      property  Ololo9999999: TEdit read FOlolo9999999 write FOlolo9999999 ;
   end;

  { TResultArray }

   procedure TResultArray.SetOlolo4(const Value: TForm );
   begin
       FOlolo4 := Value;
       FOlolo4 .Caption := 'Ололошная форма 4';
   end
  implementation
   
и где нибудь с  другого места рисуем вот такой чудесный метод.... хоть 2 значения с результата, хоть миллион....

   function TДругоеМесто.ResultMyOlolo(AParam: Integer): TResultArray 
   begin
      Result.FOlolo1 := AParam;
      Result.FOlolo2 := 'АДЫН';
      Result.Ololo3 := TMyClassSuperClass.Create;
      Result.Ololo4 := TForm.Create(Screen);
      ....
      Result.Ololo9999999 := TEdit.Create(Result.Ololo4);
      Result.Ololo9999999.Parent :=  Result.Ololo4;
   end
P.S: Я немножко перестарался, но это из ООП...вы можете функцией(методом!) возвращать хоть целый набор классов,объектов..А не только простые переменные(ПОЛЯ!)

Последний раз редактировалось Heneken; 09.03.2020 в 14:00.
Heneken вне форума Ответить с цитированием
Старый 15.03.2020, 07:50   #7
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Сообщение от Rendw Посмотреть сообщение
В label2 не получается вывести d2.
Цитата:
Сообщение от Rendw Посмотреть сообщение
//Label2.Caption:=IntToStr(i2);//выводим d2
Убрать косые черты в начале строки
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать переменную из одной функции в другую функции rustamcom2 PHP 7 14.03.2017 14:48
Передать звук на несколько хостов Programmer0 Работа с сетью в Delphi 20 08.07.2015 16:01
В задаче необходимо вывести на экран таблицу значений функции У(х) и ее разложения в ряд С (х) для значений х от до с шагом.(Паск fashionweek Паскаль, Turbo Pascal, PascalABC.NET 1 07.02.2013 23:11
Как передать несколько значений checkbox? snikers987 PHP 12 13.12.2010 18:29
передать несколько файлов indy SeЯgey Работа с сетью в Delphi 5 31.05.2008 21:03