首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获得ini文件值

无法获得ini文件值
EN

Stack Overflow用户
提问于 2013-06-23 02:59:36
回答 1查看 1.9K关注 0票数 3

我试着从ini文件中得到一个值。ini文件是:

代码语言:javascript
复制
[Database]
User=root
Pssword=lalalala
Server=localhost
Name=Prueba

我的代码过程是:

代码语言:javascript
复制
procedure testManejoIniFile();
var
  iniFile: TIniFile;
  user: String;
begin
  {Abro el archivo ini}
  iniFile := TIniFile.Create('config.ini');
  user := iniFile.ReadString('Database','User','Algo anda mal...');
  iniFile.Free;
  WriteLn(user);
end;

调用该过程的cli程序是:

代码语言:javascript
复制
WriteLn('El usuario para la base de datos es:');
testManejoIniFile();
ReadLn;

cli总是返回:

El usuario para base de datos es: 阿尔戈·达·马尔..。

有什么主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-23 04:44:00

您并没有具体说明TIniFile.Create应该在哪里查找config.ini文件,因此它默认情况下查找的是config.ini目录,而不是找到它,而是返回您说它应该返回的默认值。

您需要指定config.ini文件的位置。如果它与应用程序位于同一个文件夹中,则可以使用类似于这样的ParamStr(0)Application.ExeNameExtractFilePath获得路径(我添加了一个try..finally来防范异常,并移动了WriteLn,以便只在ReadString成功的情况下调用):

代码语言:javascript
复制
procedure testManejoIniFile();
var
  iniFile: TIniFile;
  user: String;
  Path: string;
begin
  {Abro el archivo ini}
  Path := ExtractFilePath(ParamStr(0)); // Or Application.ExeName
  iniFile := TIniFile.Create(Path + 'config.ini');
  try
    user := iniFile.ReadString('Database','User','Algo anda mal...');
    WriteLn(user);
  finally
    iniFile.Free;
  end;
end;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17257350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档