Вверх ↑
Ответов: 2125
Рейтинг: 159
#1: 2006-10-06 16:32:42 ЛС | профиль | цитата
На мой взгляд стоит сделать точки ##Open и ##Close для старта и остановки сервера
Сначала я так и хотел сделать, но потом понадобился индекс точки #Add, чтобы при создании нового соединения (схемы) иметь возможность вызвать это событие. Сейчас он сохраняется при старте сервера посредством вызова #Add. В принципе, можно отказаться от точки #Add и вызывать событие onConnect компонента TCP_Client, так даже логичнее будет.
##Select и ##Delete в принципе не проверял, но должны работать.

Если ты смотрел код TCP_ServerEx, то наверное заметил некоторое трюкачество при получении ссылки на TCP_Client, а также неудобство с CreateInstance и HDelete. Проблемы следующие:
1. Невозможно легально получить указатель на главный элемент порождённой схемы.
2. Невозможно произвести дополнительные действия в момент CreateInstance (надо бы её сделать overload и объявить protected)
3. Невозможно удалить схему, не вызывая при этом точку HDelete или Delete (чтобы сделать автоудаление экземпляра схемы, надо бы в THIMultiElementEx сделать DeleteInstance, тоже protected).

1 и 2 можно было бы решить, возложив необходимую инициализацию на TCP_Client, точнее на другой класс, порождённый от TCP_Client (например TCP_Connection), принудительно преобразовав Parent-a к THITCP_ServerEx. Только вот опять-же - где его взять.

TCP_Client без точки doOpen
... и без свойств IP и Port. Да, была мысль сделать TCP_Connection (наследник TCP_Client), но я побоялся добавлять его в скрытую группу, неизвестно как отреагирует инсталлятор. Но в принципе, так логичнее.
карма: 1

0