![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TThread ;и TIdTelnet [D6, Win2k]
alt7 © (2003-04-21 12:26:00)Добрый день. Значится вопрос: есть компонента TIdTelnet, которая получает через сокет данные с сервера. Дабы юзер мог пользоваться интерфейсом паралельно с принятием данных создал TThread.
Вот. У TIdTelnet есть есть событие OnDataAvailable(Buffer: String), этот буфер и хранит то, что нам пришло. Как мне обработать это событие с помощью TThread, если методы, которые там мона описывать без параметров должны быть?
$hade (2003-04-21 13:54:00) [1]А смысл всего этого???
>Дабы юзер мог пользоваться интерфейсом паралельно с принятием данных создал TThread
А почему ты решил что юзер не сможет пользоваться интерфейсом паралельно с принятием данных??
Во-первых есть AntiFreeze...
Во-вторых - посмотри исходник IdTelnet...(там уже используется TThread - TIdTelnetReadThread для получения данных) и соответственно никакой блокировки интерфейса не не будет...и геморроя тоже...
alt7 (2003-04-21 12:58:00) [2]Теперь немного по другому.
не могу записать, в синхронайз метод DoS(Buffer: String), пишет что список параметров различен.
alt7 (2003-04-21 12:54:00) [3]Данный вопрос снят. Протупил децл ;))
alt7 (2003-04-21 12:43:00) [4]// Это конструктор
constructor TMyThread.Create;
var
Buffer: String;
begin
FreeOnTerminate := True;
* FIDTelnet.IDTelnet.OnDataAvailable := DoS;
inherited Create(false);
end;
// Это функция-обработчик
procedure TMyThread.DoS;
var
STR: String;
begin
FIDTelnet.IDTelnet.ReadBuffer(STR,FIDTelnet.IDTelnet.RecvBufferSize);
FIDTelnet.Memo.Lines.Add(STR);
end;
И хотелось бы в Synchronize вставить DoS.
Но выдает на строке со * -> Incompatible types: parameter lists differ
Digitman (2003-04-21 12:37:00) [5]
> методы, которые там мона описывать без параметров должны
> быть?
это кто тебе такую глупость сказал ?
почему же это, позволь полюбопытствовать, метод класса не может иметь параметров ?
ErikIvanov (2003-04-21 12:36:00) [6]А в чем проблема, непонял суть вопроса. Описываеш
IdTelnet: TIdTelnet в нутри TThread. В конструкторе делаеш
IdTelnet.OnDataAvailable = ReciveData;
ReciveData разумеется полжно быть описано в TTherad.