動態元件的問題 |
答題得分者是:jest0024
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
請問各位大大們:
for(int i=0; i<12; i ) { TClientSocket *pDynamicClient; pDynamicClient = new TClientSocket(this); pDynamicClient->Name="Client" IntToStr(i); }問題1: 為什麼用同一個指標,卻是不同物件呢? 問題2: 要如何使用其中一個socket呢? 問題3: 如何刪除其中一個? 問題4: 假設其在一個區域宣告, 當區域結束後是否自動消失 敬請各位大大先進解答, 實在被搞昏,,,@@ 發表人 - kenbcb 於 2004/05/25 15:26:19 發表人 - taishyang 於 2004/05/25 16:39:28 |
0936187122
一般會員 發表:8 回覆:7 積分:3 註冊:2004-03-23 發送簡訊給我 |
建議修改成陣列的方式, 要對某client動作時, 只要指向陣列位置即可
如: pDynamicClient[i]-> = = = = = = = = = = = = = = = 以下為程式片段, 其中物件名稱並不重要 #include "ScktComp.hpp" TClientSocket *pDynamicClient[12]; void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(int i=0; i<12; i )
{
pDynamicClient[i] = new TClientSocket(this);
pDynamicClient[i]->Name="Client" IntToStr(i);
}
}
void __fastcall TForm1::FormClose(TObject *Sender)
{
for(int i=0; i<12; i )
{
delete pDynamicClient[i];
}
} 問題1:你的例子不是很適當, 用上例後應該就不會混淆了
問題2~3 看上例
問題4:區域變數.故名思意, 只能在讓區域使用
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
kaiming
一般會員 發表:6 回覆:11 積分:8 註冊:2004-03-01 發送簡訊給我 |
#define No 256 <-看你要多少就設多少
int cnt = 0 ; TClientSocket *pDynamicClient[No]; void __fastcall TForm1::Button1Click(TObject *Sender)
{ CreatDynamicClient(cnt) ;
cnt ; } void __fastcall TForm1::CreatDynamicClient(int i)
{
pDynamicClient[i] = new TClientSocket(this);
pDynamicClient[i]->Name="Client" IntToStr(i);
} //------------------------------------------------
基本意思就這樣啦!!!
看你的應用!!!
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
引言:不好意思, 你可能誤會意思了...我是要在完全不知有幾個用的,,當有要在開,,不預期有多少個你如果是要在整個程式用到的話,且數目是會變動的,那用TList 吧,如下例 TList 的用法請查閱HELP,還有TList 不可使用在Multi Thread程式喔,如果要用請使用TThreadList TList *ObjList = new TList(); TClientSocket *pDynamicClient; pDynamicClient = new TClientSocket(this); int ret = ObjList->Add(pDynamicClient); pDynamicClient->Name="Client" IntToStr(ret); //do some thing for (int c=0;c----------------------------------------------------------------- 如果你不需要在程式中動態變動數目的話,如下例 String ss = InputBox ("請輸入欲產生的數目","請輸入欲產生的數目","10"); int Count = ss.ToInt(); TClientSocket **pDynamicClient; pDynamicClient = new TClientSocket *[Count]; //產生動態陣列 for (int c=0;c |
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
引言:學而時習之不亦樂乎!請問各位大大們: for(int i=0; i<12; i ) { TClientSocket *pDynamicClient; pDynamicClient = new TClientSocket(this); pDynamicClient->Name="Client" IntToStr(i); } 問題1: 為什麼用同一個指標,卻是不同物件呢? 這個問題好像是一張紙,開始寫了A,塗掉再寫B,再塗掉寫C... 問題2: 要如何使用其中一個socket呢? 最好像用陣列自己管理建立的物件 問題3: 如何刪除其中一個? 只要一個指標管理會造成混淆,要自己管理 問題4: 假設其在一個區域宣告, 當區域結束後是否自動消失 宣告會消失,但建立的物件並不會消失 pDynamicClient = new TClientSocket(this); ^會消失 ^建立好的,不會消失 敬請各位大大先進解答, 實在被搞昏,,,@@ 使用TList來管理新增的物件 TList *List; //先設定公用變數 for(int i=0; i<12; i ) { TClientSocket *pDynamicClient; pDynamicClient = new TClientSocket(this); List->Add(pDynamicClient); pDynamicClient->Name="Client" IntToStr(i); } 使用時 (TClientSocket)List[n]->.... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |