none
出現"並未將物件參考設定為物件的執行個體" RRS feed

  • 問題

  • 各位大大您们好,我想請問一下,我的程式碼(紅色部分)會一直出現"並未將物件參考設定為物件的執行個體",但是我的方法和之前一樣,ㄧ直想不懂為什麼會出現這段文字,我也有試著把new ClientSocket("Version");寫在程式外面,可是也是不行,請問是不是我的觀念錯了,謝謝

            private ClientSocket MyClientSocket;  //我寫的類別
            private void Form1_Load(object sender, EventArgs e)
            {
               
                MyClientSocket = new ClientSocket("Version");
                MyClientSocket.ReceiveDatefromWinService(); //我寫的類別裡的方法
                MyClientSocket.SetWriteCommand = "Q1";      //我寫的類別裡的變數(寫入)
                MyClientSocket.ReceiveDatefromWinService();
                string a = MyClientSocket.GetReadCommand[0]; //我寫的類別裡的變數(讀出資料)
                label2.Text = a;
            }
    2009年2月16日 上午 03:29

解答

  • 1 private ClientSocket MyClientSocket;  //我寫的類別  
    2  
    3 private void Form1_Load(object sender, EventArgs e)  
    4 {             
    5     label12.Text = progressBar1.Value + " %";  
    6     MyClientSocket = new ClientSocket("Q1");  
    7     MyClientSocket.ReceiveDatefromWinService();  
    8     if (MyClientSocket.GetCommand != null && MyClientSocket.GetCommand.Length > 0)  
    9     {  
    10         for (int i=0;i<MyClientSocket.GetReadCommand.Length;i++)  
    11              label2.Text += MyClientSocket.GetReadCommand[i];  
    12     }  
    13     else 
    14         MessageBox.Show("MyClientSocket.GetReadCommand is NULL!!!!");  
    15

    如果有出現對話盒,表示你說謊 ...


    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    • 已標示為解答 冰糖旋風 2009年2月16日 下午 12:05
    2009年2月16日 上午 05:30
    版主

所有回覆

  • 偵錯中斷時,把滑鼠分別停在 label2.text 跟 a 上, 看看這個錯誤訊息是哪個造成。

    我猜是 label2 這個物件不存在或是尚未完成初始化。
    2009年2月16日 上午 03:46
  • 切換到你的Form1原始碼畫面,利用搜尋的方式看看是否存在label2這個控制項。
    2009年2月16日 上午 04:23
  • HI,

    也有可能是MyClientSocket物件呼叫GetReadCommand方法後, 沒有得到任何的內容可以傳回, 把沒有內容的東西當做陣列, 取出第一個元素:[0], 就發生:並未將物件參考設定為物件的執行個體這個錯誤了

    tihs
    2009年2月16日 上午 04:36
  • 各位大大,可是我有試過我也有改寫程式碼,如下

             private ClientSocket MyClientSocket;  //我寫的類別

            private void Form1_Load(object sender, EventArgs e)
            {          
                label12.Text = progressBar1.Value + " %";
                MyClientSocket = new ClientSocket("Q1");
                MyClientSocket.ReceiveDatefromWinService();
                for (int i=0;i<MyClientSocket.GetReadCommand.Length;i++)
                    label2.Text += MyClientSocket.GetReadCommand[i];
            }
    紅色的部份就是他說有錯的地方,我可以確定MyClientSocket.GetReadCommand.Length=1,且裡面有資料,我不懂的是他還是會出現同樣的錯誤,希望各位大大幫幫我,謝謝
    2009年2月16日 上午 05:20
  • 1 private ClientSocket MyClientSocket;  //我寫的類別  
    2  
    3 private void Form1_Load(object sender, EventArgs e)  
    4 {             
    5     label12.Text = progressBar1.Value + " %";  
    6     MyClientSocket = new ClientSocket("Q1");  
    7     MyClientSocket.ReceiveDatefromWinService();  
    8     if (MyClientSocket.GetCommand != null && MyClientSocket.GetCommand.Length > 0)  
    9     {  
    10         for (int i=0;i<MyClientSocket.GetReadCommand.Length;i++)  
    11              label2.Text += MyClientSocket.GetReadCommand[i];  
    12     }  
    13     else 
    14         MessageBox.Show("MyClientSocket.GetReadCommand is NULL!!!!");  
    15

    如果有出現對話盒,表示你說謊 ...


    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    • 已標示為解答 冰糖旋風 2009年2月16日 下午 12:05
    2009年2月16日 上午 05:30
    版主
  • 這位大大您好,真的有出現對話方塊,可是我不懂的地方是,因為出現錯誤的是在Form1_Load底下,當我增加ㄧ個timer1_Tick,把一樣的程式碼寫下去,他就都不會出錯,可請教大大為什麼會這樣子嗎,謝謝
    2009年2月16日 上午 08:40
  • 那我想反問你一下,你為什麼可以認為在表單載入時 (也就是 Form1_Load) 就會有 ClientSocket 進來?
    看你的程式應該是要寫一個 Socket Server,但是 Form1_Load 前你 100% 保證有別人連進來了嗎? 

    不然 MyClientSocket.GetReadCommand 不可能會是 NULL。
    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年2月16日 上午 08:44
    版主
  • 嗯嗯我知道了,謝謝你囉~
    2009年2月16日 下午 12:05