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

Вниз

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

 
alt7   (2003-05-21 16:18) [0]

Вообщем вот вопрос.

Если консольное аппликатион.

кусок из него;

while true do
begin
<...>
Stri := var_TIdTCPClient.ReadLn;
<...>
Stri2 := DateTimeToStr(Now);
WriteLn(Stri2);
<...>
end;

Модель очень упрощенная. Названия вроде должны говорить о типах данных.
Штука в том, что пока ответ на var_TIdTCPClient не придет кусок с выводом на экран не выполняется, а хотелось чтобы постоянно выполнялся. В примере в каталоге Demos как-то не разобрался, может кто наваять че-нить работающее по МОЕМУ примеру?


 
LMD   (2003-05-21 16:25) [1]

А если чтение данных загнать в таймер?


 
alt7   (2003-05-21 16:27) [2]

Дык Readln сидит и ждет возвращения данных с сокета то есть пока не получит ничего не происходит. И таймеры использовать нельзя. (по другим причинам)


 
Digitman ©   (2003-05-21 16:52) [3]


> alt7


я не в курсе насчет Indy, но сомневаюсь, что в TIdTCPClient нельзя задействовать режим асинхронных нотификаций


 
alt7   (2003-05-21 17:39) [4]

Не нашел там такого, так что вопрос остается


 
Ihor Osov'yak ©   (2003-05-21 18:51) [5]

> нельзя задействовать режим асинхронных нотификаций

С инди работал мало, но кажется мне что инди работает только в синхронном режиме. Вариант - запускаем в отдельном потоке (я собственно так и делал) , или юзаем TIdAntiFreeze. Но последнее для консоли вряд-ли пройдет, так как этот компонент задействует forms. Посему - только отдельный поток..


 
Ihor Osov'yak ©   (2003-05-21 18:52) [6]

Зы - а стандартные делфийские сокеты почему не подходят?


 
Zelius ©   (2003-05-21 20:04) [7]

1. Использовать ReadTimeout, тогда если в течении таймаута ничего не придет, то программа продолжит выполнение.
2. Использовать if Readable then ReadLN.


 
alt7   (2003-05-22 10:54) [8]

Ага.

ReadTimeout в хелпе не нашел. А Readable это из TIdSocketHandle, а как до него добраться из TIdTCPClient? Если б это сделать, то усе проблемы были бы решены ;))


 
Digitman ©   (2003-05-22 11:00) [9]


> Ihor Osov"yak



> для консоли вряд-ли пройдет, так как этот компонент задействует forms


а что, собственно, мешает консольному приложению использовать forms ? imho - ничто)

стандартные TClientSocket/TServerSocket так же используют этот модуль, однако с успехом работают в любом приложении - и в консольном, и в GUI, и в службе..


 
alt7   (2003-05-22 11:09) [10]

Потом портировать в Kylix. Тоже консольное, демон. А QForms требует XWindow


 
Reindeer Moss Eater   (2003-05-22 11:40) [11]

TIdAntiFreeze для консоли вряд-ли пройдет, не потому, что этот компонент задействует forms, а потому, что предназначем совсем для другого.
Он дает возможность приложению обрабатывать сообщения во время выполнения синхронных методов, что бы не замораживать пользовательский интерфейс.
Зачем он может понадобиться в консоли - большая загадка для меня.


 
alt7   (2003-05-22 12:52) [12]

Граждане возобновим тред.

try
Buffer := vIdTCPClient.Readln;
except
on EIdReadTimeOut do Buffer := "";
end;

Как сделать так чтоб при исключении не вылетало окошко о нем в IDE и при запуске *.exe не выскакивало сообщение о неизвестном исключении??


 
testthewest   (2003-05-22 12:57) [13]

запускать не из IDE или в настройках выключить integrated debugging


 
Zelius ©   (2003-05-22 13:58) [14]


> alt7 (22.05.03 10:54)
> Ага.
>
> ReadTimeout в хелпе не нашел.

TIdTCPConnection.ReadTimeout - похоже что у тебя старый Инди, обнови его! Я работаю с Дельфи7 - там в хелпе есть.

> А Readable это из TIdSocketHandle,
> а как до него добраться из TIdTCPClient? Если б это сделать,
> то усе проблемы были бы решены ;))

TIdIOHandler.Readable, то есть idTcpClient.IOHandler.Readable(...)


 
alt7   (2003-05-22 14:10) [15]

Во пасибо тебе огромное, заработало. ;)))
Поставил бы тебе пива, если б ты жил в Донецке!
Ты же не живешь, правда? ;))

а насчет Инди, у меня последняя стоит, просто хелп от Делфи, я отдельный хелп потом выкачал от Инди


 
Zelius ©   (2003-05-22 14:22) [16]


> alt7 (22.05.03 14:10)

А вообще, для ИНди, лучший хелп - это ее исходники!



Страницы: 1 вся ветка

Текущий архив: 2003.06.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
3-2796
Lamer
2003-05-14 15:15
2003.06.02
Переменная как параметр фильтрации


14-3174
Kirill
2003-05-08 17:43
2003.06.02
7-zip


14-3054
Вася*
2003-05-15 22:20
2003.06.02
Помогите найти компоненту часиков.


3-2782
Карелин Артем
2003-05-13 10:09
2003.06.02
Like и индекс.


8-3015
NAlexey
2003-02-14 17:19
2003.06.02
Работа с HBitmap