![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TiDAntiFreeze; [D6, Win2k]
alt7 © (2003-05-21 18:06:00)Каков принцип работы?
Вот мне нужно использовать его в консольном приложении, где есть TiDTCPClient.Readln, то есть пока не прочтет инфу из сокета, то с места не сдвинется.
Что нужно написать, чтобы осталльная работа не стопорилась?
Некая такая конструкция имеется:
while true do
begin
<..>
TiDTCPClient.Readln;
<..>
WriteLn(buffer);
end;
Как заставить срабатывать WriteLn(Buffer независимо от того, пришли ли данные?)
alt7 (2003-05-22 11:26:00) [21]Много чего. Но главное, что программа работает с системным временем, если пауза при ожидании ответа с сокета затягивается более чем на секунду, то программа уже работать будет неправильно.
Reindeer Moss Eater (2003-05-22 11:22:00) [22]Ты не понял.
А надо чтобы или проверка или по таймауту дальше работало
Что ты такое делаешь после возврата из ReadLn?
alt7 (2003-05-22 11:18:00) [23]while true do
begin
<..>
TiDTCPClient.Readln;
<..>
WriteLn(buffer);
end;
Ну вот там где readln счас стопорится пока инфа не придет. А надо чтобы или проверка или по таймауту дальше работало. А я напишу потом проверку что-то типа if(buffer<>"") then ляляля...
1) Как написать проверку?
2) Как установить таймаут?
Reindeer Moss Eater (2003-05-22 10:59:00) [24]Что нужно написать, чтобы осталльная работа не стопорилась?
Сначала поведай, что хочешь получить в итоге.
alt7 (2003-05-22 10:57:00) [25]Да, почитал что TIdAntiFreeze там не поработает ;)))
Да, или таймаут поставить около 0.01сек или делать проверку на наличие информации в буфере чтения..
Как?
Reindeer Moss Eater (2003-05-22 10:03:00) [26]В консольном приложении TiDAntiFreeze? Ну круто однако.
А зачем?
Как заставить срабатывать WriteLn(Buffer независимо от того, пришли ли данные?)
Ты имеешь ввиду читать с таймаутом <> бесконечность?