//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

http://www.delphitop.com/html/zifuchuan/1711.html

delphi 怎么将一个文件流转换成字符串(String到流,String到文件,相互转化)的更多相关文章

  1. C# 将字符串转化成流,将流转换成字符串

    using System; using System.IO; using System.Text; namespace CSharpConvertString2Stream { class Progr ...

  2. 文件流转换(一般用于axios设置接收文件流设置时responseType: 'blob')

    文件流转换 一般用于axios设置接收文件流设置时responseType: 'blob'当接口报错时,前端因已设置responseType: 'blob'无法再接收json格式数据,会把json格式 ...

  3. php 接收二进制流转换成图片

    php 接收二进制流转换成图片,图片类imageUpload.php如下: <?php /** * 图片类 * @author http://blog.csdn.net/haiqiao_2010 ...

  4. 用递归法将一个整数n转换成字符串。

    用递归法将一个整数n转换成字符串. 比如,输入483,应输出字符串"483".n的位数不确定,能够是随意位数的整数. #include "stdafx.h" # ...

  5. Android将图像转换成流存储与将流转换成图像

    1.将图片转换成二进制流 public byte[] getBitmapByte(Bitmap bitmap){ ByteArrayOutputStream out = new ByteArrayOu ...

  6. c++用递归法将一个整数n转换成字符串

    任务描述 用递归法将一个整数n转换成字符串.例如,输入483,应输出字符串“483”.n的位数不确定,可以是任意位数的整数. 测试输入: 预期输出: 程序源码: #include <stdio. ...

  7. Base64把图片、文件转码成字符串(互转)

    文件Base64以后会翻倍的涨,例如一张52kb的图片 base64以后string文件大小为185kb,在通过string转回图片为135kb   图片转文字: UIImage *_originIm ...

  8. js 一数组分割成若干个数组,并装换成字符串赋个li标签

    success: function (datas) { //请求成功后处理函数. var htmltext = ''; var data = datas.result; console.log(dat ...

  9. python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

随机推荐

  1. Elven Postman(二叉树)

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  2. 放开chrome,微度新标签页 删除

    来自VIc_:http://blog.csdn.net/Vic___ 本人只是提供方法建议,没有任何商业欲望. 欢迎转载 有一天,突然,我的标签栏,被改变了,这是怎么了,我的书签栏 我是一个镇定的人, ...

  3. c# 课堂总结7--函数

    函数:数据类型-变量类型-运算符号表达式-语句(顺序,分支,循环)-数字 程序里的函数:能完成一个相对独立功能的代码块.数学里的函数:高度抽象.函数四要素:函数名,输入(参数),输出(返回值类型),加 ...

  4. DotNet命名规范参考(转)

    来自:http://www.cnblogs.com/w-y-f/archive/2012/05/30/2526254.html DotNet命名规范参考 一.命名规范 注意事项:使用英文命名规则,尽量 ...

  5. Jquery学习笔记:获取jquery对象的基本方法

    jquery最大的好处是将js对html页面的操作(读写)进行了封装,隔离了浏览器的差异性,并简化了操作,和提供了强大的功能. 在web页面中,所有的js操作都是围绕操作dom对象来的.而jquery ...

  6. uva 10313 Pay the Price(完全背包)

    题目连接:10313 - Pay the Price 题目大意:有0~300这300种价值的金额. 现在可能给出参数: 1个:n, 输出可以组成价值n的方式的个数. 2个:n, a输出用个数小于a的价 ...

  7. POJ 2112 Optimal Milking (二分+最短路径+网络流)

    POJ  2112 Optimal Milking (二分+最短路径+网络流) Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K To ...

  8. Codeforces Round #272 (Div. 2)AK报告

    A. Dreamoon and Stairs time limit per test 1 second memory limit per test 256 megabytes input standa ...

  9. PHP - 使用pear的HTTP_Upload包进行上传

    前台代码: <html> <head> <title>上传文件</title> </head> <body> <form ...

  10. PHP - 类库

    常用的PHP类库,PHP开发者必备[转] PHP开发者常用的PHP类库和组件 PDF 生成器 FPDF - 这量一个可以让你生成PDF的纯PHP类库. Excel 相关 你的站点需要生成Excel?没 ...