ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Помгите с сообщениями в делфи
  #1  
Старый 05.03.2006, 03:39
Аватар для Litvik
Litvik
Новичок
Регистрация: 04.03.2006
Сообщений: 4
Провел на форуме:
4667

Репутация: 0
По умолчанию Помгите с сообщениями в делфи

Пацаны объясните:
Смарите я на клиенте посылаю серверу цифру 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 которые находятся на клиенте
По руски:
мне нужно чтобы я нажал кнопку, сервер получил и показал мегасагу в зависимости какую я иконку поставлю и какие кнопки выберу

Чо-то я написал сам не понял если кто-чё понял ответте
ПЛИИЗЗЗЗ...... Вобщем чтобы кнопки работали как на кнопке "Тест" так и на сервере
Вот исходник если чё кто сможет Скинте на мыло Litvik@list.ru
http://newslm.narod.ru/HELP.rar
 
Ответить с цитированием

  #2  
Старый 05.03.2006, 23:47
Аватар для Raider
Raider
Познающий
Регистрация: 02.05.2005
Сообщений: 42
Провел на форуме:
137056

Репутация: 9
По умолчанию

Т.е тебе всего-то надо указать тип сообщения ???

Клиент:
Код:
var
  MsgType: UINT;
begin
  MsgType := MB_ICONERROR;
  ClientSocket1.Socket.SendBuf(MsgType, SizeOf(UINT));
end;
Сервер:
Код:
var
  MsgType: UINT;
begin
  Socket.RecvBuf(MsgType, SizeOf(UINT));
  MessageBox(Handle, '', '', MsgType);
end;
 
Ответить с цитированием

Чё то я не могу догнать
  #3  
Старый 06.03.2006, 13:10
Аватар для Litvik
Litvik
Новичок
Регистрация: 04.03.2006
Сообщений: 4
Провел на форуме:
4667

Репутация: 0
По умолчанию Чё то я не могу догнать

Можешь исходник посотреть, и исправить , плиззз.
Мыло указано
 
Ответить с цитированием

  #4  
Старый 08.03.2006, 14:32
Аватар для Raider
Raider
Познающий
Регистрация: 02.05.2005
Сообщений: 42
Провел на форуме:
137056

Репутация: 9
По умолчанию

Сурсы в конце топика, но чтоб всё было понятно я решил немного пояснить что к чему )
-
Для начала опишем структуру которая будет нести в себе информацию о сообщении,
а канкретно:
1) Текст сообщения.
2) Заголовок соощения.
3) Тип сообщения.
Код:
type
  TMyMsg = record
    Text   : array [0..127] of Char;
    Caption: array [0..127] of Char;
    MsgType: UINT;
  end;
Теперь обьявим её:
Код:
var
  MyMsg: TMyMsg; // Экземпляр структуры
Далее по нажатию на Button1 заполним нашу структуру, и попробуем установить соединение с сервером:
Код:
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)
Код:
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket)
begin
  Socket.SendBuf(MyMsg, SizeOf(TMyMsg)); // Отправляем
  Socket.Close; // Отключаемся
end;
Переходим к серверу. В задачу сервера входит получение данных в виде структуры "TMyMsg", и собственно
показ самого сообщения:
Код:
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

Последний раз редактировалось Raider; 09.03.2006 в 00:38.. Причина: Исправил небольшую ошибку в коде
 
Ответить с цитированием

  #5  
Старый 21.03.2006, 22:24
Аватар для W!z@rD
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

ооо а ведь можно было и case заюзать...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #6  
Старый 21.03.2006, 22:30
Аватар для W!z@rD
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

просто видишь судя по всему он новичок... и к чему его морочить буфферами и sizeof`ами? =) просто receivetext(функ-я) и case of (оператор)...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #7  
Старый 22.03.2006, 02:00
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

видишь ли, когда в твоем псевдо-коде на делфи полно всяких сторонних CheckBox1.... сложно понять что тебе требуется... советую тебе срочно забросить занятие изучать делфи-компоненты, поставить Visual Studio и прочитать msdn...
 
Ответить с цитированием

  #8  
Старый 25.03.2006, 21:00
Аватар для EvL
EvL
Новичок
Регистрация: 24.03.2006
Сообщений: 16
Провел на форуме:
9980

Репутация: 0
Отправить сообщение для EvL с помощью ICQ
По умолчанию

есть немало способов думаю заюзай разбивку пакетов те которые летят по сокетам там ничего сложного.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи для Новичков..... ~Fenix~ С/С++, C#, Delphi, .NET, Asm 21 10.06.2006 14:11
Делфи Veteran Разное - Покупка, продажа, обмен 0 19.01.2006 01:05
Помгите plzZzzZ RAZIELE Болталка 20 16.11.2005 18:37
Помгите с установкой ICQ Pro 5.02 Kamenev ICQ 5 21.08.2005 15:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ