Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Руководство по Borland Pascal.doc
Скачиваний:
78
Добавлен:
02.05.2014
Размер:
2.05 Mб
Скачать

Ссылки на описания модуля

Как только вы включили модуль в свою программу, все констан-

ты, типы данных, переменные, процедуры и функции, описанные в

секции интерфейса этого модуля, становятся доступными для вашей

программы. Например, допустим, имеется следующий модуль:

unit MyStuff;

interface

const

MyValue = 915;

type

MyStars = (Deneb,Antares,Betelgeuse);

var

MyWord : string[20];

procedure SetMyWord(Star : MyStars);

function TheAnswer : integer;

implementation

.

.

.

end.

Как можно видеть здесь в интерфейсной части модуля, та часть

модуля, которая находится в интерфейсной секции, является видимой

для вашей программы (и может ею использоваться). С учетом этого

можно написать следующую программу:

program TestStuff;

uses MyStuff;

var

I : integer;

AStar : MyStars;

begin

Writeln(myValue);

AStar := Deneb;

SetMyWord(AStar);

Writeln(MyWord);

I := TheAnswer;

Writeln(I)

end.

После включения в программу оператора uses MyStuff вы можете

ссылаться на все идентификаторы, описанные в интерфейсной секции

модуля МyStuff (МyWord, МyValue и так далее). Однако, рассмотрим

следующую ситуацию:

program TestStuff;

uses MyStuff;

const

MyValue = 22;

var

I : integer;

AStar : MyStars;

function TheAnswer : integer;

begin

TheAnswer := 1

end;

begin

Writeln(myValue);

AStar := Deneb;

SetMyWord(AStar);

Writeln(MyWord);

I := TheAnswer;

Writeln(I)

end.

В этой программе переопределяются некоторые из идентификато-

ров, описанных в МyStuff. Будучи скомпилированной и выполненной,

эта программа будет использовать собственные определения для

МyValue и ТheAnswer, поскольку они были описаны позднее, чем оп-

ределения в МyStuff.

Вероятно, вам интересно знать, каким образом в такой ситуа-

ции можно ссылаться на идентификаторы в МyStuff. Для этого необ-

ходимо перед каждым идентификатором помещать имя МyStuff с точкой

(.). Например, рассмотрим еще одну версию этой программы:

program TestStuff;

uses MyStuff;

const

MyValue = 22;

var

I : integer;

AStar : MyStars;

function TheAnswer : integer;

begin

TheAnswer := 1

end;

begin

Writeln(MyStuff.MyValue);

AStar := Deneb;

SetMyWord(AStar);

Writeln(MyWord);

I := MyStuff.TheAnswer

Writeln(I)

end.

Эта третья программа даст такие же ответы, что и первая, да-

же в том случае, если вы переопределите MyValue и TheAnswer. В

действительности вы имели полное право написать первую программу

следующим образом:

program TestStuff;

uses MyStuff;

var

I : integer;

AStar : MyStuff.MyStars;

begin

Writeln(MyStuff.MyValue);

AStar := My.Stuff.Deneb;

MyStuff.SetMyWord(AStar);

Writeln(My.Stuff.MyWord);

I := MyStuff.TheAnswer;

Writeln(I)

end.

Отметим, что имя модуля может предшествовать любому иденти-

фикатору: константе, типу данных, переменной или подпрограмме.

Соседние файлы в папке Delphi