Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Прога без окна   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.016 c
15-1195658140
oldman
2007-11-21 18:15
2007.12.23
Похоливарим на тему Интернета?


15-1195788241
Slider007
2007-11-23 06:24
2007.12.23
С днем рождения ! 23 ноября 2007 пятница


15-1195807851
toto
2007-11-23 11:50
2007.12.23
Письмо деду Морозу


2-1196577450
Новый
2007-12-02 09:37
2007.12.23
Как программно можно проверть, существуеть ли таблиц в Оракле


15-1195943981
lookin
2007-11-25 01:39
2007.12.23
Криминальный талант (фильм) - где бы скачать...