Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Видимость функций [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]

а как это "пользователь" может умудриться вывзвать ф-цию, если ты не предоставляешь ему для этого никакого интерфейса ?)


Наверх

Титульная страница Поиск, карта сайта Написать письмо