Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как вернуть значени переменной из одной процедуры


Автор: Mepcuk 11.10.2006, 17:17
помогите пожалуйста! Горю ярким пламенем ! Как вернуть значение переменной из одной процедуры в другую ? Прописать как public ?  А если у меня переменная типа INTEGER ? А если переменная типа ARRAY ? Или нужно классами прописывать ? 

Я совсем зеленый ! помогиииите !!!

Автор: DemoCode 11.10.2006, 17:22
Ты об этом?
Код

procedure proc1 (var J: Integer);
begin
   J:=1;
end;

procedure proc2;
var
  I: Integer;
begin
  proc(I);
  // I = 1
end;

Автор: Mepcuk 11.10.2006, 17:51
Неее не совсем так !!

допустим
Код

procedure maincode;
var x1:integer;
begin
x1:=StrToInt(Edit1.text);
Calculation (x1);

        !!!!!! Что надо написать чтобы вернуть значение переменной Superdata из процедуры Calculation


end;

procedure calculation(in_data:integer) ;
var superdata:integer;
begin
   Superdata:=10*100/1000;
end;


Добавлено @ 17:53 
Неее не совсем так !!

допустим
Код

procedure maincode;
var x1:integer;
begin
x1:=StrToInt(Edit1.text);
Calculation (x1);

        !!!!!! Что надо написать чтобы вернуть значение переменной Superdata из процедуры Calculation


end;

procedure calculation(in_data:integer) ;
var superdata:integer;
begin
   Superdata:=in_data*100/1000;
end;

Автор: Yanis 11.10.2006, 17:53
Зачем ей возвращать значение она всёравно умрёт в процедуре... Или тебе нужно выпустить знаечение superdata в мир, т.е. за пределы calculation?

Автор: DemoCode 11.10.2006, 17:55
Тогда так:
Код

procedure maincode;
var x1:integer;
begin
x1:=StrToInt(Edit1.text);
Result:=Calculation (x1);
end;

function calculation(in_data:integer): Integer;
var superdata:integer;
begin
   calculation:=10*100/1000;
end;

Если критично, чтоб были именно процедуры, то:

Код

procedure maincode;
var x1:integer;
superdata: integer;
begin
x1:=StrToInt(Edit1.text);
Calculation (x1, Superdata);
end;

procedure calculation(in_data:integer; var Superdata: Integer) ;
begin
   Superdata:=10*100/1000;
end;

Автор: Mepcuk 11.10.2006, 17:55
мне нужно выпустить в Мир

Добавлено @ 17:57 
Да очень критично потому что процедура состоит из огромных расчетов в примере просто указал ! Как сделать чтобы я видел ету переменную из любой процедуры ?

Автор: Yanis 11.10.2006, 17:57
Цитата(Mepcuk @  11.10.2006,  18:55 Найти цитируемый пост)
мне нужно выпустить в Мир

Сделай calculation функцией.

Автор: DemoCode 11.10.2006, 17:58
Цитата(volvo877 @  11.10.2006,  18:57 Найти цитируемый пост)
DemoCode, а того, что компилироваться не будет в виде процедуры, не боишься?

Почему?

Автор: volvo877 11.10.2006, 17:59
Потому, что ты уже исправил... Тебе сказать, что раньше было?

Автор: DemoCode 11.10.2006, 17:59
Цитата(Mepcuk @  11.10.2006,  18:55 Найти цитируемый пост)
Как сделать чтобы я видел ету переменную из любой процедуры ? 

Так объяви "глобальную переменную" и работай с ней.

Добавлено @ 18:00 
Цитата(volvo877 @  11.10.2006,  18:59 Найти цитируемый пост)
Потому, что ты уже исправил... Тебе сказать, что раньше было? 

А... ты первый вариант видел, где варку забыл удалить, а я думал ты его не успел заметить, т.к. ты свой пост исправления послал  smile 

Автор: Mepcuk 11.10.2006, 18:04
обясните где обьявлять ! только громко не смейтесь я зеленый smile

Код

  private
    { Private declarations }
  public
    testsms:string;  <<<----- Обьявлять здесь
   end;

Автор: DemoCode 11.10.2006, 18:09
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  testsms: string; // Здесь

implementation

{$R *.dfm}

end.


Добавлено @ 18:11 
Если нужна доступность в других юнитах, можешь её объявить в каком-нибудь юните и подключать его ко всем остальным в uses.

Автор: Mepcuk 11.10.2006, 18:11
Огромное спасибо ! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)