我在用NMUDP 组件 进行数据的传递时,遇到了一个 List Index out of bounds(0) 的错误! 请问这是什么类型的错误啊? 应该怎么改啊! 还有我改ServerSocket 和ClientSocket 时也是如此,不知什么原因。

解决方案 »

  1.   

    List Index out of bounds(0) :
    用到了字符串列表这一类的吧?索引超出原有存在的。
      

  2.   

    怎样跟踪啊! 我还是个初级者,不知道怎样跟踪啊! 其中Unit1代码是这样的:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, NMUDP;type
      TForm1 = class(TForm)
        NMUDP1: TNMUDP;
        Label1: TLabel;
        Edit1: TEdit;
        Label2: TLabel;
        Edit2: TEdit;
        Button1: TButton;
        StatusBar1: TStatusBar;
        procedure Button1Click(Sender: TObject);
        procedure NMUDP1Status(Sender: TComponent; status: String);
        procedure NMUDP1DataSend(Sender: TObject);
        procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
          FromIP: String; Port: Integer);
        procedure NMUDP1InvalidHost(var handled: Boolean);
        procedure Edit1Change(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses unit2;
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       Form2.Show;
    end;procedure TForm1.NMUDP1Status(Sender: TComponent; status: String);
    begin
       Statusbar1.Panels[0].Text :='Status: '+status;
    end;procedure TForm1.NMUDP1DataSend(Sender: TObject);
    begin
       Statusbar1.Panels[0].Text :='Status: Message Sent';
    end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
       mStream:TMemoryStream;
       strData:String;
    begin
       mStream:=TMemoryStream.Create ;
       try
          NMUDP1.ReadStream(mStream);
          SetLength(strData,NumberBytes);
          mStream.Read(strData[1],NumberBytes);
          edit2.Text :=strData;
       finally
          mStream.Free ;
       end;
    end;procedure TForm1.NMUDP1InvalidHost(var handled: Boolean);
    begin
       MessageDlg('Remote Host: '+NMUDP1.RemoteHost +'is invalid',mtError,[mbOk],0);
    end;procedure TForm1.Edit1Change(Sender: TObject);
    var
       mStream:TMemoryStream;
       strData:String;
    begin
       NMUDP1.ReportLevel:=Status_Basic;
       NMUDP1.RemoteHost :='127.0.0.1';
       strData:=edit1.Text ;
       mStream:=TMemoryStream.Create ;
       try
          mStream.Write(strData,Length(strData));
          NMUDP1.SendStream (mStream);
       finally
          mStream.Free;
       end;
    end;end.