請問各位大大,急切需要各位幫忙 我有了二個tlist來存動態開出來的元件,,一個存form 一個存clientsocket,,但我在form中要讓clientsocket 連線卻會出現問題
void __fastcall TFormMain::BroadcastMessageClick(TObject *Sender)
{
//broadcast message if(!ClientSocket1->Active) return;
if(TreeView1->Selected == NULL) return;
if(TreeView1->Selected->Text == "GGS") return; vector::iterator PPtr = PBuffer.begin();
for(unsigned int i=0;iDescription,TreeView1->Selected->Text.c_str(),Max_Palias) == 0) ||
((IntToStr((unsigned char)PPtr->ID) == TreeView1->Selected->Text)))
break;
PPtr++;
} TFormMessage *tmpFormMsg;
AnsiString tmpCaption = "Broadcast Message -- "+TreeView1->Selected->Text;
for(int i=0;i<FormMsgList->Count;i++)
{
tmpFormMsg = (TFormMessage*)FormMsgList->Items[i];
if(tmpFormMsg->Caption == tmpCaption)
{
tmpFormMsg->SetFocus();
tmpFormMsg->Show();
return;
}
}
tmpFormMsg = new TFormMessage(this);
tmpFormMsg->Caption = tmpCaption;
FormMsgList->Add(tmpFormMsg);
tmpFormMsg->Show();
}
//---------------------------------------------------------------------------
void __fastcall TFormMessage::FormCreate(TObject *Sender)
{
MemoMessage->MaxLength = Max_String; AnsiString PName = FormMain->TreeView1->Selected->Text;
vector::iterator PPtr = PBuffer.begin();
for(unsigned int i=0;iDescription,PName.c_str(),Max_Palias) == 0) ||
((IntToStr((unsigned char)PPtr->ID) == PName)))
{
memmove(&PclientBuffer,PPtr,sizeof(TPclientType));
break;
}
PPtr++;
} SocketExist = true;
TClientSocket *MsgSocket;
MsgSocket = (TClientSocket*)PSocketList->Items[(unsigned char)PclientBuffer.ID];
if(MsgSocket->Active == false)
{
MsgSocket->Active = true;
ConnectTimer->Enabled = true;
ShowMessage("Connect......");
unsigned char CRC,Buffer[1460];
memset(Buffer,0x00,sizeof(Buffer));
THeadPacket *HeadPacket = (THeadPacket*)Buffer; HeadPacket->Leading = Header;
HeadPacket->Control = COMMAND;
HeadPacket->To = SERVER;
HeadPacket->Length = sizeof(PclientBuffer.Password)+sizeof(PclientBuffer.ID);
HeadPacket->SenderSN = 0;
HeadPacket->ReceiverSN = 0;
HeadPacket->Type = Request_Online; memmove(Buffer+sizeof(THeadPacket),PclientBuffer.Password,sizeof(PclientBuffer.Password));
memmove(Buffer+sizeof(THeadPacket)+sizeof(PclientBuffer.Password),&PclientBuffer.ID,sizeof(PclientBuffer.ID));
CRC = CRCcheck(Buffer,sizeof(THeadPacket)+HeadPacket->Length);
Buffer[sizeof(THeadPacket)+HeadPacket->Length] = CRC;
Buffer[sizeof(THeadPacket)+HeadPacket->Length+1] = Trailer; MsgSocket->Socket->SendBuf(Buffer,sizeof(THeadPacket)+HeadPacket->Length+2);
SocketExist = false;
}
}