急啊,能否把INI的数据转成二进制文件,然后再用读二进制文件的方式读出来,保持数据的准确。
换句话说就是把INI文件转成二进制文件。
最近做开发,用INI写UI,发现当INI文件多了且每个INI文件数据很多时有几百K,加载时,特别慢。
所以小弟想把INI文件转成二进制文件,再读出来,速度会快很多。
不知道怎么转,向各位高手请教。
换句话说就是把INI文件转成二进制文件。
最近做开发,用INI写UI,发现当INI文件多了且每个INI文件数据很多时有几百K,加载时,特别慢。
所以小弟想把INI文件转成二进制文件,再读出来,速度会快很多。
不知道怎么转,向各位高手请教。
解决方案 »
- 第3方控件Ehlib3.0和DevExpress QuantumGridSuite3.2.2是否收费?
- 货币转换成大写字符 问题
- 如何求两个datetime组件的time之差的?
- 我现在在上海,下个月又要回深圳找工作了,但又看到深圳的治安,很是害怕啊,同是一个外来人口很多的城市,为什么上海的治安就是要比深圳
- 简单问题,在线等待
- 有没有在烟台打外包的程序员
- 中秋大送分,祝大家节日快乐,心想事成!!
- 关于dbgrid的数据更新问题,各位帮帮忙。
- 关天active 控件发部问题!
- 如何激发另一个应用程序窗口中的隐藏按钮事件?
- fastreport 设计 在MasterData中加入memo 为什么不显示memo所绑定的字段
- Delphi,VS2008如何自定义窗体控件?
BIN方式不适合编辑
既然你已经几百K大了改成二进制也小不到哪去不行的话把配置存xml或者数据库。
可以用xml
或者自己定义结构,来存储ui信息,保存时用stream去保存,读出时,根据结构来读取比如
TInfo = record
Caption : array [0..99] of char;
Left : integer;
Top : integer;
.
.
.
end;
才几百k的东西,还有人想到数据库服了,用得到这么大动干戈么。
xml比ini解析的慢。
或者楼主保存这种格式纯文本就可以
value1=123
value2=456
用TStringList读写就可以,还简单,TStringList就是一次性把文件读到内存中的。
可问题是在存储时,ini的数据老是要报错,我不知道是怎么回事,难道INI的数据不能直接存为二进制文件吗?需要写什么转换函数吗?
怎么写啊?
现在用XML或数据库来不及了,我只能用INI的数据进行转换。
几百k其实也不算大,全加载到内存如果不算寻道和缓存的时间(第一次加载的时候会比较慢),就算开着杀毒软件也就毫秒级的
如果慢的话恐怕不是io的问题,而是数据结构的问题
我就想解决第一次加载慢的问题。
关于结构问题,没办法,参数很多,而且对应不同的控件,一个控件至少50个参数,加起来至少600个参数。
我的结构是
GamePnInfo = packed record
count1 : Integer;
Info : array[0..PNCOUNT-1] of GamePn;
end; GameButtonInfo = packed record
count2 : Integer;
buttonInfo : array[0..BUTTONNUM-1] of GameButton;
end; GameeditInfo = packed record
count3 : Integer;
EditInfo : array[0..EDITNUM-1] of Gameedit;
end; GamecheckInfo = packed record
count4 : Integer;
checkInfo : array[0..CHECKBOXNUM-1] of Gamecheckbox;
end; GameScrollBarInfo = packed record
count5 : Integer;
ScrollBarInfo : array[0..SCRBALLNUM-1] of GameScrollBar;
end; GamelabelsInfo = packed record
count6 : Integer;
labelsInfo : array[0..LABELNUM-1] of Gamelabels;
end; GameProgressBarInfo = packed record
count7 : Integer;
ProgressBarInfo : array[0..PROSSBARNUM-1] of GameProgressBar;
end; GameImageInfo = packed record
count8 : Integer;
ImageInfo : array[0..IAMAGENUM-1] of GameImage;
end; GameMemoInfo = packed record
count9 : Integer;
MemoInfo : array[0..MEMONUM-1] of GameMemo;
end; GameGridInfo = packed record
count10 : Integer;
GridInfo : array[0..GRIDNUM-1] of GameGrid;
end;
GameGridItemInfo = packed record
count11 : Integer;
GridItemInfo : array[0..GRIDITEMNUM-1] of GameGridItem;
end; GameListBoxInfo = packed record
count12 : Integer;
ListBoxInfo : array[0..LISTBOXNUM-1] of GameListBox;
end;
GameListBoxItemInfo = packed record
count13 : Integer;
ListBoxItemInfo : array[0..LISTITEMCOUNT-1] of GameListBoxItem;
end; GameIni = packed record
IniFileName : string[50];
Pn1 : GamePnInfo;
button : GameButtonInfo;
edit : GameeditInfo;
checkbox : GamecheckInfo;
scrollbar : GameScrollBarInfo;
labels : GamelabelsInfo;
ProgressBar : GameProgressBarInfo;
Image : GameImageInfo;
Memo : GameMemoInfo;
Grid : GameGridInfo;
GridItem : GameGridItemInfo;
ListBox : GameListBoxInfo;
ListBoxItem : GameListBoxItemInfo;
end;GGameIni = packed record
headercount : Integer;
GIniFile : array[0..INIFILENUM-1] of GameIni;
end;