Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.04;
Скачать: CL | DM;

Вниз

Почему никак не разберусь ! :-(   Найти похожие ветки 

 
SemFLY ©   (2001-11-11 18:56) [0]

Сделал я на Socket’ах клиент и сервер.
Посылаю клиенту команду открыть CD-ROM он открывается, потом посылаю команду на закрытие и ничего не происходит. В чём здесь дело ?

- - - - - - - - -

Вот код сервера.

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ShowMessage ("Соединение не установлено !");
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ServerSocket1.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Socket.Connections[0].SendText(Edit1.Text);
end;

Если в Edit указано "o"- то открыть, если "c" - закрыть.

- - - - - - - -

Код клиента.

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
If Socket.ReceiveText = "o" then
begin
mciSendString("Set cdaudio door open wait", nil, 0, handle); {откpыть}
Memo1.Lines.Add("CD Open !");
exit
end
else
if Socket.ReceiveText = "c" then
begin
mciSendString("Set cdaudio door closed wait", nil, 0, handle); {закpыть}
Memo1.Lines.Add("CD Close !");
end;
end;


Спасибо ! :-)


 
Digitman ©   (2001-11-12 10:16) [1]

1. Событие TForm1.ClientSocket1Read вообще возникает или нет, когда сервер шлет клиенту "c" ?
2. Если возникает, то что в реальности возвращает метод Socket.ReceiveText - ты проверял ?


 
Donal ©   (2001-11-12 11:35) [2]

имхо, получается, что ты сообщение два раза читаешь :-)
попробуй так :

Str := Socket.ReceiveText;
If Str = "o" then
ну и далее по тексту с учётом того, что я написал :-))
--
а так у тебя получилось - ты прочитал сообщение, и если оно не равно "о", то ты ещё раз читаешь, а там уже пусто, ессно :-)


 
Digitman ©   (2001-11-12 11:44) [3]

Точно ! <Donal> прав) ... сразу и не заметил очевидного ляпа)


 
Digitman ©   (2001-11-12 11:46) [4]

>SemFLY
На будущее (чтобы избегать подобных ошибок) - всегда обращай внимание на то, является конкретный способ обращения к объекту вызовом его метода либо обращением к его св-ву (ReceiveText - метод !)


 
SemFLY ©   (2001-11-12 17:31) [5]

Да я уж сам заметил ! :-) Вот ведь из-за мелочи и не работало ! :))
Но всё равно Спасибо за ответы! :))))


 
Anatoly Podgoretsky ©   (2001-11-12 22:31) [6]

Свойство тоже может оказаться замаскированным методом. Лучше разобрать как оно работает.



Страницы: 1 вся ветка

Текущий архив: 2002.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
7-9014
perov
2001-10-24 16:18
2002.02.04
Убить процесс


3-8778
Сержик
2002-01-04 22:47
2002.02.04
Можно запрос делать сразу из двух баз?


1-8948
Forrest1
2002-01-18 14:25
2002.02.04
Как вызвать Макрос из Excel


1-8929
Vacheslav
2002-01-17 11:48
2002.02.04
Как запоминать настройки и полученные значения после закрытия программы


3-8764
KonuhovSegey
2002-01-02 09:28
2002.02.04
Убрать ограничения на количество изменений в одной транзакции