Форум: "Сети";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];
ВнизTiDAntiFreeze; Найти похожие ветки
← →
alt7 (2003-05-21 18:06) [0]Каков принцип работы?
Вот мне нужно использовать его в консольном приложении, где есть TiDTCPClient.Readln, то есть пока не прочтет инфу из сокета, то с места не сдвинется.
Что нужно написать, чтобы осталльная работа не стопорилась?
Некая такая конструкция имеется:
while true do
begin
<..>
TiDTCPClient.Readln;
<..>
WriteLn(buffer);
end;
Как заставить срабатывать WriteLn(Buffer независимо от того, пришли ли данные?)
← →
Reindeer Moss Eater (2003-05-22 10:03) [1]В консольном приложении TiDAntiFreeze? Ну круто однако.
А зачем?
Как заставить срабатывать WriteLn(Buffer независимо от того, пришли ли данные?)
Ты имеешь ввиду читать с таймаутом <> бесконечность?
← →
alt7 (2003-05-22 10:57) [2]Да, почитал что TIdAntiFreeze там не поработает ;)))
Да, или таймаут поставить около 0.01сек или делать проверку на наличие информации в буфере чтения..
Как?
← →
Reindeer Moss Eater (2003-05-22 10:59) [3]Что нужно написать, чтобы осталльная работа не стопорилась?
Сначала поведай, что хочешь получить в итоге.
← →
alt7 (2003-05-22 11:18) [4]while true do
begin
<..>
TiDTCPClient.Readln;
<..>
WriteLn(buffer);
end;
Ну вот там где readln счас стопорится пока инфа не придет. А надо чтобы или проверка или по таймауту дальше работало. А я напишу потом проверку что-то типа if(buffer<>"") then ляляля...
1) Как написать проверку?
2) Как установить таймаут?
← →
Reindeer Moss Eater (2003-05-22 11:22) [5]Ты не понял.
А надо чтобы или проверка или по таймауту дальше работало
Что ты такое делаешь после возврата из ReadLn?
← →
alt7 (2003-05-22 11:26) [6]Много чего. Но главное, что программа работает с системным временем, если пауза при ожидании ответа с сокета затягивается более чем на секунду, то программа уже работать будет неправильно.
← →
Reindeer Moss Eater (2003-05-22 11:33) [7]IdTCPClient1.ReadTimeOut:=5000;
IdTCPClient1.ReadLn(#$A,IdTimeoutDefault);
if IdTCPClient1.ReadLnTimedOut then ShowMessage("У нас таймаут");
← →
alt7 (2003-05-22 11:37) [8]Это какой Делфи?? Мой 6-ой и ругается что не знает, что такое ReadTimeOut...
И что значит #$A ?
← →
Reindeer Moss Eater (2003-05-22 11:43) [9]uses idGlobal;
И это не Delphi, это Indy последнего релиза.
И что значит #$A ?
Ну символ с кодом $0A наверное. Или с кодом 10 или LF.
← →
alt7 (2003-05-22 11:47) [10]Ну у меня стоит версия 9.00.11 выкачивал дето дней 10 назад.
Не работает даже с этим uses
А то видимо код конца строки?
← →
Reindeer Moss Eater (2003-05-22 11:51) [11]Печальный случай.
Не пробовал поискать файлы *.pas в каталоге Indy, содержащие "IdTimeoutDefault"?
← →
alt7 (2003-05-22 12:08) [12]Переставил Indy. Вроде Timeout хавает счас проверю остальное
← →
alt7 (2003-05-22 12:24) [13]Ага, работает но возникает EIdReadTimeout-исключение, когда timeout срабатывает, можно ли его как-то отключить? Чтоб не срабатывало исключение, и моя прога работала дальше как ни в чем не бывало?
← →
Reindeer Moss Eater (2003-05-22 12:27) [14]Разработчики старались, трудились, давая возможность пользователям библиотеки знать, что происходит во время выполнения методов, а неблагодарные пользователи хотят выключить исключения.
Их не отключать надо, а обрабатывать!!!
← →
alt7 (2003-05-22 12:31) [15]ага я написал:
try
Buffer := vIdTCPClient.ReadLn; <--|
except |
on EIdReadTimeOut do Buffer := ""; |
end; |
|
Так у меня прога все равно вылетает на второй строке -|
← →
Reindeer Moss Eater (2003-05-22 12:36) [16]1. А если исключение будет не EIdReadTimeOut, а например дисконнект, или превышение максмальной длины строки?
Где обработака?
2. "Прога" не вылетает. Это встроенный отладчик среды, из под которого ты запускаешь проект останавливается на исключениях.
← →
alt7 (2003-05-22 12:40) [17]Я про первый пункт не говорю.
Я спрашиваю что сделать нужно, чтобы при таймауте прога продолжала работать как будто-бы исключение не произошло
← →
Reindeer Moss Eater (2003-05-22 12:55) [18]Прога, или среда?
Ты определись с понятиями уже.
← →
alt7 (2003-05-22 12:57) [19]Че тут определяться, прога - моя программа, среда - IDE
← →
alt7 (2003-05-22 12:59) [20]Да и кстати кто-то говорил про Readable, но функция эта в TIDSocketHandle, а как до нее добраться из TIDTCPClient?
← →
Reindeer Moss Eater (2003-05-22 13:01) [21]Че тут определяться, прога - моя программа, среда - IDE
А Волга, например, впадает в Каспийское море.
← →
alt7 (2003-05-22 13:03) [22]Это не по-существу. Давай не отклоняться от темы. Я спросил, ты можешь ответить?
← →
Reindeer Moss Eater (2003-05-22 13:06) [23]Боюсь что нет.
Трудно ответить что-то человеку, который не может сказать что ему надо.
← →
alt7 (2003-05-22 13:11) [24]Вопрос:
try
Buffer := vIdTCPClient.Readln;
except
on EIdReadTimeOut do Buffer := "";
end;
Как сделать так чтоб при исключении не вылетало окошко о нем в IDE и при запуске *.exe не выскакивало сообщение о неизвестном исключении и моя программа продолжала работать??
← →
Reindeer Moss Eater (2003-05-22 13:15) [25]Настроить опции IDE касающиесся встроенного отладчика. "Break On Exceptions"
← →
alt7 (2003-05-22 13:18) [26]Это где?
Я вот зашел Tools -> Debugger Options -> Language Exceptions -> Exception Types To Ignore
Добавлял сюда и EIdReadTimeOut и EIdException, все равно выскакивает окошко...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c