Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
ВнизПомогите разобрать 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c