修改INI文件失败,为什么会这样?

hgb_kkh 2003-09-22 08:58:26
源码如下:
procedure TForm1.EndBClick(Sender: TObject);
var
FileName : string;
tempini : TIniFile;
begin
FileText.SaveToFile('temp.ini');
FileText.Free;
tempini := TIniFile.Create('temp.ini');
if (UnpackIndex-1>0)then
tempini.WriteInteger(ValueE.Text,'IFIELDS'+ValueE.Text,UnpackIndex-1);
if (PackupIndex-2>0)then
tempini.WriteInteger('PACKUP'+ValueE.Text,'OFIELDS'+ValueE.Text,PackupIndex-1);
showmessage('FIELDS = '+tempini.ReadString(ValueE.Text,'IFIELDS'+ValueE.Text,''));
tempini.Free;
FileText := TStringList.Create;
FileText.LoadFromFile('temp.ini');
end;

其中生成一个temp.ini文件,其中的正确格式如下:
[UNPACK]
KEYPOS =2
KEYLENGTH =4
[0004]
IFIELDS0004 =4


IFIELD00041STARTPOS =2
IFIELD00041LENGTH =4
IFIELD00041TYPE =0


IFIELD00042STARTPOS =6
IFIELD00042LENGTH =8
IFIELD00042TYPE =0


IFIELD00043STARTPOS =17
IFIELD00043LENGTH =1
IFIELD00043TYPE =0


IFIELD00044STARTPOS =20
IFIELD00044LENGTH =14
IFIELD00044TYPE =0

但是程序执行后,“FIELDS0004”一行只有“FIELDS0004=”而值没有赋上。
不过 showmessage('FIELDS = '+tempini.ReadString(ValueE.Text,'IFIELDS'+ValueE.Text,''));
却能显示 "FIELDS = 4",
请教大侠我应该如何是好?
...全文
241 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hgb_kkh 2003-09-22
  • 打赏
  • 举报
回复
re: idilent(成为星星的同时,露出菜鸟的实质)
Thanks!
果真要改成“tempini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'temp.ini');”
再次多谢!
hgb_kkh 2003-09-22
  • 打赏
  • 举报
回复
re: idilent(成为星星的同时,露出菜鸟的实质)
FileText是一个TstringList变量(全局变量),
那个ini文件在“FileText.SaveToFile('temp.ini');”时存放在当前目录,
为什么直接“tempini := TIniFile.Create('temp.ini');”不行呢?
idilent 2003-09-22
  • 打赏
  • 举报
回复
好象是没有找到你的ini文件,你把这个ini放在那里了呢?
如果是exe所在目录的话,这样使用
tempini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'temp.ini');

不知道
FileText.SaveToFile('temp.ini');
FileText.Free;这个是做什么的
Storm2008 2003-09-22
  • 打赏
  • 举报
回复
gz
bxh2dai 2003-09-22
  • 打赏
  • 举报
回复
哈哈,看不懂啊,给你顶啊
klbt 2003-09-22
  • 打赏
  • 举报
回复
超长的问题,帮你顶。
解决办法就是重新生成性能计数器库值,具体如下: 1)从Window XP 或 Windows 2003 光盘中提出"PERFC009.DA_文件"PERFH009.DA_"文件,通常它们位于光盘的 \i386 目录中,然后进入cdm,键入下面的命令分别展开它们: expand perfc009.da_ expand perfh009.da_ 然后把展开出来的 perfc009.dat 和 perfh009.dat 替换 windows\system32\ 下的同名文件。    展开方式如下:    2)启动注册表编辑器,然后在注册表中查找以下项: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib 将"LastCounter"值更改为 1846(十进制),并将"LastHelp"值更改为 1847(十进制)。    3)继续找到以下注册表项 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services 如果存在 Performance 子项,则删除以下值: ? FirstCounter ? FirstHelp ? LastCounter ? LastHelp    4)打开cmd, 键入 cd %Systemroot%\System32 findstr drivername *.ini 然后按 Enter。 注意列表中每个驱动程序名称所对应的 .ini 文件名。 在命令提示符处,键入下面一行,然后按 Enter: lodctr inifile 其中,inifile 是对应您要重新加载的驱动程序的 .ini 文件名。 例如,如果打算重新加载 ASP 驱动程序,则第 4 步中出现的列表将显示 Axperf.ini 是用于 ASP 驱动程序的 .ini 文件 (axperf.ini:drivername=ASP)。因此,要重新加载 ASP 驱动程序,请在命令提示符处键入 lodctr axperf.ini,然后按 Enter。 下面我以 Windows XP 为例,把执行的步骤写上来,建一个bat文件,复制进去执行就可以了。 lodctr esentprf.ini lodctr mqperf.ini lodctr msdtcprf.ini lodctr perfci.ini lodctr perffilt.ini lodctr perfwci.ini lodctr pschdprf.ini lodctr rasctrs.ini lodctr rsvp.ini lodctr tslabels.ini pause    5)重新启动计算机。 最后还是cmd: cd \windows\system32 lodctr /R 注意:/R 是大写。 这时,已经可以看到性能计数器库值已完成了重新生成。   再来看看sql server 2008的安装,一切正常 细节和需要注意的地方,请参考微软支持(http://support.microsoft.com/kb/300956/zh-cn)   如果出现下面这种情况   退后两步,设置成 就行了   再回去看看 一切正常

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧