社区
语言基础/算法/系统设计
帖子详情
关于INI文件转存为二进制文件
zhurui2001113
2009-02-22 09:11:25
急啊,能否把INI的数据转成二进制文件,然后再用读二进制文件的方式读出来,保持数据的准确。
换句话说就是把INI文件转成二进制文件。
最近做开发,用INI写UI,发现当INI文件多了且每个INI文件数据很多时有几百K,加载时,特别慢。
所以小弟想把INI文件转成二进制文件,再读出来,速度会快很多。
不知道怎么转,向各位高手请教。
...全文
351
14
打赏
收藏
关于INI文件转存为二进制文件
急啊,能否把INI的数据转成二进制文件,然后再用读二进制文件的方式读出来,保持数据的准确。 换句话说就是把INI文件转成二进制文件。 最近做开发,用INI写UI,发现当INI文件多了且每个INI文件数据很多时有几百K,加载时,特别慢。 所以小弟想把INI文件转成二进制文件,再读出来,速度会快很多。 不知道怎么转,向各位高手请教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yc_8301
2009-02-24
打赏
举报
回复
up
zhurui2001113
2009-02-23
打赏
举报
回复
而且我不只一 个INI文件,平均下来有100K大小,大概有40个INi文件,差不多4M大小
zhurui2001113
2009-02-23
打赏
举报
回复
我现在问题就是第一次加载时特别慢,加载以后,速度并不慢,是正常的。
我就想解决第一次加载慢的问题。
关于结构问题,没办法,参数很多,而且对应不同的控件,一个控件至少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;
Seamour
2009-02-23
打赏
举报
回复
文本文件是二进制文件的子集,ini本来就已经是二进制文件了,还怎么二进制。。。
几百k其实也不算大,全加载到内存如果不算寻道和缓存的时间(第一次加载的时候会比较慢),就算开着杀毒软件也就毫秒级的
如果慢的话恐怕不是io的问题,而是数据结构的问题
zhurui2001113
2009-02-23
打赏
举报
回复
我同意6楼的说法,我也是定义了结构的,问题是现在我INI文件是用来的读数据的,我想把读出来的数据存为二进制文件,再读出来。
可问题是在存储时,ini的数据老是要报错,我不知道是怎么回事,难道INI的数据不能直接存为二进制文件吗?需要写什么转换函数吗?
怎么写啊?
现在用XML或数据库来不及了,我只能用INI的数据进行转换。
僵哥
2009-02-22
打赏
举报
回复
可以试试TMemIniFile
ly_liuyang
2009-02-22
打赏
举报
回复
大的INI文件建议改为XML就可以了
BIN方式不适合编辑
不得闲
2009-02-22
打赏
举报
回复
同意楼上说法,INI到了几百K,就不合适了啊
genispan
2009-02-22
打赏
举报
回复
用XML吧 一般像这种数据都是用XML存储的 像配置文件之类 ...
hemiya
2009-02-22
打赏
举报
回复
把ini文件分散到不同的小ini文件中。
才几百k的东西,还有人想到数据库服了,用得到这么大动干戈么。
xml比ini解析的慢。
或者楼主保存这种格式纯文本就可以
value1=123
value2=456
用TStringList读写就可以,还简单,TStringList就是一次性把文件读到内存中的。
bdmh
2009-02-22
打赏
举报
回复
那就不要用ini存储了
可以用xml
或者自己定义结构,来存储ui信息,保存时用stream去保存,读出时,根据结构来读取
比如
TInfo = record
Caption : array [0..99] of char;
Left : integer;
Top : integer;
.
.
.
end;
preserve
2009-02-22
打赏
举报
回复
用TMemIniFile
既然你已经几百K大了改成二进制也小不到哪去
不行的话把配置存xml或者数据库。
IDtoID
2009-02-22
打赏
举报
回复
学习
嗷嗷叫的老马
2009-02-22
打赏
举报
回复
关注一下
直接读入内存再在内存里处理,应该会快得多....
java读写
二进制
文件
移动指针 seek_
文件
与
文件
夹操作
一、
文件
是什么
文件
是长久保存信息并允许重复使用和反复修改的重要方式,同时也是信息交换的重要途径。数据库
文件
、图像
文件
、音频视频
文件
、可执行
文件
、office文档、动态链接库
文件
等等,都以
文件
的形式存储在不同形式的存储设备(例如磁盘、优盘、光盘、云盘等等)上。
文件
都是按照2进制进行存储的,但在表现形式上有2种:文本
文件
和
二进制
文件
。(1)文本
文件
文本
文件
存储的是常规字符串,由若干文本行组成,通常每行...
MySQL
二进制
日志
文章目录mysql复制功能解决了什么问题mysql
二进制
日志
二进制
日志
二进制
日志的格式(段)
二进制
日志的格式(行)
二进制
日志的格式(混合)mysql
二进制
日志格式对复制的影响基于SQL语名的复制( SBR )优点缺点基于行的复制( RBR )优点缺点混合模式mysql复制工作方式基于日志点的复制基于日志点的复制配置步骤实际操作(yum安装的mysql 5.7)优点缺点基于GTID的复制基于GTID的配置步骤案例操作优点缺点选择复制模式要考虑的问题复制架构一主多从的架构拥有备库的主-主复制拓扑Mysql复制常
laravel 图片流_php接收
二进制
数据流转换成图片
* 图片类* @author Haroldphp@163.com* @version 1.0*PHP默认只识别application/x-www.form-urlencoded标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用$_POST数组来接收就会失败!故保留原型,交给$GLOBALS['HTTP_R...
java blob mysql_java实现插入mysql
二进制
文件
,blob类型,遇到问题及解决办法
首先是数据库建立要准备的:我们要把放置
二进制
字段设置为Blob类型,根据
文件
的大小选择合适的Blob类型,一下是各个Blob类型所能容纳
二进制
文件
的大小MySQL的四种BLOB类型类型 大小(单位:字节)TinyBlob 最大 255Blob 最大 65KMediumBlob 最大 16MLongBlob 最大 4G一下是具体操作代码:/**** 把
二进制
文件
(该
二进制
文件
可以是本地硬盘路径,也可...
Mysql8.0
二进制
ZIP包安装(Windows)
Mysql8.0
二进制
ZIP包安装(Windows) 大致步骤 1.下载
二进制
包 镜像下载地址: 中科大:https://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/ 阿里云:https://mirrors.aliyun.com/mysql/MySQL-8.0/ 清华大学:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/ 2.解压到指定路径下 3.进入解压的
文件
下
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章