Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.14;
Скачать: CL | DM;

Вниз

Область видимости???   Найти похожие ветки 

 
Student ©   (2009-04-27 16:51) [0]

Здравствуйте. Мне нужно чтобы массив был видим в модуле 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.


 
Student ©   (2009-04-27 16:54) [1]

Краткое пояснение. В модуле unit2 находится структура будущего массива.
В модуле unit3 находится объявление массива.
В модуле unit1 нужно реализовать операции над массивом. Как это можно сделать? Самое главное, что тип данных TSave видим, а TMatrix - нет. Что я там напутал?


 
Ega23 ©   (2009-04-27 16:55) [2]


> TMatrix = array of TSave;


перенесите это в unit2


 
Student ©   (2009-04-27 17:09) [3]

Хммм...:-) Точно....
Т.е. как оно получается, в другом примере
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 17:13) [4]

Н-да, в голове - полная каша.
Почитайте книжку (хелп) про области видимости.



Страницы: 1 вся ветка

Текущий архив: 2009.06.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1240757274
buzb
2009-04-26 18:47
2009.06.14
Как проверить, существует ли файл на диске.


15-1239169620
vrem
2009-04-08 09:47
2009.06.14
Вопрос к программистам-безлимитчикам)


15-1239290520
DynaBlaster
2009-04-09 19:22
2009.06.14
Проектирование БД


2-1240693236
Tany
2009-04-26 01:00
2009.06.14
Хранимые процедуры в FireBird


2-1240749151
Dmitrii
2009-04-26 16:32
2009.06.14
что возврошает функция Integer(str) ?