//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. c# 课堂总结7--函数

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

  2. 在MAC系统里添加开机启动任务(但是怎么才能知道自己程序的固定位置呢?)

    公司最近购进了几台MAC台式电脑,要在上面为一个项目做测试. MAC这么高大上的东西,还是第一次接触,折腾了半天好不容易安装了一些需要的应用服务上去,跑了一下还不错. 公司提倡节约用电,下班之后要把所 ...

  3. Qt学习之路(54): 自定义拖放数据对象

    前面的例子都是使用的系统提供的拖放对象 QMimeData 进行拖放数据的存储,比如使用 QMimeData::setText() 创建文本,使用 QMimeData::urls() 创建 URL 对 ...

  4. eclipse中使用maven插件的时候,运行run as maven build/clean的时候报错

    -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a ...

  5. 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET

    解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET 解决基于BAE python+bottle开发上的一系列问题 分类: python ...

  6. DFS深搜——Red and Black——A Knight&#39;s Journey

    深搜,从一点向各处搜找到全部能走的地方. Problem Description There is a rectangular room, covered with square tiles. Eac ...

  7. [poj 1265]Area[Pick定理][三角剖分]

    题意: 给出机器人移动的向量, 计算包围区域的内部整点, 边上整点, 面积. 思路: 面积是用三角剖分, 边上整点与GCD有关, 内部整点套用Pick定理. S = I + E / 2 - 1 I 为 ...

  8. excel通过转成xml格式模板,下载成excel文件

    源代码: report ztest_down_excel. data: begin of i_file occurs , val() type c, end of i_file. data begin ...

  9. winform 防止主界面卡死

    总结网络上的解决方案:新线程=> 委托=> 主界面的异步更新方法(IAsyncResult BeginInvoke(Delegate method)),一句话就是通过委托调用另一个线程的异 ...

  10. jsp 分页(数据库读取数据)

    <%@ page contentType="text/html; charset=gb2312"%> <%@ page language="java&q ...