解决方法: 用 MemoryStream
先把字体的颜色大小等资料保存到 内存流中,,然后再把文字保存到内存流中;最后发送出去
发送端
var
Ms :MemoryStream;
textbuff
char;
begin
Ms :=MemoryStream.create;
Ms.write(Richedit1.font,sizeof(Tfont)); //写入字体资料
textbuff:=pchar(Richedit1.text);
ms.write(texbuff,length(Richedit1.text));//写如文字
ms.position:=0;
servercoket1.socket.sendstream(ms);//发送流
ms.free;
end;
接收端先把字体内容度出来; 我这里为了简单直接一点,也用了内存流,不知道会不会影响速度
procedure CLIENTSOCKET1.READ(。。。。);
var
buf
char;
recms :TmemoryStream;
RECfont:Tfont; //接收到的字体变量
BEGIN
getmem(buf,soket.recievLength);
recms :=TmemoryStream.create;
socket.recievebuffer(buf^,socket.recievLength);
recms.write(buf^,soket.recievLength);//把BUF转换成流方式 ,可能笨了点,但很方便,呵呵
recms.position:=0; //这句不能少
recms.read(RECfont,sizeof(Tfont)); //读出字体
然后再读出文字数据
recms.read(buf^,socket.recievLength-sizeof(Tfont));