Пацаны объясните: Смарите я на клиенте посылаю серверу цифру 1 ПР: procedure TFrm.knopClick(Sender: TObject); begin ClientSocket1.Socket.SendText('1'); end; - правильно!!?? на сервере пишу procedure TForm1.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var w:string; begin w:=socket.ReceiveText;- чтобы принял!!!??? дальше пишу если принял '1' то выполнил действие ПРОБЛЕМА: Пишу я это на серваке var a,w: string; begin w:=socket.ReceiveText; if a='1' then if RadioButton1.Checked=true then b:=MB_Ok; if RadioButton2.Checked=true then b:=MB_YesNo; if SpeedButton1.Down=true then c:=0; if SpeedButton2.Down=true then c:=MB_ICONASTERISK; a:=StringReplace(edit2.Text,'|',Chr(13),[rfReplaceAll]); MessageBox(application.handle,PChar(a),PChar(edit1 .Text), b + c + MB_SYSTEMMODAL); - Это я так думаю он мне не определяет RadioButton1.Checked,SpeedButton1.Down которые находятся на клиенте По руски: мне нужно чтобы я нажал кнопку, сервер получил и показал мегасагу в зависимости какую я иконку поставлю и какие кнопки выберу Чо-то я написал сам не понял если кто-чё понял ответте ПЛИИЗЗЗЗ...... Вобщем чтобы кнопки работали как на кнопке "Тест" так и на сервере Вот исходник если чё кто сможет Скинте на мыло [email protected] http://newslm.narod.ru/HELP.rar
Т.е тебе всего-то надо указать тип сообщения ??? Клиент: Code: var MsgType: UINT; begin MsgType := MB_ICONERROR; ClientSocket1.Socket.SendBuf(MsgType, SizeOf(UINT)); end; Сервер: Code: var MsgType: UINT; begin Socket.RecvBuf(MsgType, SizeOf(UINT)); MessageBox(Handle, '', '', MsgType); end;
Сурсы в конце топика, но чтоб всё было понятно я решил немного пояснить что к чему ) - Для начала опишем структуру которая будет нести в себе информацию о сообщении, а канкретно: 1) Текст сообщения. 2) Заголовок соощения. 3) Тип сообщения. Code: type TMyMsg = record Text : array [0..127] of Char; Caption: array [0..127] of Char; MsgType: UINT; end; Теперь обьявим её: Code: var MyMsg: TMyMsg; // Экземпляр структуры Далее по нажатию на Button1 заполним нашу структуру, и попробуем установить соединение с сервером: Code: procedure TForm1.Button1Click(Sender: TObject); begin ZeroMemory(@MyMsg, SizeOf(TMyMsg)); // На всякий случай чистим CopyMemory(@MyMsg.Text, PChar(StringReplace(Edit2.Text, '|', #13, [rfReplaceAll])), Length(Edit2.Text)); // Заносим в поле "Text" нашей структуры текст сообщения CopyMemory(@MyMsg.Caption, PChar(Edit1.Text), Length(Edit1.Text)); // Заносим заголовок сообщения // Определяем тип сообщения if not RadioButton1.Checked then MyMsg.MsgType := MB_YESNO; if not SpeedButton1.Down then MyMsg.MsgType := MyMsg.MsgType or MB_ICONASTERISK; ClientSocket1.Open; // Подключаемся end; Если подключение прошло успешно, то попробуем отправить нашу структуру: (событие "OnConnect" у ClientSocket1) Code: procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket) begin Socket.SendBuf(MyMsg, SizeOf(TMyMsg)); // Отправляем Socket.Close; // Отключаемся end; Переходим к серверу. В задачу сервера входит получение данных в виде структуры "TMyMsg", и собственно показ самого сообщения: Code: procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var MyMsg: TMyMsg; begin ZeroMemory(@MyMsg, SizeOf(TMyMsg)); // На всякий случай чистим if Socket.ReceiveLength >= SizeOf(TMyMsg) then // Проверяем сколько байт находится во входящем буфере сокета(для того чтобы убедится что вся структура получена) begin Socket.ReceiveBuf(MyMsg, SizeOf(TMyMsg)); // Дальше я надеюсь всё понятно :) with MyMsg do MessageBoxA(Application.Handle, Text, Caption, MsgType); end; end; Исходник: http://night444.narod.ru/help.rar
просто видишь судя по всему он новичок... и к чему его морочить буфферами и sizeof`ами? =) просто receivetext(функ-я) и case of (оператор)...
видишь ли, когда в твоем псевдо-коде на делфи полно всяких сторонних CheckBox1.... сложно понять что тебе требуется... советую тебе срочно забросить занятие изучать делфи-компоненты, поставить Visual Studio и прочитать msdn...