Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизПрога без окна Найти похожие ветки
← →
Ivolg © (2007-11-25 13:36) [0]Привет. Мне необходимо сделать прогу без окна (просто скрыть окно не пойдет), чтобы она висела в процессе и работала. Как это можно сделать ?
← →
Anatoly Podgoretsky © (2007-11-25 13:38) [1]> Ivolg (25.11.2007 13:36:00) [0]
У тебя не получится.
← →
Ivolg © (2007-11-25 13:40) [2]Anatoly Podgoretsky © (25.11.07 13:38) [1]
Почему же ?
← →
Zeqfreed © (2007-11-25 13:41) [3]Проще всего создать консольное приложение и удалить строчку {$APPTYPE CONSOLE}.
← →
@!!ex © (2007-11-25 13:43) [4]> [3] Zeqfreed © (25.11.07 13:41)
+1
Ж)
← →
Ivolg © (2007-11-25 13:44) [5]Zeqfreed © (25.11.07 13:41) [3]
Пробовал, но программа как только выполнит все действия закрывается, а нужно чтобы она висела в процессе и могла дальше работать. Если написать Sleep (9999);, то программа ждет, но со слипом вариант выглядит плохо.
← →
Anatoly Podgoretsky © (2007-11-25 13:45) [6]> Ivolg (25.11.2007 13:40:02) [2]
Потому что прошло много лет, а ты еще и азы не освоил.
← →
Zeqfreed © (2007-11-25 13:46) [7]> Ivolg © (25.11.07 13:44) [5]
Если программа завершается, значит она выполнила все операции, которые в ней предусмотрел программист, или была завершена аварийно. Зачем ей висеть в памяти, если она закончила всю работу?
← →
Ivolg © (2007-11-25 13:47) [8]Anatoly Podgoretsky © (25.11.07 13:45) [6] На чистом паскале я вообще ничего не писал.
← →
Efir (2007-11-25 13:50) [9]Ну так использовать Timer что мешает?
← →
Ivolg © (2007-11-25 13:50) [10]Zeqfreed © (25.11.07 13:46) [7]
Это верно, но если нужно сделать сервер, чтобы он ждал, когда клиент к нему приконнектится и с ним взаимодействовать, а потом по определенному сообщению от клиента вырубится ?
← →
Zeqfreed © (2007-11-25 13:53) [11]> Ivolg © (25.11.07 13:50) [10]
Значит нужно организовать цикл любым доступным способом и в цикле проверять, нет ли запроса от клиента.
Или можно использовать блокирующие операции, но их применение весьма ограниченно.
← →
Ivolg © (2007-11-25 13:58) [12]Zeqfreed © (25.11.07 13:53) [11]
Спасибо.
← →
Anatoly Podgoretsky © (2007-11-25 14:00) [13]
> можно использовать блокирующие операции, но их применение
> весьма ограниченно.
Правлиьно загони его на потоки, что бы жизнь легкой не показалась, когда он даже циклы писать не умеет.
← →
Zeqfreed © (2007-11-25 14:03) [14]> Anatoly Podgoretsky © (25.11.07 14:00) [13]
Ну, если нужен один клиент, то потоки не обязательны.
← →
Anatoly Podgoretsky © (2007-11-25 14:04) [15]> Zeqfreed (25.11.2007 14:03:14) [14]
Потоки не обязательны и при 30000 клиентов.
← →
Zeqfreed © (2007-11-25 14:08) [16]> Anatoly Podgoretsky © (25.11.07 14:04) [15]
А 30001 клиента уже без потоков никак :)
← →
Anatoly Podgoretsky © (2007-11-25 14:10) [17]> Zeqfreed (25.11.2007 14:08:16) [16]
Можно, до ограничений Виндоус, а это где то порядка 30000. Заодно и идеология Дельфи - Driven Event Model, а не Линукс подход.
← →
Zeqfreed © (2007-11-25 14:12) [18]> Anatoly Podgoretsky © (25.11.07 14:10) [17]
Думаю, если обрабатывать 30 тысяч клиентов блокирующими операциями без потоков, то они не шибко довольны останутся.
← →
Anatoly Podgoretsky © (2007-11-25 14:15) [19]> Zeqfreed (25.11.2007 14:12:18) [18]
30 тысяч клиентов блокирующими операциями просто не возможно, посчитай сколько памяти нужно на один поток и все поймешь.
← →
Zeqfreed © (2007-11-25 14:17) [20]> Anatoly Podgoretsky © (25.11.07 14:15) [19]
Возможно, что и не хватит. Просто я речь-то вел о блокирующих операциях для одного клиента, а вы сразу на 30 тысяч набросились :)
← →
Ivolg © (2007-11-25 14:21) [21]Anatoly Podgoretsky © (25.11.07 14:00) [13]
А что я умею или не умею это уже не вам судить. Разве сложно помочь, натолкнуть на правельное решение, вместо того, чтобы тут выпендриватся.
← →
Anatoly Podgoretsky © (2007-11-25 14:42) [22]> Ivolg (25.11.2007 14:21:21) [21]
А чего тут судить, тут наблюдать достаточно.
А "помогать" смысла нет, за эти годы нет изменений, все в холостую.
← →
Сергей М. © (2007-11-25 15:09) [23]
> Ivolg
> Как это можно сделать ?
Сделать это очень просто.
А вот разжевывать тебе азы гораздо сложнее.
> если нужно сделать сервер, чтобы он ждал, когда клиент к
> нему приконнектится и с ним взаимодействовать, а потом по
> определенному сообщению от клиента вырубится ?
Нужно - сделай.
Инструментарий прямо под рукой - TTCPServer, TIdTCPServer.
Оба могут работать в блок.режиме, оба не создают и не требуют никаких окон.
Делай цикл - и вперед, с песней !
← →
@!!ex © (2007-11-25 16:38) [24]> Инструментарий прямо под рукой - TTCPServer, TIdTCPServer.
А как это, сокеты и без окон?
А сообщения куда принимать??
← →
Сергей М. © (2007-11-26 08:32) [25]
> @!!ex © (25.11.07 16:38) [24]
> как это, сокеты и без окон?
А вот так)
Пусть это будет для тебя величайшим открытием)
> сообщения куда принимать?
Какие сообщения-то ?
← →
Сергей М. © (2007-11-26 08:35) [26]
> @!!ex © (25.11.07 16:38) [24]
Представляешь, сокеты - они и в *nix сокеты.
А в *nix нет никаких окон.
← →
Dennis I. Komarov © (2007-11-26 09:28) [27]> [24] @!!ex © (25.11.07 16:38)
> > Инструментарий прямо под рукой - TTCPServer, TIdTCPServer.
>
> А как это, сокеты и без окон?
> А сообщения куда принимать??
Ну ты дал! Перетрудился что ли? Все игры виноваты :)
← →
@!!ex © (2007-11-26 10:52) [28]Чего то я вообще не понимаю...
А как при асинхронном вызове узнать, что данные пришли, без сообщений??
← →
palva © (2007-11-26 10:58) [29]Сокет слушает порт и висит. Когда что-то приходит, он запускает подпрограмму. Сам глубоко в это не вникал, но наверно, так.
← →
Сергей М. © (2007-11-26 11:40) [30]
> как при асинхронном вызове узнать, что данные пришли, без
> сообщений?
Вызовы не бывают "асинхронные", они бывают блокирующими и неблокирующими.
Синхронным и асинхронным бывает ввод/вывод.
Как узнать ? Оч просто - использую ф-цию [WSA[Event]]Select.
← →
Dennis I. Komarov © (2007-11-26 12:53) [31]Я чего-то не врубился: Каким образом связано онко (которое TForm) и сокет? Не, ну разве что "бросить компонент на форму" :)
← →
@!!ex © (2007-11-26 13:24) [32]> [31] Dennis I. Komarov © (26.11.07 12:53)
Никто не говорил про окно(TForm).
Лично в моем понимании окно - это то, что создается с помощью CreateWindow... компоненты туда класть нельзя(без извращений я имею ввиду).
Просто всю жизнбь работал с
WSAAsyncSelect
который как раз окошко требует, куда сообщения приходють.
← →
Сергей М. © (2007-11-26 15:06) [33]
> всю жизнбь работал с
> WSAAsyncSelect
Жизнь прожита зря)
← →
Dennis I. Komarov © (2007-11-26 15:14) [34]> Никто не говорил про окно(TForm).
Телепатор подсказывает, что автор вопроса говорил.
> [32] @!!ex © (26.11.07 13:24)
> > [31] Dennis I. Komarov © (26.11.07 12:53)
> Просто всю жизнбь работал с
> WSAAsyncSelect
> который как раз окошко требует, куда сообщения приходють.
Ну так VCL это же не круто :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.049 c