向Ini文件中写入流数据
来源:互联网 发布:读文件 java 编辑:程序博客网 时间:2024/05/16 18:32
Delphi中使用Ini文件是非常方便的,很简单的就可以操作一个Ini文件。但是也存在着局限性,比如TIniFile的ReadString函数
最大只能读2047个字符,超过了的则读不出来,鉴于这个,很容易的修改,可以找到其ReadString函数,扩大其缓冲区则可。
同时还有一点不足之处就是,不能写入流。写入流有的时候,用处也是非常大的了。但是Ini文件却没有提供该函数,进日由于
工作中需要用到这样的东西,于是想了一个办法能够在Ini文件中读写流数据。发来与大家分享一下。
其实写入流数据也是输入字符串。众所周知,Ini文件中输入的字符串不能换行,否则换行后的字符串则成一个非有效的值了。
所以,把流数据当字符串输入的时候,就要防止其有换行符号,于是想到一个办法,先把他变成16进制字符串,然后在写入
这样就防止了换行。读出来,也就把16进制字符串再转换成二进制数据。
所以就需要如下几个函数了:
最大只能读2047个字符,超过了的则读不出来,鉴于这个,很容易的修改,可以找到其ReadString函数,扩大其缓冲区则可。
同时还有一点不足之处就是,不能写入流。写入流有的时候,用处也是非常大的了。但是Ini文件却没有提供该函数,进日由于
工作中需要用到这样的东西,于是想了一个办法能够在Ini文件中读写流数据。发来与大家分享一下。
其实写入流数据也是输入字符串。众所周知,Ini文件中输入的字符串不能换行,否则换行后的字符串则成一个非有效的值了。
所以,把流数据当字符串输入的时候,就要防止其有换行符号,于是想到一个办法,先把他变成16进制字符串,然后在写入
这样就防止了换行。读出来,也就把16进制字符串再转换成二进制数据。
所以就需要如下几个函数了:
- Function StreamToStr(Value: TStream): String; //流转化成16进制字符串
- Function StrToStream(Const aStr: String; Value: TStream): Integer;//16进制字符串化为流数据
- Function ReadStream(Const Section,aParamName: String; aValue: TStream): Integer;//读取流
- Procedure WriteStream(Const Section,aParamName: String; aValue: TStream);//写入流
- function TIniFile.StreamToStr(Value: TStream): String;
- begin
- result := PointToHex(TMemoryStream(Value).memory,Value.Size); //该函数我以前有写过,请看以前的帖子
- end;
- function TIniFile.StrToStream(const aStr: String;
- Value: TStream): Integer;
- Var
- Text: String;
- Stream: TMemoryStream;
- Pos: Integer;
- Begin
- Text := aStr;
- If Text <> '' Then
- Begin
- If Value Is TMemoryStream Then
- Stream := TMemoryStream(Value)
- Else
- Stream := TMemoryStream.Create;
- Try
- Pos := Stream.Position;
- Stream.SetSize(Stream.Size + Length(Text) Div 2);
- //转换成二进制流数据,看以前的帖子
- HexToBin(Text, Pointer(Integer(Stream.Memory) + Stream.Position), Length(Text) Div 2);
- Stream.Position := Pos;
- If Value <> Stream Then Value.CopyFrom(Stream, Length(Text) Div 2);
- Result := Stream.Size - Pos;
- Finally
- If Value <> Stream Then Stream.Free;
- End;
- End
- Else
- Result := 0;
- end;
- function TIniFile.ReadStream(const Section, aParamName: String;
- aValue: TStream): Integer;
- Var
- mValue: String;
- begin
- mValue := ReadString(Section,aParamName, '');
- Result := StrToStream(mValue, aValue);
- end;
- procedure TIniFile.WriteStream(const Section, aParamName: String;
- aValue: TStream);
- Var
- mValue: String;
- Begin
- mValue := StreamToStr(aValue);
- WriteString(Section,aParamName, mValue);
- end;
- 向Ini文件中写入流数据
- Delphi向Ini文件中写入流数据
- HttpURLConnection向Servlet写入流
- 向文件中写数据
- C++ 文件和流:如何从文件读取流和向文件写入流
- 向文件中写数据,读数据
- Java向Excel文件中写数据
- 向文件中写数据的方法
- BufferedWriter向文件中写数据
- Java向文件中写数据
- geoTools向shp文件中写数据
- 多线程向一个文件中写数据
- 向txt文件中写数据(每行三个数据)
- Linux中使用shell脚本向文件中写数据
- 向JSON文件中写数据和读数据
- dom4j向xml文件中写数据乱码问题解决
- 向HDFS 中写数据
- MFC中读取和写ini文件
- 读书之乐 摘自《致青年朋友》
- 总结JSP与servlet之间的传值
- [转贴]ParameterizedThreadStart,ThreadStart的使用,线程Thread传参数
- SVN服务器配置之 在Solaris9上安装apache
- 程序员保持身心健康的八种方式
- 向Ini文件中写入流数据
- 从"好"到"坏"
- 关注IT从业者的身体健康
- 教你如何成为一个Eclipse热键高手
- 解决Fedora linux 下 Rhythmbox中文显示乱码的问题
- USB-OTG
- 中国IT十大职业现状(经典)
- png中的crc32
- PHP实现通过Web执行C/C