string转Tstream

yangwe101860 2006-04-21 02:27:57
小弟鼓起勇气问一个弱弱的问题:
delphi 怎么把一个String转成Tstream?
我需要用InXMLDoc.LoadFromStream()这个方法。
必须要转成Tstring
...全文
594 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
仙侣步惊云 2006-09-09
  • 打赏
  • 举报
回复
var
stream:TStream;
str:string;
begin
str:='test string';
stream:=TMemoryStream.Create;
stream.writebuffer(str[1],Length(str));
......
end;
zhangxuyu1118 2006-09-07
  • 打赏
  • 举报
回复
//读S1长度,读S1;读S2长度,读S2;读N1,N2

procedure TForm1.Button2Click(Sender: TObject);
var
S: TFileStream;
iTmp: integer;
sTmp:string;
begin
S := TFileStream.Create('d:\\tmp.dat', fmOpenRead);
with S do
try
s.Read(iTmp, 4);
setlength(sTmp, iTmp);
S.Read(sTmp[1], iTmp);
showmessage(sTmp);
s.Read(iTmp, 4);
setlength(sTmp, iTmp);
S.Read(sTmp[1], iTmp);
showmessage(sTmp);
s.Read(iTmp, 4);
s.Read(iTmp, 4);
finally
free;
end;
end;
zhangxuyu1118 2006-09-07
  • 打赏
  • 举报
回复
//先写字符窜S1的长度到流然后写S1(注意string的指针从1开始);然后写S2的长度然后再写S2;最后往流里随便写了两个整数。
procedure TForm1.Button1Click(Sender: TObject);
var
S: TFileStream;
sTmp, s1, s2:string;
iTmp, n1, n2: integer;
begin
s1 := '12345';
s2 := 'abcdefg';
n1 := 100000;
n2 := 1024;
S := TFileStream.Create('d:\\tmp.dat', fmCreate);
with S do
try
iTmp := length(s1);
s.Write(iTmp, sizeof(iTmp));
s.Write(s1[1], iTmp);
iTmp := length(s2);
s.Write(iTmp, sizeof(iTmp));
s.Write(s2[1], iTmp);
s.Write(n1, sizeof(n1));
Write(n2, sizeof(n2));
finally
free;
end;
end;
zhangxuyu1118 2006-09-07
  • 打赏
  • 举报
回复
我以前的代码,将string、int写入stream,保存为磁盘文件然后读出。
yangwe101860 2006-04-21
  • 打赏
  • 举报
回复
我的最终目的是想解析一个string形式的xml文档。然后把里面的数据存到list里
而且那个 xml string 里没有<?xml version="1.0" encoding="gb2312" ?>
这样的东西。请问各位了,我应该怎么做?
yangwe101860 2006-04-21
  • 打赏
  • 举报
回复
楼上的是说我要把那个tmemorystream改成TStringStream
然后在用那个方法读xml串?是把?
aiirii 2006-04-21
  • 打赏
  • 举报
回复
TStringStream
yangwe101860 2006-04-21
  • 打赏
  • 举报
回复
我是这样尝试的。然后我这样调用InXMLDoc.LoadFromStream(m);应该可以把?
为什么程序运行错误。好象还是内存地址的错误。?
柯本 2006-04-21
  • 打赏
  • 举报
回复
当然,临时变量p可不要,直接写:
m.Write(pchar(x)^,length(x));
柯本 2006-04-21
  • 打赏
  • 举报
回复
我的一般作法:
var
x:string;
m:tmemorystream;
p:pchar;
begin
m:=tmemorystream.Create;
x:='234234234234';
p:=pchar(x); // 将string转成pchar
m.Write(p^,length(x)); //写入TStream
...

end;
cuteant 2006-04-21
  • 打赏
  • 举报
回复
在delphi里不等号怎么写啊?
-------------
<>
wqlmljr 2006-04-21
  • 打赏
  • 举报
回复
在delphi里不等号怎么写啊?
dabaicai 2006-04-21
  • 打赏
  • 举报
回复
反了,呵呵,是
kk := TStringStream.Create(ss);
dabaicai 2006-04-21
  • 打赏
  • 举报
回复
var
ss : String;
kk : TStringStream; //把你的流转成这个就可以了
beign
ss := kk.DataString
end
通常方法
柯本 2006-04-21
  • 打赏
  • 举报
回复
我的问题:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
m:tmemorystream;
InXMLDoc:TXMLDocument;
begin
m:=tmemorystream.Create;
s:='<UI><String Id="L_FeedbackLink_TEXT">Send feedback to Microsoft</String></UI>';
m.Write(pchar(s)^,length(s));
//写入TStream
InXMLDoc:=TXMLDocument.Create(self); //你不会没有建吧?
InXMLDoc.LoadFromStream(m);
memo1.Lines:=InXMLDoc.XML;
...
end;

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧