![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
idTCPServer & idTCPClient Есть ли альтернатива readln ??? [D7, WinXP]
banderas © (2004-07-13 19:31:00)У меня такая проблема: Я сделал что бы запрос был по таймеру
msg:=idTCPClient1.ReadLn('',1,9999999);
memo1.Lines.Add(msg);
Всё вроди бы нормально но когда я пытаюсь отконнектится от сервака Вылазит "Not Connectid" причём столько раз сколько было сделанно запросов. Как сделать что бы эти запросы "сбрасывались" ???????????????
(Пожалуйста неделю парюсь) ;(
banderas (2004-07-14 12:50:00) [1]ВСЕ РАБОТАЕТ БОЛЬШОЕ СПАСИБО!!! :)
Reindeer Moss Eater (2004-07-14 12:31:00) [2]Ну и еще прочитай описание метода CheckForDisconnect
Reindeer Moss Eater (2004-07-14 12:28:00) [3]procedure TForm1.Button2Click(Sender: TObject);
var
msg:string;
begin
if idTCPClient1.Connected=false then
begin
idTCPClient1.Host:=host.Text;
idTCPClient1.Connect(-1);
idTCPClient1.WriteLn('dsf');
button3.Caption:='Disconnect';
ExitFlag := False;
repeat
try
msg:=idTCPClient1.ReadLn('',1,9999999);
memo1.Lines.Add(msg);
except
ExitFlag := true;
end;
until msg = 'qw1' or ExitFlag;
end
else
begin
idTCPClient1.WriteLn('qw1');
ExitFlag := true;
idTCPClient1.Disconnect;
button3.Caption:='Connect';
end;
end;
banderas (2004-07-14 12:24:00) [4]Про сообщение об ОШИБКЕ: "Not Connectid" при нажатии на Disconnect.
Если нажать на кнопку один раз то произойдёт Connect. А если ещё раз то Disconnect. Как сделать чтобы до Disconnecta происходила отправка сообщения (idTCPClient1.WriteLn('qw1');) или есть другой способ ?
procedure TForm1.Button2Click(Sender: TObject);
var
msg:string;
begin
if idTCPClient1.Connected=false then
begin
idTCPClient1.Host:=host.Text;
idTCPClient1.Connect(-1);
idTCPClient1.WriteLn('dsf');
button3.Caption:='Disconnect';
repeat
msg:=idTCPClient1.ReadLn('',1,9999999);
memo1.Lines.Add(msg);
until msg = 'qw1';
end
else
begin
idTCPClient1.WriteLn('qw1');
idTCPClient1.Disconnect;
button3.Caption:='Connect';
end;
end;
Reindeer Moss Eater (2004-07-14 12:12:00) [5]Прочитай в книгах про блоки try except
Reindeer Moss Eater (2004-07-14 12:06:00) [6]А дальше можно уже по русски и внятно?
Мы вообще про сообщения сервера/клиента или про сообщения об ошибках?
banderas (2004-07-14 11:57:00) [7]А как сделать что бы при нажатиии на дисконнект ни каких сообщений невылазило ?
Reindeer Moss Eater (2004-07-14 09:06:00) [8]когда тыкаю на disconnect то вылазит всего лиш одно сообщение
И что?
А сколько их было отправлено? (Учитывая твой недефолтный признак конца строки)
banderas (2004-07-13 21:05:00) [9]Да чё то я про цикл repeat совсем позабыл. Но уменя снова небольшая проблема
repeat
msg:=idTCPClient1.ReadLn('',1,9999999);
memo1.Lines.Add(msg);
until msg = 'qw1';
когда тыкаю на disconnect то вылазит всего лиш одно сообщение
Я пробовал так
idTCPClient1.WriteLn('qw1');
idTCPClient1.Disconnect;
но это не помогает...
Reindeer Moss Eater (2004-07-13 19:45:00) [10]Вызвав ReadLN ты не возвратишьсяиз него пока не получишь строку, либо пока не произойдет таймаут, либо дисконнект.
Теперь добавляем пресловутый таймер и в каждом тике вызываем и вызываем ReadLn.
В то время как самый первый вызов еще не завершил работу.
Спрашивается зачем?
repeat
msg:=idTCPClient1.ReadLn('',1,9999999);
until msg = 'Пора домой';
и все.
и никаких таймеров.
banderas (2004-07-13 19:40:00) [11]Ребят я не знаю как подругому подскожите УМОЛЯЮ
Reindeer Moss Eater (2004-07-13 19:38:00) [12]Зачем таймер компоненту с синхронными методами?
Зачем?
Зачем ему таймер?
Можешь объяснить?