Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
ВнизВидимость функций Найти похожие ветки
← →
REA (2003-01-30 17:18) [0]Хочу сделать функцию видимую только для своих классов (чтобы пользователь ее не вызывал когда ему в голову придет), но классы в разных модулях (логически разделил). Как бы это реализовать?
← →
Digitman (2003-01-30 17:20) [1]а как это "пользователь" может умудриться вывзвать ф-цию, если ты не предоставляешь ему для этого никакого интерфейса ?)
← →
Digitman (2003-01-30 17:23) [2]и кого ты вообще подразумеваешь под словом "пользователь" ?
← →
REA (2003-01-30 17:28) [3]Ну да, точно. Я компонент пишу. Пользователи - остальные программисты. Интерфейс то у них будет и даже ссылочки на объекты, но вот в Private секцию функцию не перенести - не вызвать самому.
← →
han_malign (2003-01-30 17:29) [4]
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.
.....................
- конечно довольно кривой метод создания дружественных классов, но за неимением лучшего...
← →
han_malign (2003-01-30 17:31) [5]а вот с приватом - пожалуй туго...
← →
REA (2003-01-30 17:40) [6]Хм. Спасибо, но так и самому нетрудно запутаться. Лучше уж все в один модуль скину или хотя бы базовый класс.
← →
Бурундук (2003-01-30 17:41) [7]han_malign © (30.01.03 17:29)
>//Именно такое объявление - ничего не пропущено
Ну, во первых, сойдёт и так
TProtectedClass1 = class(TClass1);
А во вторых, этот довольно известный трюк позволяет получить доступ к защищённым функциям кому угодно, в том числе и
и тем самым пользователям.
← →
han_malign (2003-01-30 17:44) [8]это я вкурсе, но сливать несколько модулей по 1500 - 3000 строк в один...
← →
gsu (2003-01-30 17:49) [9]>> REA ©
Поставь код на фунцию, типа если код правильный, то она работает (-:|~
← →
REA (2003-01-30 17:56) [10]Они и так по 1500 получатся...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c