delphi 怎么将一个流转换成字符串?
2017-09-19 20:54
399 查看
//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
(*//
标题:充分利用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 怎么将一个流转换成字符串?或者将字符串转出一个流
- delphi 怎么将一个文件流转换成字符串(String到流,String到文件,相互转化)
- delphi 怎么将一个流转换成字符串?
- c#下怎么判断一个字符串是否可以转换为double类型
- 有一个字符串s,t,d,g,h,m怎么把他转换成数组然后排序!(split的使用)
- 在delphi中Val是一个将字符串转换为数字的函数
- 怎么判断一个字符串是整型?不能用正则表达式,也不能用convert强制转换,更不能用Parsint
- 怎么把一个字符串转换为汉字
- 网络通信中,DELPHI的string类型数据转换为C++字符串发送的一个陷阱
- sql语句中要查询一个字符串字段不为空怎么写
- java里面byte数组和String字符串怎么转换
- 将一个字符数组转换成一个字符串
- 将一个数字字符串转换成这个字符串对应的数字
- Newtonsoft.Json 转换DateTime类型为字符串时,串内部会有一个T。解决方案
- CString、char、string、int、_bstr_t、CTime、COleDateTime相互转换&amp;判断一个字符串是一个浮点数
- 输入一个表示整数的字符串,把该字符串转换成整数并输出
- 47、Java中怎么把字符串转换成日期格式啊
- c#怎么设置一个字符串中某个字符的颜色
- 输入一个表示整数的字符串,把该字符串转换成整数并输出。
- sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件