Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
ВнизDaclare in other units Найти похожие ветки
← →
ronyn (2006-08-04 01:17) [0]Как сделать, что бы переменная из модуля Project1 была видна в модуле Unit1?
← →
SerJaNT © (2006-08-04 02:25) [1]public ?
← →
Джо © (2006-08-04 02:26) [2]uses
← →
Юрий Зотов © (2006-08-04 02:29) [3]В смысле - переменная объявлена в DPR, а должна быть видна в одном из юнитов?
Перенесите ее объявление в этот или другой юнит и укажите его в uses тех модулей, где она должна быть видна (включая и DPR).
← →
ronyn (2006-08-05 00:34) [4]Я дублирую объявление переменной: в dpr объявляю и в файле юнита тоже. Может элементарную вещь в коде пропускаю? Если не сложно - небольшой пример.
← →
Kolan © (2006-08-05 00:39) [5]
> Я дублирую объявление переменной:
И получаешь разные переменные.
> Если не сложно - небольшой пример.
Вот модуль:
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.
← →
Пусик © (2006-08-05 00:49) [6];)
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.
← →
ronyn (2006-08-05 00:58) [7]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.
Помоему почти идентично. Не работает. Может упустил что.
← →
Kolan © (2006-08-05 01:00) [8]
> Помоему почти идентично. Не работает. Может упустил что.
>
>
Смайл видел?
> Пусик © (05.08.06 00:49) [6]
>
> ;)
Переменную объяви в МОДУЛЕ и подключай его везде где надо...
← →
Шпиён (2006-08-05 01:07) [9]
> Помоему почти идентично.
Идентично чему?
← →
Пусик © (2006-08-05 01:17) [10]
> Kolan © (05.08.06 01:00) [8]
>Переменную
> объяви в МОДУЛЕ и подключай его везде где надо...
А зачем? Мне, например, не надо в отдельном модуле.
← →
Kolan © (2006-08-05 01:19) [11]Ну если вы пользуетесь
Пусик © (05.08.06 00:49) [6]
, то ... делайте так как вам надо...
← →
ronyn (2006-08-05 23:02) [12]Где именно в модуле? Я пробывал разные варианты. Таки получаются просто разные переменные.
← →
Loginov Dmitry © (2006-08-05 23:11) [13]Читай [3]
← →
palva © (2006-08-05 23:39) [14]Переменная объявленная в dpr не будет видна в других модулях, поскольку модуль dpr не является unit"ом. Чтобы переменная была видна в других модулях, она должна быть описана в юните в секции interface, а в других модулях (в которых она требуется) этот юнит должен быть присоединен при помощи предложения uses. Переменная должна быть описана только один раз, иначе возникнет конфликт имен и компиляция не пройдет.
← →
ronyn (2006-08-06 22:40) [15]Ну, да! Эффективный способ объявления глобальных переменных. Отдельный Unit для объявления. Работает.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c