Сделал две функции: одна для отправки сообщений клиенту, другая для приема (мучаю плагины

)
Вот функция для отправки сообщения, работает все на отлично.
Код: Выделить всё
TStringStream *OutMsgToChannel(AnsiString Channel,AnsiString Text)
{
int i,*pi=&i;
TStringStream *msg=new TStringStream("");
msg->Position=0;
i=Channel.Length();
msg->Write(pi,4);
msg->WriteString(Channel);
i=Text.Length();
msg->Write(pi,4);
msg->WriteString(Text);
return msg;
}
А вот функция для разбора сообщений не работает:
Код: Выделить всё
void InMsgToChannel(BYTE * bMessage, DWORD dwMessageLength)
{
AnsiString user_name,user_ip,channel,text;
int i,*pi=&i;
TStringStream *msg=new TStringStream((char*)bMessage); // ошибка видимо тут, когда я в конструктор передаю указатель на массив BYTE, а потом его пытаюсь преобразовать
msg->Size=dwMessageLength;
msg->Position=0;
msg->Read(pi,4);
user_name=msg->ReadString(i);
msg->Read(pi,4);
user_ip=msg->ReadString(i);
msg->Read(pi,4);
channel=msg->ReadString(i);
msg->Read(pi,4);
text=msg->ReadString(i);
ShowMessage(user_name+","+user_ip+","+channel+","+text);
delete msg;
}
Может кто-то сталкивался с таким?
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.