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

nle07wnf  于 2023-01-31  发布在  Windows
关注(0)|答案(7)|浏览(119)

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

[Section]
Name=Value   ; comment

; full line comment

还有,是否有适当的.INI文件格式规范?

  • 感谢您的回复 * -不过可能我还不够清楚。我只对Windows API调用读取的格式**感兴趣。我知道其他实现允许注解,但我需要了解的是MS Windows规范和实现。
zed5wv10

zed5wv101#

Windows INI API支持:

      • 行注解**:是,使用分号**;**
      • 结尾注解:**否

权威来源是从INI文件读取值的Windows API函数
∮ ∮ ∮
从初始化文件的指定节中检索字符串。

  • "整行注解"* 起作用的原因是请求的值不存在。例如,在解析以下ini文件内容时:
[Application]
UseLiveData=1
;coke=zero
pepsi=diet   ;gag
#stackoverflow=splotchy

读取数值:

  • UseLiveData1
  • coke:* 不存在 *
  • ;coke:* 不存在 *
  • pepsidiet ;gag
  • stackoverflow:* 不存在 *
  • 一个月九个月一个月:一个月十个月一个月
    • 更新**:我曾经认为数字符号(#)是伪行注解字符。使用前导#隐藏stackoverflow的原因是名称stackoverflow不再存在。结果发现分号(;)*行注解。

但是不支持尾随注解。

u2nhd7ah

u2nhd7ah2#

我在ini文件中看到过注解,所以是的。请参考this Wikipedia article。我找不到官方规范,但那是注解的正确语法,就像我记得的那样,许多游戏ini文件都有这个。

    • 编辑**

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

ajsxfq5m

ajsxfq5m3#

    • 在行开头使用分号---〉〉;〈〈——-**

前。

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

iezvtpos4#

@Ian Boyd的the analysis我很喜欢,因为它是基于微软官方的GetPrivateProfileString()方法。
在我尝试写一个微软兼容的INI解析器,我有一个closer look在说微软API和for comments我发现:

  • 行注解可以使用分号
  • 分号不必是行的第一个字符;它前面可以是空格、制表符或垂直制表符
  • 你可以在一个部分后面加上"注解",即使没有分号。它可能不是注解,但是解析器会忽略它。
  • 节之外的值无法访问(至少我没有找到方法),这实际上使它们除了用于注解之外毫无用处
  • 当然是滥用,但是解析器在65536个字符处溢出,所以之后的任何内容也不会是值的一部分。我不会依赖于此,因为Microsoft可以在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
5uzkadbs

5uzkadbs6#

是的,它允许。
评论的方式是**使用;**用于新行,而不是在同一行中您要注解的内容之后,这对于您要注解的其他文件是允许的。
让我给你们看一个例子:
当我使用SUMO软件时,我使用. ini文件来传递一些参数给我的训练文件。如果我这样写:

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

我将收到一条错误消息
ValueError:对于以10为基数的int(),文本无效:'400;神经网络中每层的神经元数目。'
我必须为此创建一条线,即

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

然后,它会起作用的。希望它在细节上有帮助!

55ooxyrt

55ooxyrt7#

本备忘录的状态
本文档为Internet社区指定了Internet标准跟踪协议,并请求讨论和改进建议。有关此协议的标准化状态和状态,请参阅当前版本的"Internet官方协议标准"(STD 1)。此备忘录的分发不受限制。
版权声明
版权所有(C)互联网协会(1999)。保留所有权利。
摘要
HTML [RFC 1866]定义了一种强大的指定多媒体文档的方法,这些多媒体文档由一个text/html根资源组成(目标)和其他附属资源(图像、视频剪辑、applet等对象)由统一资源标识符引用(URI)。当浏览器检索HTML多媒体文档时,这些组件资源中的每一个都是从由每个URI指定的位置并使用由每个URI指定的协议来实时地单独检索的。
为了在单个电子邮件消息中传输完整的HTML多媒体文档,必须:a)将文本/html根资源及其引用的所有辅助资源聚集到单个复合消息结构中,以及b)定义文本/html根中的URI可以引用该复合消息结构内的辅助资源的手段。
本文档a)定义了使用MIME多部分/相关结构来聚集text/html根资源及其引用的辅助资源,以及b)指定了MIME内容报头(Content-Location),其允许多部分/相关text/html根主体部分中的URI引用相同多部分/相关结构的其他主体部分中的辅助资源。

相关问题