Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Delphi中读取以注释开头的INI文件部分将返回一个空列表_Delphi_Ini - Fatal编程技术网

在Delphi中读取以注释开头的INI文件部分将返回一个空列表

在Delphi中读取以注释开头的INI文件部分将返回一个空列表,delphi,ini,Delphi,Ini,简化的Delphi代码: var AppSettings: TIniFile; Camera: TStringList; begin AppSettings := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); Camera := TStringList.Create; AppSettings.ReadSectionValues('Camera', Camera); F

简化的Delphi代码:

var
    AppSettings: TIniFile;
    Camera: TStringList;

begin
    AppSettings := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
    Camera := TStringList.Create;

    AppSettings.ReadSectionValues('Camera', Camera);

    FreeAndNil(Camera);
    FreeAndNil(AppSettings);
end;
简化的INI文件内容:

[Camera]
; A commented line
SomeKey=SomeValue
AnotherKey=AnotherVal
目前,
TStringList
是空的,因为INI部分开头有注释行,但我希望计数为2

在Delphi中存在注释行(
)的INI文件中,有没有加载这些段的方法


我在Windows10上使用Delphi10.3.2。INI文件的行尾是
#13#10
\r\n
)。

在上面的示例中,刚刚用
TMemIniFile
替换了
TIniFile
,现在
ReadSectionValues
返回正确的结果。

在Delphi 10.3.2中工作良好。请指出您正在使用的版本。在Delphi10.2.3和Delphi2007中也可以正常工作。但我记得在过去的一些时候,我对
TIniFile
也有同样的问题。当我使用
TMemIniFile
时,它工作得非常完美!也许它与inifile中的行尾(LF vs CRLF)有关?您应该始终使用TMemIniFile来避免TIniFile基于这两种API的不推荐和严重闪烁的API,TIniFile(和TMemIniFile)忽略(保存时删除)所有以类似冒号开头的行。这是一个很大的麻烦,但不应该是导致问题的原因。在您的情况下,我怀疑INI文件没有使用正确的行结尾,因此对于INI解析器,分号后面的行包括该行后面的两行。使用十六进制查看器检查正在使用的线条端点。