function StreamToString(mStream: TStream): string;
{ 将内存流转换成字符串 }
var
I: Integer;
begin
Result := '';
if not Assigned(mStream) then Exit;
SetLength(Result, mStream.Size);
for I := 0 to Pred(mStream.Size) do try
mStream.Position := I;
mStream.Read(Result[Succ(I)], 1);
except
Result := '';
end;
end; { StreamToString }function StringToStream(mString: string; mStream: TStream): Boolean;
{ 返回将字符串保存到内存流是否成功 }
var
I: Integer;
begin
Result := True;
try
mStream.Size := 0;
mStream.Position := 0;
for I := 1 to Length(mString) do mStream.Write(mString[I], 1);
except
Result := False;
end;
end; { StringToStream }
{ 将内存流转换成字符串 }
var
I: Integer;
begin
Result := '';
if not Assigned(mStream) then Exit;
SetLength(Result, mStream.Size);
for I := 0 to Pred(mStream.Size) do try
mStream.Position := I;
mStream.Read(Result[Succ(I)], 1);
except
Result := '';
end;
end; { StreamToString }function StringToStream(mString: string; mStream: TStream): Boolean;
{ 返回将字符串保存到内存流是否成功 }
var
I: Integer;
begin
Result := True;
try
mStream.Size := 0;
mStream.Position := 0;
for I := 1 to Length(mString) do mStream.Write(mString[I], 1);
except
Result := False;
end;
end; { StringToStream }
解决方案 »
- 请问谁知道C++中的COutputQueue在delphi中是什么
- delphi的第三方控件有没有可以用来识别文字的控件(扫描件中的文字)??
- 问大家一个容易被忽视的问题,一个有关结构体的问题,在线等待。。。 。。。
- FastReport的TfrMemoView问题
- 主从表的问题
- 大家有没有用过delphi7下面的RX控件。
- !1000分!我要一个算法,使用任何高级语言描述都行,要快!答对给1000分,UP的同志则平分100分。
- 《中国开发者联盟》 欢迎您的加入!
- Delphi7 打开程序 兼容问题 ppCtrls等pp打头的控件找不到
- delphi工具栏上的checkbox为什么有个像分割条的竖线
- 求:Delphi控件,输入Ip地址,就像VC的IP Address控件一样。
- 关于用友财务软件
我的想法和你第一个例子差不多,先把内容装在stream里,然后一个byte一个byte地放在缓冲里。我的代码是这样的:procedure TForm1.Button3Click(Sender: TObject);
var
sm:TMemoryStream;
buf:pchar;
i,count:integer;
begin
count:=length(memo1.Text ); //字数 //创建一个流,大小为count,装入memo1的内容
sm:=TMemoryStream.Create ;
sm.SetSize(count);
Memo1.Lines.SaveToStream(sm);
//创建一个缓冲区,大小也为count,写入流的内容
getmem(buf,count);
sm.Write(buf^,count); //一个字节一个字节地对缓冲区进行加密操作(这里简单地就是把每个字节都设 为char(97)),
for i:=0 to count-1 do
begin
buf[i]:=char(97); //这里加密,现在假设是变成char(97)
end;
//再把缓冲区的结果内容放回sm流,做为加密后的流
sm.Seek(0,soFromBeginning);
sm.Read(buf^,count); //把结果显示在memo1上,可是不对!
buf:=nil;
memo1.Lines.LoadFromStream(sm);
sm.Clear ;end;上面是我写的代码,有点乱,而且结果不对。缓冲区的每个字节都能按照预定的设好,但是返回到sm流后感觉就不对了。再Load到memo1上就更不对了。这是为什么?