例如ini中内容为(每一个小节中有几行数据没规律):
[001]
a=001
g=ifud
[002]
a=002
b=ass
[003]
a=003
b=asdas
c=dfdf
[004]
a=004
b=df
c=uyiu
d=kfd
[005]
a=005
b=sdd
c=dfdf
d=fsdf
e=sjfdhsd我现在要删除其中一个小节(以小节 [002] 为例),但是 删除后,小节名还要按顺序排列,即(删除后需要效果):
[001]
a=001
g=ifud
[002]      //原来为[003]
a=003
b=asdas
c=dfdf
[003]      //原来为[004]
a=004
b=df
c=uyiu
d=kfd
[004]      //原来为[005]
a=005
b=sdd
c=dfdf
d=fsdf
e=sjfdhsd由于 TiniFile 不能直接改 小节名(或者我不知,请告知),我想到先用TiniFile删除相应小节。再用StringList读入文件内容,一行一行的找小节名,再修改需要修改的。
个人感觉比较麻烦,而且文件较大的话会不会很慢?谁能提供方便快捷的方法不?谢谢。

解决方案 »

  1.   

    别用Ini文件了,缺点比较多,看你想对其中进行删除,还有排序的要求,这些直接用Ini文件比较麻烦,还是用数据库吧,Access数据库就可以了,不用BDE,不用其它驱动,使用ADO连接,速度快,也方便。
      

  2.   

    ini文件的主要用途是存储相关的配置信息,因此文件不宜过大。如果项目众多,可以考虑分开多个ini文件存储。TStringList使用二分法查找,如果在1万行以内速度还是可以的。当要设置TStringList中的sorted := True才可以。当然,你也考虑选择使用THashStringList,他在IniFiles单元,速度应该够用,使用方法同TStringList类似!
      

  3.   

    谢谢2楼先我先查查 ‘TStringList使用二分法查找’和‘THashStringList’,有问题再来请教
      

  4.   

    to  wooden954 :
    设置TStringList中的sorted := True之后,再修改,再保存,ini原先的格式,被破坏了啊(即它保存时,是按照sort后的样子保存的啊),达不到 我的要求啊
      

  5.   

    上面 写错了, 不是 'to  wooden954 :'   应该是 'to SmallHand'   。。
      

  6.   

    ini文件改名只能是先复制一份,再删除原来的
      

  7.   

    小节的改名:先复制该节内容(所有的key=value),再删除该节,再以新节名+旧内容新建该节
    不过,为什么要改名呢?
    可以把所有节名按顺序加到一个专门的节作为索引
    [index]
    count=10
    1=无须改名的唯一的节名xxx
    2=无须改名的唯一的节名yyy
    ...
    10=无须改名的唯一的节名zzz
    删除、改顺序,只要对这个节进行修改就行了