![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Область видимости???
Student © (2009-04-27 16:51:00)Здравствуйте. Мне нужно чтобы массив был видим в модуле unit1.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, unit3;
type
TForm1 = class(TForm)
Button1: TButton;
public
procedure asdf;
end;
var
Form1: TForm1;
implementation
procedure TForm1.asdf;
begin
end;
{$R *.dfm}
end.
unit Unit2;
interface
type
TSave = record
x : integer;
y : string;
z : real48;
end;
implementation
end.
unit Unit3;
interface
uses unit2;
type
TTest = class (TObject)
public
procedure Complete (Flag : boolean; Prohod : integer);
end;
TMatrix = array of TSave;
implementation
var
Matrix : TMatrix;
procedure TTest.Complete(Flag : boolean; Prohod : integer);
begin
Matrix[1].x :=1;
end;
end.
Ega23 (2009-04-27 17:13:00) [1]Н-да, в голове - полная каша.
Почитайте книжку (хелп) про области видимости.
Student (2009-04-27 17:09:00) [2]Хммм...:-) Точно....
Т.е. как оно получается, в другом примере
unit Unit3;
interface
uses unit2;
type
TTest = class (TObject)
public
procedure Complete (Flag : boolean; Prohod : integer);
end;
implementation
var
Matrix : TMatrix;
Test : TTest;
procedure TTest.Complete(Flag : boolean; Prohod : integer);
begin
end;
Тут объявляется Test : TTest; Хочу чтобы Test был виден в модуле unit1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, unit2, unit3;
type
TForm1 = class(TForm)
Button1: TButton;
public
procedure asdf;
end;
var
Form1: TForm1;
Matrix : TMatrix;
// Test : TTest;
implementation
procedure TForm1.asdf;
begin
SetLength(Matrix,2);
Matrix[1].x :=1;
Matrix[0].y :='sd';
Test. // -->уже ошибка невижу
//если расскоментировать комментарий в var, в этом модуле unit1 - всё ок, Test : TTest; - но это же будет уже другой экземпляр класса?
end;
{$R *.dfm}
end.
Ega23 (2009-04-27 16:55:00) [3]
> TMatrix = array of TSave;
перенесите это в unit2
Student (2009-04-27 16:54:00) [4]Краткое пояснение. В модуле unit2 находится структура будущего массива.
В модуле unit3 находится объявление массива.
В модуле unit1 нужно реализовать операции над массивом. Как это можно сделать? Самое главное, что тип данных TSave видим, а TMatrix - нет. Что я там напутал?