線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1466
推到 Plurk!
推到 Facebook!

動態元件的問題

答題得分者是:jest0024
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-25 15:21:21 IP:220.130.xxx.xxx 未訂閱
請問各位大大們:     
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-25 16:26:36 IP:220.130.xxx.xxx 未訂閱
建議修改成陣列的方式, 要對某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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-25 17:14:26 IP:220.130.xxx.xxx 未訂閱
那沒有預期要開幾個時,讓怎麼做呢,,,望大大再指導!
kaiming
一般會員


發表:6
回覆:11
積分:8
註冊:2004-03-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-25 17:45:31 IP:203.204.xxx.xxx 未訂閱
#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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-26 10:10:43 IP:61.222.xxx.xxx 未訂閱
不好意思, 你可能誤會意思了...我是要在完全不知有幾個用的,,當有要在開,,不預期有多少個
lu
高階會員


發表:11
回覆:189
積分:195
註冊:2003-11-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-26 10:50:01 IP:221.169.xxx.xxx 未訂閱
引言:不好意思, 你可能誤會意思了...我是要在完全不知有幾個用的,,當有要在開,,不預期有多少個
你如果是要在整個程式用到的話,且數目是會變動的,那用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;cCount;c  )
  {
    pDynamicClient = (TClientSocket *)ObjList->Items[c];
    delete pDynamicClient;
  }
ObjList->Clear();
deleet ObjList;
----------------------------------------------------------------- 如果你不需要在程式中動態變動數目的話,如下例
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-26 10:55:58 IP:203.67.xxx.xxx 未訂閱
引言:
請問各位大大們:     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]->....    
學而時習之不亦樂乎!
系統時間:2024-11-22 22:14:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!