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

本文介绍了使用Pascal语言进行字符串处理的方法,包括字符串与文件、内存流之间的转换。通过具体的函数实现,展示了如何读写字符串到文件及内存流中。
  1. //from     
  2. http://kingron.myetang.com/zsfunc0d.htm     
  3.   
  4. (*//    
  5. 标题:充分利用pascal字符串类型    
  6. 说明:和PChar不同,string可以保存#0字符在其中;示例文件、内存流字符串之间转换    
  7. 设计:Zswang    
  8. 日期:2002-01-25    
  9. 支持:wjhu111@21cn.com    
  10. //*)     
  11.   
  12. ///////Begin   Source     
  13. function   StringToFile(mString:   string;   mFileName:   TFileName):   Boolean;     
  14. {   返回字符串保存到文件是否成功   }     
  15. var     
  16. vFileChar:   file   of   Char;     
  17. I:   Integer;     
  18. begin     
  19. {$I-}     
  20. AssignFile(vFileChar,   mFileName);     
  21. Rewrite(vFileChar);     
  22. for   I   :=   1   to   Length(mString)   do   Write(vFileChar,   mString[I]);     
  23. CloseFile(vFileChar);     
  24. {$I+}     
  25. Result   :=   (IOResult   =   0)   and   (mFileName   <>   '');     
  26. end;   {   StringToFile   }     
  27.   
  28. function   FileToString(mFileName:   TFileName):   string;     
  29. {   返回从文件载入字符串   }     
  30. var     
  31. vFileChar:   file   of   Char;     
  32. vChar:   Char;     
  33. begin     
  34. Result   :=   '';     
  35. {$I-}     
  36. AssignFile(vFileChar,   mFileName);     
  37. Reset(vFileChar);     
  38.   
  39. while   not   Eof(vFileChar)   do   begin     
  40. Read(vFileChar,   vChar);     
  41. Result   :=   Result   +   vChar;     
  42. end;     
  43. CloseFile(vFileChar);     
  44. {$I+}     
  45. end;   {   FileToString   }     
  46.   
  47. function   StreamToString(mStream:   TStream):   string;     
  48. {   将内存流转换成字符串   }     
  49. var     
  50. I:   Integer;     
  51. begin     
  52. Result   :=   '';     
  53. if   not   Assigned(mStream)   then   Exit;     
  54. SetLength(Result,   mStream.Size);     
  55. for   I   :=   0   to   Pred(mStream.Size)   do   try     
  56. mStream.Position   :=   I;     
  57. mStream.Read(Result[Succ(I)],   1);     
  58. except     
  59. Result   :=   '';     
  60. end;     
  61. end;   {   StreamToString   }     
  62.   
  63. function   StringToStream(mString:   string;   mStream:   TStream):   Boolean;     
  64. {   返回将字符串保存到内存流是否成功   }     
  65. var     
  66. I:   Integer;     
  67. begin     
  68. Result   :=   True;     
  69. try     
  70. mStream.Size   :=   0;     
  71. mStream.Position   :=   0;     
  72. for   I   :=   1   to   Length(mString)   do   mStream.Write(mString[I],   1);     
  73. except     
  74. Result   :=   False;     
  75. end;     
  76. end;   {   StringToStream   }     
  77. ///////End   Source     
  78.   
  79. ///////Begin   Demo     
  80. procedure   TForm1.Button1Click(Sender:   TObject);     
  81. var     
  82. vMemoryStream:   TMemoryStream;     
  83. begin     
  84. Memo1.Text   :=   FileToString('C:\WINDOWS\Desktop\1.txt');     
  85. vMemoryStream   :=   TMemoryStream.Create;     
  86. try     
  87. Memo1.Lines.SaveToStream(vMemoryStream);     
  88. Memo2.Text   :=   StreamToString(vMemoryStream);     
  89. finally     
  90. vMemoryStream.Free;     
  91. end;     
  92. end;     
  93.   
  94. procedure   TForm1.Button2Click(Sender:   TObject);     
  95. var     
  96. vMemoryStream:   TMemoryStream;     
  97. begin     
  98. StringToFile(Memo2.Text,   'C:\WINDOWS\Desktop\1.txt');     
  99. vMemoryStream   :=   TMemoryStream.Create;     
  100. try     
  101. StringToStream(Memo2.Text,   vMemoryStream);     
  102. vMemoryStream.Position   :=   0;     
  103. Memo1.Lines.LoadFromStream(vMemoryStream);     
  104. finally     
  105. vMemoryStream.Free;     
  106. end;     
  107. end;     
  108. ///////End   Demo  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值