Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Вниз

Переопределить глубокозарытый метод.   Найти похожие ветки 

 
Alexey (AZ)   (2007-03-18 18:56) [0]

Доброго времени!
Возник вопрос, думаю как можно сделать. Исходник вот:
ServerSocket.Socket.Connections[i].Close;
Мне бы прокопать до Close и прилепить в него часть своего кода. Править исходники-оригиналы с этими классами не хочется. Не придется ли мне перенаследовать всю эту цепочку в обратном порядке? (Т.е. переписать Connections[i] с своим Close, на них построить MySocket из Socket, на них MyServerSocket из Serversocket  ... короче, я думаю что понятно). Меня, мягко говоря, такая идея не привлекает, а говоря по правде, это полная ж... =)

p.s. Влепить свой код в событие OnClose/OnDisconnect не предлагать.


 
Kolan ©   (2007-03-18 19:03) [1]

Прочитай про class helpers, если у тебя © BDS 2006&#133


 
Alexey (AZ)   (2007-03-18 19:12) [2]

А если не BDS 2006 ?


 
Kolan ©   (2007-03-18 19:20) [3]

> А если не BDS 2006 ?


Если
> Править исходники-оригиналы с этими классами не хочется.

то подругому никак, имхо.


> Т.е. переписать Connections[i] с своим Close,

а может overload?


 
Kolan ©   (2007-03-18 19:22) [4]

> ServerSocket.Socket.Connections[i].Close;

Вобщето ни очем не говорит, нужна диаграмма классов&#133

Может возможно создать наследника класса Connections[i] и там переопределить Close&#133


 
Alexey (AZ)   (2007-03-18 19:40) [5]

Что такое overload? =)
Короче, ServerSocket - это класс ТServerSocket, в нем есть Socket - TXXXServerWinSocket, в котором есть массив Connections - TXXXCustomSocket. Просто сейчас точные названия классов привести не могу.
Здесь ServerSocket - объект, Socket - свойство, Connections[i] - свойство и наконец Close - метод. Я не знаю как иначе объяснить, вроде вопрос должен быть поянтен.


 
Kolan ©   (2007-03-18 19:51) [6]

> Что такое overload? =)

Это директива, подробно в справке, а сокращенно:
overload — перегрузка операций.
Пример:
 procedure Close; overload;
 procedure Close(SomeParam: Integer); overload;


Вызывать можно любую&#133


> Короче, ServerSocket — это класс ТServerSocket,

Я с этим незнаком, но уверен многие другие знакомы&#133


> Connections[i] — свойство

Ну и что? Какой тип у этого свойства?
Например если:
TSomeObject = class
 procedure Close; virtual;
end;

и
Connections[i]: TSomeObjectList;

То можно сделать наследника TSomeObject и перекрыть Close:
TAnotherSomeObject = class(TSomeObject)
 procedure Close; override;
end;


 
Kolan ©   (2007-03-18 19:58) [7]

> Здесь ServerSocket — объект, Socket — свойство, Connections[i]
> — свойство и наконец Close — метод

Еще раз повторяю последовательность вызовов почти ничего не раскрывает, нужна диаграмма классов, или её словесное описание&#133


 
Alexey (AZ)   (2007-03-18 20:05) [8]

Метод статический, оверрид неприменим. Вам видится решение в создании своего класса таким образом, что обеъкт ServerSocket должен стать TMyserverSocket. Я правильно понимаю? Это не просто класс, а компонент, поэтому я интересуюсь как бы перехрячить всего-навсего один метод, без перенаследований.


 
Kolan ©   (2007-03-18 20:13) [9]

> Я правильно понимаю?

Нет мне видится не так. Создать надо подкласс класса экземплярами которого являются элементы Connections(те Connections[i]).


> Это не просто класс, а компонент, поэтому я интересуюсь
> как бы перехрячить всего-навсего один метод, без перенаследований.

Идеальный вариант — «хелперы»&#133 Мож всетаки нароете BDS, TurboDelphi

PS
 Что они есть в Turbo версии неуверен&#133

PSS
 Есть еще вариан, если все это стандартные компоненты, возможно вы просто не умеете ими пользоваться. Возможно вообще менять ниче ненадо&#133


 
Kolan ©   (2007-03-18 20:14) [10]

> Метод статический, оверрид неприменим.

Ну закройте его раз так нужно&#133


 
Kolan ©   (2007-03-18 20:14) [11]

> Это не просто класс, а компонент,

Ну а в чем разница? Сделайте свой компонент, какие проблеммы&#133


 
Alexey (AZ)   (2007-03-18 20:29) [12]

Ладно, буду использовать OnClose. Вроде ничем не хуже должно быть.


 
Плохиш ©   (2007-03-19 01:45) [13]


> Alexey (AZ)   (18.03.07 20:29) [12]
> Ладно, буду использовать OnClose.

Тем более он для описанного в [0] и предназначен...


 
Сергей М. ©   (2007-03-19 08:25) [14]


> Alexey (AZ)


Если уж так приспичило, то перекрывать следует не Close, а Disconnect().
Это виртуальный метод, и Close не делает ничего иного, кроме вызова этого метода.
Но при наличии события On[Client]Disconnect вся эта затея действительно лишена смысла.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.052 c
15-1176751428
vasIZmax
2007-04-16 23:23
2007.05.13
Дети рисуют Путина)))


1-1173866674
Drone
2007-03-14 13:04
2007.05.13
Щелкаю по гриду и хочу узнать к какой таблице он привязан.


15-1176566435
Kerk
2007-04-14 20:00
2007.05.13
Письма счастья


15-1176277952
Kerk
2007-04-11 11:52
2007.05.13
Помогите написать перловый регэксп плиз


8-1145581117
dmitrlast
2006-04-21 04:58
2007.05.13
Почему мерцает Image?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский