Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.5 MB
Время: 0.006 c
14-91829
Empleado
2003-07-10 17:00
2003.07.28
Построение веб сайтов


8-91775
swamp
2003-04-03 13:50
2003.07.28
Много спрайтов


4-91951
Titan
2003-05-24 11:09
2003.07.28
ReadDirectoryChangesW


14-91905
Шишкин Илья
2003-07-12 18:16
2003.07.28
Произношение слов в Delphi


14-91900
Феликс
2003-07-12 15:51
2003.07.28
Вот клоуны блин :)





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