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

BCB傳輸訊息的問題

答題得分者是:gemi0305
chance
一般會員


發表:19
回覆:9
積分:5
註冊:2003-08-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-24 21:37:10 IP:210.68.xxx.xxx 未訂閱
    各位大大好!小弟有個問題想要在此請教各位大大,小弟先報告自己的問題     問題一:小弟用了一個CheckListBox的VCL,小弟的目的是想要在         CheckListBox中挑選幾位Client傳送訊息給他們,以下是小弟的程 式碼:  
 
ck2=0;
if (CheckListBox2->Count==0)
  ShowMessage("線上並無使用者可供傳輸訊息!!");
else
   {
   //判斷線上有無使用者
   for (i=0;iCount;i  )
      {
      if (CheckListBox2->Checked[i]==1)
        ck2=ck2 1;
      }//for
   if (ck2<1)
     ShowMessage("請選擇使用者!!");
   else
      {
      if (Edit3->Text=="")
        ShowMessage("請輸入欲傳輸的訊息!!");
      else
         {
         for (i=0;iCount;i  )
         {
         //若一切正常,則依照電腦名稱找尋Connections SendMessages.
          if (CheckListBox2->Checked[i]==true)
             {
              cks2=CheckListBox2->Items[i].Text.SubString(1,CheckListBox2->Items[i].Text.Length()-2);//擷取CheckListBox的Client
             for (j=0;jItems->Count;j  )
                {
                if (cks2==ServerSocket1->Socket->Connections[j]- >RemoteHost)
                  ServerSocket1->Socket->Connections[j]->SendText(" " Edit3->Text);//加入空字串,作為Client判斷的絕對字元
                        }//for
                    }//if
                 }//for
             }//else
        } //end inside else
   }//end outside else    小弟不明白,小弟利用CheckListBox中的電腦名稱取出,將它與Connections中    的電腦名稱作比對,如果一樣就做傳送訊息的動作,可是為什麼這樣會有    「Access Violation at address 00000000. Read of address 0000000」的    錯誤呢??    問題二:
  
    在眾多的Client之中,Server 要如何確認Client與某一條Client的
  的連線是正常的呢??    問題三:
   
    為什麼在Client斷線之後,Server還是會出現這樣的錯誤呢??
「Access Violation at address 00000000. Read of address 0000000」    小弟是個BCB的初學者,請大家不要見怪
我好像問太多了。
好煩惱哦。    
發表人 - Gemi0305 於 2003/09/24 22:56:06
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-25 09:50:26 IP:210.66.xxx.xxx 未訂閱
引言: 各位大大好!小弟有個問題想要在此請教各位大大,小弟先報告自己的問題 問題一:小弟用了一個CheckListBox的VCL,小弟的目的是想要在 CheckListBox中挑選幾位Client傳送訊息給他們,以下是小弟的程 式碼:
 
ck2=0;
if (CheckListBox2->Count==0)
  ShowMessage("線上並無使用者可供傳輸訊息!!");
else
   {
   //判斷線上有無使用者
   for (i=0;iCount;i  )
      {
      if (CheckListBox2->Checked[i]==1)
        ck2=ck2 1;
      }//for
   if (ck2<1)
     ShowMessage("請選擇使用者!!");
   else
      {
      if (Edit3->Text=="")
        ShowMessage("請輸入欲傳輸的訊息!!");
      else
         {
         for (i=0;iCount;i  )
         {
         //若一切正常,則依照電腦名稱找尋Connections SendMessages.
          if (CheckListBox2->Checked[i]==true)
             {
               cks2=CheckListBox2->Items->Strings[i].SubString(1,CheckListBox2->Items->Strings[i].Length()); 
           //   cks2=CheckListBox2->Items[i].Text.SubString(1,CheckListBox2->Items[i].Text.Length()-2);//擷取CheckListBox的Client
             for (j=0;jItems->Count;j  )
                {
                if (cks2==ServerSocket1->Socket->Connections[j]- >RemoteHost)
                {
                    ServerSocket1->Socket->Connections[j]->SendText(" " Edit3->Text);//加入空字串,作為Client判斷的絕對字元
                       break;  //可加可不加
                     }
                      }//for
                    }//if
                 }//for
             }//else
        } //end inside else
   }//end outside else    小弟不明白,小弟利用CheckListBox中的電腦名稱取出,將它與Connections中    的電腦名稱作比對,如果一樣就做傳送訊息的動作,可是為什麼這樣會有    「Access Violation at address 00000000. Read of address 0000000」的    錯誤呢??    問題二:
  
    在眾多的Client之中,Server 要如何確認Client與某一條Client的
  的連線是正常的呢??    問題三:
   
    為什麼在Client斷線之後,Server還是會出現這樣的錯誤呢??
「Access Violation at address 00000000. Read of address 0000000」    小弟是個BCB的初學者,請大家不要見怪
我好像問太多了。
好煩惱哦。    
發表人 - Gemi0305 於 2003/09/24 22:56:06
請照上面的程式去改~ 改為綠色的程式碼 你之前的寫法會抓到全部的items 另外,如果你是只有用RemoteHost來做判斷的話,同一台電腦如果有兩個連線, 會有重覆的記錄,最好還是加上RemotePort如: RemoteHost ":" IntToStr(RemotePort)~ 當然程式碼要修一下, 加上RemotePort才可以真正把每個client的連線區分開來~ 國泰平安 發表人 -
artist1002
高階會員


發表:2
回覆:155
積分:151
註冊:2002-09-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-25 19:34:51 IP:211.76.xxx.xxx 未訂閱
引言: 各位大大好!小弟有個問題想要在此請教各位大大,小弟先報告自己的問題 問題一:小弟用了一個CheckListBox的VCL,小弟的目的是想要在 CheckListBox中挑選幾位Client傳送訊息給他們,以下是小弟的程 式碼:
 
ck2=0;
if (CheckListBox2->Count==0)
  ShowMessage("線上並無使用者可供傳輸訊息!!");
else
   {
   //判斷線上有無使用者
   for (i=0;iCount;i  )
      {
      if (CheckListBox2->Checked[i]==1)
        ck2=ck2 1;
      }//for
   if (ck2<1)
     ShowMessage("請選擇使用者!!");
   else
      {
      if (Edit3->Text=="")
        ShowMessage("請輸入欲傳輸的訊息!!");
      else
         {
         for (i=0;iCount;i  )
         {
         //若一切正常,則依照電腦名稱找尋Connections SendMessages.
          if (CheckListBox2->Checked[i]==true)
             {
               cks2=CheckListBox2->Items->Strings[i].SubString(1,CheckListBox2->Items->Strings[i].Length()); 
           //   cks2=CheckListBox2->Items[i].Text.SubString(1,CheckListBox2->Items[i].Text.Length()-2);//擷取CheckListBox的Client
//             for (j=0;jItems->Count;j  )
               for (j=0;jSocket->ActiveConnections;j  )
                {
                if (cks2==ServerSocket1->Socket->Connections[j]- >RemoteHost)
                {
                    ServerSocket1->Socket->Connections[j]->SendText(" " Edit3->Text);//加入空字串,作為Client判斷的絕對字元
                       break;  //可加可不加
                     }
                      }//for
                    }//if
                 }//for
             }//else
        } //end inside else
   }//end outside else    小弟不明白,小弟利用CheckListBox中的電腦名稱取出,將它與Connections中    的電腦名稱作比對,如果一樣就做傳送訊息的動作,可是為什麼這樣會有    「Access Violation at address 00000000. Read of address 0000000」的    錯誤呢??    問題二:
  
    在眾多的Client之中,Server 要如何確認Client與某一條Client的
  的連線是正常的呢??    問題三:
   
    為什麼在Client斷線之後,Server還是會出現這樣的錯誤呢??
「Access Violation at address 00000000. Read of address 0000000」    小弟是個BCB的初學者,請大家不要見怪
我好像問太多了。
好煩惱哦。    
發表人 - Gemi0305 於 2003/09/24 22:56:06 請照上面的程式去改~ 改為綠色的程式碼 你之前的寫法會抓到全部的items 另外,如果你是只有用RemoteHost來做判斷的話,同一台電腦如果有兩個連線, 會有重覆的記錄,最好還是加上RemotePort如: RemoteHost ":" IntToStr(RemotePort)~ 當然程式碼要修一下, 加上RemotePort才可以真正把每個client的連線區分開來~ 國泰平安 發表人 - >< face="Verdana, Arial, Helvetica"> 改成紅色的部份可能會好一些 因為有些使用者斷線了可是你的CheckListBox中並沒有更新 所以會讓實際Conntections的數量和你CheckListBox的數量不一樣 導致Conntections[j]會錯誤.
系統時間:2024-04-29 22:56:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!