Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
14-29082
scorpi
2003-01-25 11:27
2003.02.10
Драйвера под windows


8-28950
dima1
2002-10-02 02:19
2003.02.10
Кодек для AVI


14-28993
Igor_thief
2003-01-26 15:29
2003.02.10
StringGrid


3-28585
skarm
2003-01-22 13:30
2003.02.10
sql


14-29092
Supreme
2003-01-25 16:10
2003.02.10
Нужно раздобыть аналог Панели задач





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский