108

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

[Section]
Name=Value   ; comment

; full line comment

而且,在任何地方都有适当的 .INI 文件格式规范吗?

感谢您的回复- 但是也许我不够清楚。这只是我感兴趣的 Windows API 调用读取的格式。我知道其他实现允许注释,但它特别是我需要了解的 MS Windows 规范和实现。

4

5 回答 5

116

Windows INI API 支持:

  • 行注释:是的,使用分号;
  • 尾随评论:

权威来源是从 INI 文件中读取值的 Windows API 函数

GetPrivateProfileString

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

“全行注释”起作用的原因是请求的值不存在。例如,在解析以下ini文件内容时:

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

读取值:

  • UseLiveData1
  • coke:不存在
  • ;coke:不存在
  • pepsidiet ;gag
  • stackoverflow:不存在
  • #stackoverflowsplotchy

更新:我曾经认为数字符号 (#) 是伪行注释字符。使用前导 # 进行隐藏stackoverflow的原因是该名称stackoverflow不再存在。事实证明,分号 ( ;)行注释。

但不支持尾随评论。

于 2013-10-23T18:55:37.167 回答
31

我在 INI 文件中看到了注释,所以是的。请参阅此维基百科文章。我找不到官方规范,但这是正确的注释语法,据我所知,很多游戏 INI 文件都有这个。

编辑

API 返回值和注释(在我的回复中忘记提到这一点),只需构建和示例 INI 文件并在此(带有注释)上调用 API,您可以看到它是如何返回的。

于 2009-09-04T09:45:10.807 回答
10

在行首使用分号 --->> ; <<---

前任。

; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Widgets Inc.
于 2018-04-06T12:47:36.823 回答
1

我喜欢@Ian Boyd的分析,因为它是基于微软官方的GetPrivateProfileString()方法。

在我尝试编写与 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
于 2021-12-21T09:11:20.523 回答
0

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

于 2009-09-04T09:45:49.150 回答