首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

集合类型的变量怎么写入ini文件

2012-04-04 
集合类型的变量如何写入ini文件?集合类型的变量如何写入ini文件?大家有没有好办法?[解决办法]集合要看集合

集合类型的变量如何写入ini文件?
集合类型的变量如何写入ini文件?大家有没有好办法?

[解决办法]
集合要看集合的长度,
1.如果位数<=32位,用Integer代替,
2.如果>32,可以考虑用流来处理,
也可以考虑先转换成字符串,再转换成可见字符然后保存,读的时候逆向,分别给出代码,

Delphi(Pascal) code
//<=32位的情况Type  TMyType  = (mtA1,mtA2,mtA3,mtA4,mtA5); //这样定义只有5位,因此可以用整数保存  TMyTypes = Set of TMyType;  PMyTypes = ^TMyTypes;procedure SaveIt(Ini : TIniFile; MyTypes : TMyTypes);var  n : integer;begin  n := 0;  //高位清0  PMyTypes(@n)^ := MyTypes;  Ini.WriteInteger('Root' , 'MyTypes' , n);end;Function ReadIt(Ini : TIniFile) : TMyTypes;var  n : integer;begin  n := Ini.ReadInteger('Root' , 'MyTypes' , 0);  Result := PMyTypes(@n)^;end;//>32位时Type  TMyType  = 0..100; //这样定义有101位,需要用Bin存储  TMyTypes = Set of TMyType;  PMyTypes = ^TMyTypes;procedure SaveIt(Ini : TIniFile; MyTypes : TMyTypes);var  MS : TMemoryStream;begin  MS := TMemoryStream.Create;  MS.SetSize(SizeOf(TMyTypes));  MS.WriteBuffer(MyTypes , SizeOf(TMyTypes));  MS.Position := 0;  Ini.WriteBinaryStream('Root', 'MyTypes' , MS);  MS.Free;end;Function ReadIt(Ini : TIniFile) : TMyTypes;var  MS : TMemoryStream;begin  MS := TMemoryStream.Create;  MS.SetSize(SizeOf(TMyTypes));  MS.Position := 0;  Ini.ReadBinaryStream('Root', 'MyTypes' , MS);  MS.Position := 0;  MS.Read(Result , SizeOf(TMyTypes));  MS.Free;end; 

热点排行