在Delphi中读取以注释开头的INI文件部分将返回一个空列表
简化的Delphi代码:在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
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解析器,分号后面的行包括该行后面的两行。使用十六进制查看器检查正在使用的线条端点。