![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Видимость функций [D7, Win95/98]
REA © (2003-01-30 17:18:00)Хочу сделать функцию видимую только для своих классов (чтобы пользователь ее не вызывал когда ему в голову придет), но классы в разных модулях (логически разделил). Как бы это реализовать?
REA (2003-01-30 17:56:00) [1]Они и так по 1500 получатся...
gsu (2003-01-30 17:49:00) [2]>> REA ©
Поставь код на фунцию, типа если код правильный, то она работает (-:|~
han_malign (2003-01-30 17:44:00) [3]это я вкурсе, но сливать несколько модулей по 1500 - 3000 строк в один...
Бурундук (2003-01-30 17:41:00) [4]han_malign © (30.01.03 17:29)
>//Именно такое объявление - ничего не пропущено
Ну, во первых, сойдёт и так
TProtectedClass1 = class(TClass1);
А во вторых, этот довольно известный трюк позволяет получить доступ к защищённым функциям кому угодно, в том числе и
и тем самым пользователям.
REA (2003-01-30 17:40:00) [5]Хм. Спасибо, но так и самому нетрудно запутаться. Лучше уж все в один модуль скину или хотя бы базовый класс.
han_malign (2003-01-30 17:31:00) [6]а вот с приватом - пожалуй туго...
han_malign (2003-01-30 17:29:00) [7]
unit Unit1;
interface
type TClass1 = class
protected
procedure Method1;
end;
.....................
unit Unit2;
interface
uses Unit1;
type
TProtectedClass1 = class(TClass1)
protected
end;//Именно такое объявление - ничего не пропущено
TClass2 = class
private
pRef: TClass1;
protected
procedure Method2;
public
constructor Create(aRef : TClass1);
property Ref: TClass1 read pRef;
end;
implementation
constructor TClass2.Create(aRef : TClass1);
begin
pRef:=aRef;
end;
procedure TClass2.Method2;
begin
TProtectedClass1(pRef).Method1;
end;
end.
.....................
- конечно довольно кривой метод создания дружественных классов, но за неимением лучшего...
REA (2003-01-30 17:28:00) [8]Ну да, точно. Я компонент пишу. Пользователи - остальные программисты. Интерфейс то у них будет и даже ссылочки на объекты, но вот в Private секцию функцию не перенести - не вызвать самому.
Digitman (2003-01-30 17:23:00) [9]и кого ты вообще подразумеваешь под словом "пользователь" ?
Digitman (2003-01-30 17:20:00) [10]а как это "пользователь" может умудриться вывзвать ф-цию, если ты не предоставляешь ему для этого никакого интерфейса ?)