我尝试从ini文件中获取值。 ini文件是:
[Database]
User=root
Pssword=lalalala
Server=localhost
Name=Prueba
我的代码程序是:
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程序是:
WriteLn('El usuario para la base de datos es:');
testManejoIniFile();
ReadLn;
cli总是返回:
El usuario para la base de datos es:
Algo anda mal ...
任何想法?。
答案 0 :(得分:9)
您没有具体说明TIniFile.Create
应该查找config.ini
文件的位置,因此默认情况下它在Windows目录中查找并找不到它,并返回您说应该返回的默认值
您需要指定config.ini
文件的位置。如果它与您的应用程序位于同一文件夹中,您可以使用ParamStr(0)
这样的Application.ExeName
或ExtractFilePath
获取路径(我添加了try..finally
以防范异常,并移动了WriteLn
,以便仅在ReadString
成功时才调用它:
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;