Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.038 c
2-1195909606
Servelat
2007-11-24 16:06
2007.12.23
Приведение типов


2-1196113083
DeeCee
2007-11-27 00:38
2007.12.23
Задачка на массивы


2-1196319865
Dennis I. Komarov
2007-11-29 10:04
2007.12.23
GetApplicationDataPath


3-1187258076
Lavrenty
2007-08-16 13:54
2007.12.23
Некорректное отключение от базы


2-1196076386
новый новичок
2007-11-26 14:26
2007.12.23
Как защититься от совместного досупа к файлу в данном случае?





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