programing

표준 윈도 .ini 파일은 코멘트를 허용합니까?

starjava 2023. 4. 17. 21:14
반응형

표준 윈도 .ini 파일은 코멘트를 허용합니까?

Windows ini 파일에서 코멘트가 허용됩니까? (...GetPrivateProfileString api 함수를 사용하여 코멘트를 읽는 경우...)

[Section]
Name=Value   ; comment

; full line comment

그리고 적절한 사양이 있습니까?INI 파일 포맷은?

답변 감사합니다. 하지만 아마 제가 충분히 이해하지 못했나 봅니다.제가 관심 있는 것은 Windows API Calls에서 읽는 형식뿐입니다.다른 실장에서는 코멘트를 할 수 있는 것은 알고 있습니다만, 특히 MS Windows 의 사양과 실장에 대해 알아 둘 필요가 있습니다.

Windows INI API 지원 대상:

  • 회선 코멘트: 예, 세미콜론 사용
  • 후행 코멘트:아니요.

신뢰할 수 있는 소스는 INI 파일에서 값을 읽어내는 Windows API 함수입니다.

GetPrivateProfileString

초기화 파일의 지정된 섹션에서 문자열을 가져옵니다.

"full line comments"가 동작하는 이유는 요청된 값이 존재하지 않기 때문입니다.예를 들어, 다음을 구문 분석할 때ini파일 내용:

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

값 읽기:

  • UseLiveData:1
  • coke: 없음
  • ;coke: 없음
  • pepsi:diet ;gag
  • stackoverflow: 없음
  • #stackoverflow:splotchy

업데이트: 예전에는 숫자 기호(#)가 의사 줄 바꿈 문자라고 생각했습니다.선두 #를 사용하는 이유는 숨김에 도움이 됩니다.stackoverflow이름이stackoverflow더 이상 존재하지 않습니다.그리고 ;세미콜론()은 선 주석으로 판명되었습니다.

하지만 후행 코멘트에 대한 지지는 없다.

INI 파일에서 코멘트를 봤기 때문에 그렇습니다.이 위키피디아 문서를 참조해 주세요.공식 사양은 찾을 수 없었습니다만, 게임 INI 파일에는 이 기능이 있는 것이 많기 때문에, 코멘트의 구문은 정확합니다.

편집

API는 값 및 코멘트를 반환하고(내 응답에서 이를 언급하지 않음), INI 파일을 구축하고 예시하며(코멘트를 포함) API를 호출합니다.이것이 반환되는 방법을 알 수 있습니다.

회선 시작 시 SEMI-COLON 사용 --->; <<--->

예.

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

@Ian Boyd의 분석은 Microsoft의 공식 GetPrivateProfileString() 메서드에 기반하고 있기 때문에 마음에 듭니다.

Microsoft 호환 INI 파서를 작성하기 위해 상기 Microsoft API다음과 같은 코멘트를 자세히 살펴봅니다.

  • 세미콜론을 사용하여 라인 코멘트를 작성할 수 있습니다.
  • 세미콜론은 줄의 첫 번째 문자일 필요는 없습니다.스페이스, 탭 또는 세로 탭 앞에 사용할 수 있습니다.
  • 섹션 뒤에 세미콜론이 없는 경우에도 후행 "delay"가 있을 수 있습니다.아마 코멘트가 의도된 것은 아니지만 파서는 무시합니다.
  • 섹션 밖의 값은 접근할 수 없습니다(적어도 방법을 찾지 못했습니다). 코멘트 목적 이외에는 사실상 사용할 수 없습니다.
  • 확실히 오용되지만 파서는 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

네, 가능합니다.

코멘트를 다는 방법은, 코멘트를 붙이는 컨텐츠의 직후가 아니고, 새로운 행 사용하는 입니다.이것은 코멘트를 붙이는 다른 파일에서도 사용할 수 있습니다.

예를 들어 보겠습니다.

스모 소프트웨어를 사용할 때는 .ini 파일을 사용하여 트레이닝 파일의 파라미터를 전달합니다.이렇게 쓰면:

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

에러 메세지가 표시됩니다.

ValueError: neural network의 레이어당 뉴런 수'를 기준으로 하는 int()에 대해 잘못된 리터럴입니다.

나는 그것을 위한 라인을 만들어야 한다. 즉,

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

그러면 됩니다.세세한 부분까지 도움이 되길 바랍니다!

언급URL : https://stackoverflow.com/questions/1378219/do-standard-windows-ini-files-allow-comments

반응형