delphi 怎么将一个文件流转换成字符串?


本文整理自网络,侵删。

  
//from  
http://kingron.myetang.com/zsfunc0d.htm  

(*//  
标题:充分利用pascal字符串类型  
说明:和PChar不同,string可以保存#0字符在其中;示例文件、内存流字符串之间转换  
设计:Zswang  
日期:2002-01-25  
支持:wjhu111@21cn.com  
//*)  

///////Begin   Source  
function   StringToFile(mString:   string;   mFileName:   TFileName):   Boolean;  
{   返回字符串保存到文件是否成功   }  
var  
vFileChar:   file   of   Char;  
I:   Integer;  
begin  
{$I-}  
AssignFile(vFileChar,   mFileName);  
Rewrite(vFileChar);  
for   I   :=   1   to   Length(mString)   do   Write(vFileChar,   mString[I]);  
CloseFile(vFileChar);  
{$I+}  
Result   :=   (IOResult   =   0)   and   (mFileName   <>   '');  
end;   {   StringToFile   }  

function   FileToString(mFileName:   TFileName):   string;  
{   返回从文件载入字符串   }  
var  
vFileChar:   file   of   Char;  
vChar:   Char;  
begin  
Result   :=   '';  
{$I-}  
AssignFile(vFileChar,   mFileName);  
Reset(vFileChar);  

while   not   Eof(vFileChar)   do   begin  
Read(vFileChar,   vChar);  
Result   :=   Result   +   vChar;  
end;  
CloseFile(vFileChar);  
{$I+}  
end;   {   FileToString   }  

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   }  
///////End   Source  

///////Begin   Demo  
procedure   TForm1.Button1Click(Sender:   TObject);  
var  
vMemoryStream:   TMemoryStream;  
begin  
Memo1.Text   :=   FileToString('C:\WINDOWS\Desktop\1.txt');  
vMemoryStream   :=   TMemoryStream.Create;  
try  
Memo1.Lines.SaveToStream(vMemoryStream);  
Memo2.Text   :=   StreamToString(vMemoryStream);  
finally  
vMemoryStream.Free;  
end;  
end;  

procedure   TForm1.Button2Click(Sender:   TObject);  
var  
vMemoryStream:   TMemoryStream;  
begin  
StringToFile(Memo2.Text,   'C:\WINDOWS\Desktop\1.txt');  
vMemoryStream   :=   TMemoryStream.Create;  
try  
StringToStream(Memo2.Text,   vMemoryStream);  
vMemoryStream.Position   :=   0;  
Memo1.Lines.LoadFromStream(vMemoryStream);  
finally  
vMemoryStream.Free;  
end;  
end;  
///////End   Demo  

相关阅读 >>

Delphi firedac 下的 sqlite [9] - 关于排序

Delphi n个字符串替换成1个字符串

Delphi 清除字符串两边空格或指定字符

Delphi实现阿里云印刷文字识别_身份证识别

Delphi中destroy, free, freeandnil, release用法和区别

Delphi 隐藏文件夹

Delphi txt编码互转 ansi utf-8

Delphi trystrtoint字符转换成整数

Delphi stringgrid 实例4 本例功能: 1、给每个单元格赋值 2、调整当前单元格位置:上下左右;

Delphi 线程中修改主窗体的控件内容

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...