荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: duck (我是一棵树), 信区: SoftDev
标  题: [合集]怎么通过流传数据?
发信站: 荔园晨风BBS站 (2006年01月15日22:34:08 星期天), 站内信件

☆   1  ──────────── 我是分割线 ─────────────────☆
发信人: limee (lily), 信区: SoftDev
标  题: 怎么通过流传数据?
时  间: 2005年11月02日21:29:32 星期三

我想通过Stream把String类型的数据传出去?
可是下面的程序怎么也传不出去,为什么?
我哪里错了?

var
   s : String;
begin
   ms:=TmemoryStream.Create;
   ms.WriteBuffer(s,Length(s));
   ControlX.LoadFromStream(ms);
   ms.Free;
end;


☆   2  ──────────── 我是分割线 ─────────────────☆
发信人: duck (Delphi小王子), 信区: SoftDev
标  题: Re: 怎么通过流传数据?
时  间: 2005年11月02日22:26:58 星期三

自己看看Delphi帮助就知道

procedure WriteBuffer(const Buffer; Count: Longint);

参数要是Buffer类型,一般可以这样写 PChar(s),还有一般长度好像要+1




☆   3  ──────────── 我是分割线 ─────────────────☆
发信人: limee (lily), 信区: SoftDev
标  题: Re: 怎么通过流传数据?
时  间: 2005年11月03日10:15:35 星期四

还是存在问题啊,这段程序当点了按扭后
memo1控件并没有显示123456

procedure TForm1.Button1Click(Sender: TObject);
var
   ms : TMemoryStream;
   s : String;
begin
   s := '123456';
   Memo1.Lines.Add('Testing Stream');
   Sleep(2000);
   ms := TMemoryStream.Create;
   ms.WriteBuffer(PChar(s)^,Length(s));
   Memo1.Lines.LoadFromStream(ms);
   ms.Free;
end;



☆   4  ──────────── 我是分割线 ─────────────────☆
发信人: duck (Delphi小王子), 信区: SoftDev
标  题: Re: 怎么通过流传数据?
时  间: 2005年11月03日20:34:46 星期四

WriteBuffer之后加一句:
   ms.Position:=0;
把ms的指针地址指向头部(WriteBuffer()参数可以用s或者s[1])

另外建议加异常控制
try
finally
end


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店