通常,文本流用来读写标准的文本文件,或者将字符输出到屏幕或打印机,或者接受键盘的输入;而二进制流用来读写二进制文件(例如图形或字处理文档),或者读取鼠标输入,或者读写调制解调器
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欢迎分享,转载请注明来源:内存溢出
评论列表(0条)