![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Daclare in other units [D7, D2005, XP, 2003]
ronyn © (2006-08-04 01:17:00)Как сделать, что бы переменная из модуля Project1 была видна в модуле Unit1?
ronyn (2006-08-06 22:40:00) [1]Ну, да! Эффективный способ объявления глобальных переменных. Отдельный Unit для объявления. Работает.
palva (2006-08-05 23:39:00) [2]Переменная объявленная в dpr не будет видна в других модулях, поскольку модуль dpr не является unit'ом. Чтобы переменная была видна в других модулях, она должна быть описана в юните в секции interface, а в других модулях (в которых она требуется) этот юнит должен быть присоединен при помощи предложения uses. Переменная должна быть описана только один раз, иначе возникнет конфликт имен и компиляция не пройдет.
Loginov Dmitry (2006-08-05 23:11:00) [3]Читай [3]
ronyn (2006-08-05 23:02:00) [4]Где именно в модуле? Я пробывал разные варианты. Таки получаются просто разные переменные.
Kolan (2006-08-05 01:19:00) [5]Ну если вы пользуетесь
Пусик © (05.08.06 00:49) [6], то ... делайте так как вам надо...
Пусик (2006-08-05 01:17:00) [6]
> Kolan © (05.08.06 01:00) [8]
>Переменную
> объяви в МОДУЛЕ и подключай его везде где надо...
А зачем? Мне, например, не надо в отдельном модуле.
Шпиён (2006-08-05 01:07:00) [7]
> Помоему почти идентично.
Идентично чему?
Kolan (2006-08-05 01:00:00) [8]
> Помоему почти идентично. Не работает. Может упустил что.
>
>
Смайл видел?
> Пусик © (05.08.06 00:49) [6]
>
> ;)
Переменную объяви в МОДУЛЕ и подключай его везде где надо...
ronyn (2006-08-05 00:58:00) [9]program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var public,
i:integer;
exports i;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
i:=5;
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
caption:=inttostr(i);
end;
end.
Помоему почти идентично. Не работает. Может упустил что.
Пусик (2006-08-05 00:49:00) [10];)
program VarExport;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var
TestVar: Integer;
exports
TestVar;
begin
TestVar := 1;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
TestVar: PInteger;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
H: THandle;
begin
H := LoadLibrary('VarExport.exe');
TestVar := GetProcAddress(H,'TestVar');
ShowMessage(IntToStr(TestVar^));
FreeLibrary(H);
end;
end.
Kolan (2006-08-05 00:39:00) [11]
> Я дублирую объявление переменной:
И получаешь разные переменные.
> Если не сложно - небольшой пример.
Вот модуль:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm3 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
begin
end;
end.
Переменная Form3 в нем объявлена.
А вот DPR:
program Project1;
uses
Forms,
Unit3 in 'Unit3.pas' {Form3};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm3, Form3);
Application.Run;
end.
ВИдиш модуль подключен в uses...
Теперь можно в dpr пользоваться переменной Form3:
begin
Application.Initialize;
Application.CreateForm(TForm3, Form3);
Application.Run;
Form3.Hide;
end.
ronyn (2006-08-05 00:34:00) [12]Я дублирую объявление переменной: в dpr объявляю и в файле юнита тоже. Может элементарную вещь в коде пропускаю? Если не сложно - небольшой пример.
Юрий Зотов (2006-08-04 02:29:00) [13]В смысле - переменная объявлена в DPR, а должна быть видна в одном из юнитов?
Перенесите ее объявление в этот или другой юнит и укажите его в uses тех модулей, где она должна быть видна (включая и DPR).
Джо (2006-08-04 02:26:00) [14]uses
SerJaNT (2006-08-04 02:25:00) [15]public ?