Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
3-1222314069
AE
2008-09-25 07:41
2009.06.14
поврежден файл.db -как восстановить


1-1211356137
Vlad Oshin
2008-05-21 11:48
2009.06.14
Как бы сделать лог действий в виде перечисления компонент


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


2-1240735292
worldmen
2009-04-26 12:41
2009.06.14
Данные в TDBComboBox


2-1240746474
madmech
2009-04-26 15:47
2009.06.14
Неправильная раскраска отчета (и не только)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский