![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите пожалуйста... [D5, Win2k]
Василий Свиридов © (2002-01-31 05:28:00)... компонент для работы с сокетами (TCP/UDP), только чтобы он не тянул за собой пол-VCL. А то нужно маленький сервер написать и не хочется чтобы его минимальный размер начинался с 300-400 кб.
SerB (2002-02-05 08:06:00) [1]Попробуйте KOL
Digitman (2002-02-04 16:35:00) [2]>vuk
Верно. Упустил сей момент)
vuk (2002-02-04 15:49:00) [3]to Digitman:
>Forms нужен в этом модуле ТОЛЬКО ЛИШЬ ДЛЯ ОБРАБОТКИ ИСКЛЮЧЕНИЙ
>на уровне объекта Application !!!!! И ни для чего более !
Не только для этого. Дело в том, что компоненты из ScktComp работают по асинхронной модели WinSocket. Вся нотификация о происходящем в сокете получается через оконные сообщения.
Для облегчения обработки сообщений в TCustomWinSocket используется механизм создания скрытого окна и связывания его с экземпляром объекта при помощи функции AllocateHWnd из модуля Forms. Подробности - TCustomWinSocket.GetHandle
drpass (2002-02-04 12:08:00) [4]Ребята, вот эта прога, я сейчас ее пишу в D6, так вот она занимает 144К со всеми этими модулями... и прекрасно работает. Так что вполне реально уложиться в небольшой файл
uses
Windows,
Messages,
SysUtils,
ScktComp,
Classes,
PSAPI,
TlHelp32;
Digitman (2002-02-04 09:13:00) [5]Приношу извинения. На самом деле, "пустая" консоль в Д5 "весит" 41кб (uses SysUtils) и 16кб (без оного).
ScktComp действительно "тянет" за собой Forms. Чушь конечно, но - факт : Forms нужен в этом модуле ТОЛЬКО ЛИШЬ ДЛЯ ОБРАБОТКИ ИСКЛЮЧЕНИЙ на уровне объекта Application !!!!! И ни для чего более !
Иван Шихалев (2002-02-02 19:20:00) [6]to Digitman
> "пустая" консоль в Д5 "весит" 48кб. Проверь сам.
> Это - system + sysinit
А насколько я помню ~16K
vuk (2002-02-01 20:08:00) [7]to DigitMan:
ScktComp тянет за собой Forms, а он, в свою очередь, тянет дополнительно еще очень много чего (около 20 модулей). Вот как раз и получаются почти те самые "пол-VCL" и именно из-за него получается такой размер.
То есть
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, scktcomp;
begin
end.
весит около 300 КБ если включен модуль ScktComp и только 41 КБ (видимо у Вас получилось 48 в связи с другими ключами компиляции)если используется только SysUtils.
Что же касается того, что можно использовать для работы с сокетами, то я могу порекомендовать (да и сам использую) Indy.
Digitman (2002-02-01 15:38:00) [8]>Velocity
"пустая" консоль в Д5 "весит" 48кб. Проверь сам. Это - system + sysinit
Василий Свиридов (2002-01-31 23:55:00) [9]Спасибо всем.
Velocity (2002-01-31 11:32:00) [10]>Digitman
Намного меньше чем в 100. Натурально, с наворотами и обработкой ошибок (ну не всех конечно, самых дрянных) - около 30 килов. Разумеется в юзесах только Windows и Winsock.
NailS (2002-01-31 11:09:00) [11]Есть неплохие компоненты ICS
http://overbyte.alexid.fr/frame_index.html
Что-бы не использовался Forms компилишь с директивой NO_FORMS
(хотя могу ошибаться, это подробно описано в заголовке модуля WSocket.pas)
Digitman (2002-01-31 10:21:00) [12]Использование класса TComponent (ты ж о компонентах-таки речь ведешь ?) "потянет" на ~150кб (модуль Classes). Без Classes эта "халява" никак не обойдется.
TServerSocket и иже с ним "потянут" еще на на ~50кб (модуль ScktComp). Итого "халява от Борланда" под названием TServerSocket "утяжеляет" объектный код до ~300кб ("по-крупному" туда еще войдут System, SysInit, SysUtils, SyncObjs)
"Нарисовать" все это в усеченном варианте на API обойдется тебе, думаю, где-то в ~100 кб даже при использовании консоли. Разница, конечно, есть, но - стоит ли "овчинка выделки" ?