写了一段测试代码:
procedure TForm1.Button1Click(Sender: TObject);
var
mys:tmemorystream;
myb:tbitmap;
begin
mys:=tmemorystream.Create;
myb:=tbitmap.Create;
form1.Image1.Picture.Bitmap.SaveToStream(mys);
myb.LoadFromStream(mys);
myb.SaveToFile('c:\aa.bmp');
end;
现保存图像流,再读出来,保存文件,结果什么都没有,为什么?
另外,如果我用nmudp.sendstream的话,为什么stream.size打了会出错,怎么办
第三,如果同时要udp传输图像和文字,有什么办法,是用不同的端口还是什么其他的方法,还有udp两端如何通信,类似于socket.sendtext?-------------------------------------------------
请各位老大帮帮忙啊!

解决方案 »

  1.   

    字打错了:为什么stream.size大了会出错
      

  2.   

    第一问题:
    var
    mys:tmemorystream;
    myb:tbitmap;
    begin
    mys:=tmemorystream.Create;
    myb:=tbitmap.Create;
    form1.Image1.Picture.Bitmap.SaveToStream(mys);
    mys.Seek(0,0); //流指针执行开始处
    myb.LoadFromStream(mys);
    myb.SaveToFile('c:\aa.bmp');
    mys.Free;  //释放流
    myb.Free;  //释放bitmap
    end;
    第二个问题.如果Size太大的话,udp发送不了.第三个问题:不是很清楚.
    但是我想是否可以这样处理:
    1.定义好数据帧,帧头帧尾校验位,帧序号.
    2.将数据分成N帧上传.
    3.接收后根据数据帧信息组成一个完成的数据.
      

  3.   

    谢谢楼上的,但是我用udp传的数据不大阿
      

  4.   

    问题都不大,
    这个协议网可能对你有用
    http://www.cnpaf.net/Class/ProtocolAll/index.htm
      

  5.   

    第一个问题解决了,另外了解到udp数据包有2048个字节限制,采用分解在组合方式也好了,现在就是第三个问题:第三,如果同时要udp传输图像和文字,有什么办法,是用不同的端口还是什么其他的方法,还有udp两端如何通信,类似于socket.sendtext?