怎么样将一个文件流转换为二进制的字符串

怎么样将一个文件流转换为二进制的字符串,第1张

流可以分为两种类型:文本流和二进制流。文本流是解释性的,最长可达255个字符,其中回车/换行将被转换为换行符“\n”,(如果以"文本"方式打开一个文件,那么在读字符的时候,系统会把所有的"\r\n"序列转成"\n",在写入时把"\n"转成"\r\n"archim 's opinion)。二进制流是非解释性的,一次处理一个字符,并且不转换字符。

通常,文本流用来读写标准的文本文件,或者将字符输出到屏幕或打印机,或者接受键盘的输入;而二进制流用来读写二进制文件(例如图形或字处理文档),或者读取鼠标输入,或者读写调制解调器

function StringToFile(mString: stringmFileName: TFileName): Boolean{ 返回字符串保存到文件是否成功 } var vFileChar: file of CharI: Integerbegin {$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 CharvChar: Charbegin Result := ''{$I-} AssignFile(vFileChar, mFileName)Reset(vFileChar)while not Eof(vFileChar) do begin Read(vFileChar, vChar)Result := Result + vCharendCloseFile(vFileChar){$I+} end{ FileToString } function StreamToString(mStream: TStream): string{ 将内存流转换成字符串 } var I: Integerbegin Result := ''if not Assigned(mStream) then ExitSetLength(Result, mStream.Size)for I := 0 to Pred(mStream.Size) do try mStream.Position := ImStream.Read(Result[Succ(I)], 1)except Result := ''endend{ StreamToString } function StringToStream(mString: stringmStream: TStream): Boolean{ 返回将字符串保存到内存流是否成功 } var I: Integerbegin Result := Truetry mStream.Size := 0mStream.Position := 0for I := 1 to Length(mString) do mStream.Write(mString[I], 1)except Result := Falseendend{ StringToStream } ///////End Source ///////Begin Demo procedure TForm1.Button1Click(Sender: TObject)var vMemoryStream: TMemoryStreambegin Memo1.Text := FileToString('C:\WINDOWS\Desktop\1.txt')vMemoryStream := TMemoryStream.Createtry Memo1.Lines.SaveToStream(vMemoryStream)Memo2.Text := StreamToString(vMemoryStream)finally vMemoryStream.Freeendendprocedure TForm1.Button2Click(Sender: TObject)var vMemoryStream: TMemoryStreambegin StringToFile(Memo2.Text, 'C:\WINDOWS\Desktop\1.txt')vMemoryStream := TMemoryStream.Createtry StringToStream(Memo2.Text, vMemoryStream)vMemoryStream.Position := 0Memo1.Lines.LoadFromStream(vMemoryStream)finally vMemoryStream.Freeendend///////End Demo


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11496473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存