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

Вниз

Видимость функций   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-28767
olookin
2003-01-31 17:35
2003.02.10
из Delphi в Excel


1-28705
anbezr
2003-01-29 12:07
2003.02.10
Скрытие свойства компонента


14-29028
Anatoly Podgoretsky
2003-01-23 07:51
2003.02.10
Именинники 23 января


1-28881
Anatoly P
2003-01-30 16:26
2003.02.10
Перекомпиляция исходников


1-28817
Шишкин Илья
2003-01-31 20:44
2003.02.10
Как изменить цвет значков в Windows98