标准的 windows. ini 文件允许注释吗?

Windows ini 文件中允许注释吗? (... 假设您使用 GetPrivateProfileString api 函数来读取它们...)

[Section]
Name=Value   ; comment


; full line comment

还有,有没有合适的.INI 文件格式规范?

谢谢你的回复 -然而,也许我不够清楚。我只对 由 WindowsAPI 调用读取格式感兴趣。我知道其他实现允许注释,但我需要了解的是 MSWindows 规范和实现。

157931 次浏览

I have seen comments in INI files, so yes. Please refer to this Wikipedia article. I could not find an official specification, but that is the correct syntax for comments, as many game INI files had this as I remember.

Edit

The API returns the Value and the Comment (forgot to mention this in my reply), just construct and example INI file and call the API on this (with comments) and you can see how this is returned.

是的。看看 维基百科INI 文件格式的 Cloanto 实现(见页面底部)。

Windows INI API 支持:

  • 行注释 : 是的,使用分号 < strong > ;
  • 后面的评论: No

权威源代码是从 INI 文件中读取值的 WindowsAPI 函数

GetPrivateProfileString

从初始化文件中的指定节检索字符串。

“全线评论”工作的原因是因为请求的值不存在。例如,在解析以下 ini文件内容时:

[Application]
UseLiveData=1
;coke=zero
pepsi=diet   ;gag
#stackoverflow=splotchy

Reading the values:

  • UseLiveData: 1
  • coke: not present
  • ;coke: 不在场
  • pepsi: diet ;gag
  • stackoverflow: 不在场
  • #stackoverflow: splotchy

更新 : 我曾经认为数字符号(#)是一个伪行注释字符。使用前导 # 隐藏 stackoverflow的原因是因为名称 stackoverflow不再存在。结果是分号(;) 是行注释。

但是没有支持后面的评论。

USE A SEMI-COLON AT BEGINING OF LINE --->> ; <<---

前女友。

; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Widgets Inc.

I like 分析 of @Ian Boyd, because it is based on the official GetPrivateProfileString () method of Microsoft.

在我尝试编写一个与 Microsoft 兼容的 INI 解析器时,我在上述 Microsoft API 和 征求意见上使用了一个 仔细看看,我发现:

  • 您可以使用分号进行行注释
  • 分号不一定是行的第一个字符,它可以在空格、制表符或垂直制表符之前
  • 即使没有分号,你也可以在一个部分后面加上“注释”。它可能不是注释,但是解析器会忽略它。
  • 部分之外的值不能被访问(至少我没有找到一种方法) ,实际上使它们除了用于注释之外没有用处
  • 当然是滥用的,但是解析器在65536个字符处溢出,所以之后的任何内容也不会成为值的一部分。我不会依赖这个,因为微软可以在以后的 Windows 版本中解决这个问题。而且,当你没有看到它的时候,它作为一个注释也不是很有用。

例如:

this=cannot be accessed
[section]this=is ignored
;this=is a line comment
;this=is a comment preceded by spaces
key=value                                <... 65530 spaces ...>this=cannot be parsed

Yes, it allows.

注释的方式是 使用; 新的系列,而不是仅仅在您想要在同一行中注释的内容之后,这对于您想要注释的其他文件是允许的。

让我给你们举个例子:

我吸毒。当我使用 SUMO 软件时,传递我的训练文件的一些参数。如果我这样写:

width_layers = 400 ;the number of neurons per layer in the neural network.

我会得到一个错误消息

ValueError: invalid literal for int() with base 10: '400 ;the number of neurons per layer in the neural network.'

我必须为此创建一条线,也就是

width_layers = 400
;the number of neurons per layer in the neural network.

然后,它将工作。希望它有助于详细!