首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TMemroyStream重点有关问题

2012-02-12 
TMemroyStream重点问题想使用Stream进行Socket开发,在用到TMemroyStream一直不能走出阴影,求解!!就拿sting

TMemroyStream重点问题
想使用Stream进行Socket开发,在用到TMemroyStream一直不能走出阴影,求解!!
就拿sting做例子,本意是想将2个string进行合并使用流的方式,可总不能达到预期效果,看代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  size: Integer;
  s1, s2, s3: string;
  m1, m2: TMemoryStream;
begin
  m1 := TMemoryStream.Create;
  m2 := TMemoryStream.Create;

  size := 5;
  s1 := 'ABCDE'; s2 := '12345'; s3 := '';

  m1.WriteBuffer(s1, size);
  m2.WriteBuffer(s2, size);

  m1.Seek(0,soFromEnd);
  m2.Seek(0,soFromBeginning);
  m1.CopyFrom(m2, m2.Size);

  m1.Seek(0, soFromBeginning);
  m1.ReadBuffer(s3,m1.Size);
  ShowMessage(s3);

  m2.Clear;
  m1.Clear;
  m2.Free;
  m1.Free;
end;


其结果是ABCDE而不是我想要的ABCDE12345,并且还会包内存错误!

[解决办法]
string的内容是从string[1]开始的,所以要
m1.WriteBuffer(s1[1], size);

另外,流是自己可以拼接的
m1.WriteBuffer(s1[1], size);
m1.WriteBuffer(s2[1], size);
就可以完成你那一大堆代码所做的事了,没必要弄两个流对象
 

热点排行