应该没错,不过Tmpstr不能为空,否则MyStream.Write(TmpStr[1], Length(TmpStr));会报错.var tmpStr: String;
    MyStream: TMemoryStream;
begin
  NMUDP1.ReportLevel := Status_Basic;
  NMUDP1.RemoteHost := '10.40.48.107';
  NMUDP1.RemotePort :=  8888;
  NMUDP1.LocalPort  :=  7777;  NMUDP2.ReportLevel := Status_Basic;
  NMUDP2.RemoteHost := '10.40.48.106';
  NMUDP2.RemotePort :=  7777;
  NMUDP2.LocalPort  :=  8888;  TmpStr := Edit1.Text;
  MyStream := TMemoryStream.Create;
  try
    MyStream.Write(TmpStr[1], Length(TmpStr));
    NMUDP1.SendStream(MyStream);
  finally
    MyStream.Free;
  end;
end;

解决方案 »

  1.   

    if txbde.Active=false then txbde.Active:=true;
             if not txbde.IsEmpty then
                    begin
                    txbde.First;
                    sendtt:='deludz'+tot+'*'+sxtx+'*0';
                    size:=length(sendtt);
                    GetMem(buf1,size+1);
                    FillChar(buf1^,size,#0);
                    StrPCopy(buf1,sendtt);
                    data1:=TMemoryStream.Create;
                    data1.Write(buf1^,size);
                    while not txbde.Eof do
                    begin  //eof
                    if txbde.fieldvalues['dz']='0' then
                    begin  //00
                    if (txbde.FieldByName('ip1').AsString<>'') and (txbde.FieldByName('port1').AsString<>'') then
                    begin
                    NMUDP1.RemoteHost:=txbde.FieldValues['ip1'];
                    NMUDP1.RemotePort:=strtoint(txbde.FieldValues['port1']);
                    try
                    NMUDP1.SendStream(data1);
                    except
                    end;
                    end;
                    end;//00
                    txbde.Next;
                    end;     //eof
                    FreeMem(buf1);
                    data1.Free;我也是同样的问题,我是要发给多个客户端,请问为什么老是报错??Stream Write Error
      

  2.   

    if txbde.Active=false then txbde.Active:=true;
             if not txbde.IsEmpty then
                    begin
                    txbde.First;
                    sendtt:='deludz'+tot+'*'+sxtx+'*0';
                    size:=length(sendtt);
                    GetMem(buf1,size+1);
                    FillChar(buf1^,size,#0);
                    StrPCopy(buf1,sendtt);
                    data1:=TMemoryStream.Create;
                    data1.Write(buf1^,size);
                    while not txbde.Eof do
                    begin  //eof
                    if txbde.fieldvalues['dz']='0' then
                    begin  //00
                    if (txbde.FieldByName('ip1').AsString<>'') and (txbde.FieldByName('port1').AsString<>'') then
                    begin
                    NMUDP1.RemoteHost:=txbde.FieldValues['ip1'];
                    NMUDP1.RemotePort:=strtoint(txbde.FieldValues['port1']);
                    try
                    NMUDP1.SendStream(data1);
                    except
                    end;
                    end;
                    end;//00
                    txbde.Next;
                    end;     //eof
                    FreeMem(buf1);
                    data1.Free;我也是同样的问题,我是要发给多个客户端,请问为什么老是报错??Stream Write Error
      

  3.   

    不想让错误提示出现有两种情况
    1.正确使用对象
    2.USE 
       TRY
         可能出现错误提示的语句集
       EXCEPT
         showyourErrMessage;
       END
      

  4.   

    while not txbde.Eof do
                    begin  //eof
    ////////////////////<<修改成功(只发给聊天室里的UDP)/////////////////////////////////////////////////////
                    if txbde.fieldvalues['dz']='0' then
                    begin  //00
                    if (txbde.FieldByName('ip1').AsString<>'') and (txbde.FieldByName('port1').AsString<>'') then
                    begin
                    sendtt:='deludz'+tot+'*'+sxtx+'*0';   //用户ID与头像
                    try   //44
                    size:=length(sendtt);
                    GetMem(buf1,size+1);
                    FillChar(buf1^,size,#0);
                    StrPCopy(buf1,sendtt);
                    data1:=TMemoryStream.Create;
                    data1.Write(buf1^,size);                NMUDP1.RemoteHost:=txbde.FieldValues['ip1']; //ipbde.Text;   //FromIP;
                    NMUDP1.RemotePort:=strtoint(txbde.FieldValues['port1']); //strtoint(portbde.text);   //Port;                try
                    application.ProcessMessages;
                    NMUDP1.SendStream(data1);
                    finally
                    FreeMem(buf1);
                    data1.Free;
                    end;                finally    //44
                    txbde.Next;
                    end;     //44                end
                    else
                    begin
                    txbde.Next;
                    end;
                    end;//00
    加了这么多的外理怎么还出错???
      

  5.   

    检查NMUDP1Datareceive(),这里是不是出错了?