Các tệp .ini của windows tiêu chuẩn có cho phép nhận xét không?


91

Có cho phép nhận xét trong các tệp Windows ini không? (... giả sử bạn đang sử dụng các hàm api GetPrivateProfileString để đọc chúng ...)

[Section]
Name=Value   ; comment

; full line comment

Và, có thông số kỹ thuật thích hợp của định dạng tệp .INI ở bất kỳ đâu không?

Cảm ơn vì đã trả lời - Tuy nhiên có lẽ tôi không đủ rõ ràng. Đó chỉ là định dạng được đọc bởi Lệnh gọi API Windows mà tôi quan tâm. Tôi biết các triển khai khác cho phép nhận xét, nhưng đặc biệt đó là thông số và triển khai MS Windows mà tôi cần biết.


1
API trả về Giá trị và Nhận xét, bạn chỉ cần tìm Dấu chấm phẩy và đọc hoặc loại bỏ nó khi gặp, sử dụng biểu thức chính quy hoặc chỉ cần tìm;
RoguePlanetoid

7
@RoguePlanetoid Một biểu thức chính quy, để tìm một ;ký tự? Nghiêm túc!?
IInspectable

1
@IInspectable Có thể sử dụng regex để chỉ đọc nhận xét để trích xuất phần tử sau dấu chấm phẩy, hoặc như tôi đã đề cập trong nhận xét của mình hoặc tìm kiếm; đưa ra các lựa chọn để trích xuất các bình luận riêng của mình hoặc nhìn cho sự hiện diện của một tôi nghĩ giá trị bình luận thêm của tôi, chỉ cần nhìn thấy nếu một dấu chấm phẩy là đã có một nhận xét không đầy đủ
RoguePlanetoid

Câu trả lời:


95

Hỗ trợ Windows INI API cho:

  • Nhận xét dòng : có, sử dụng dấu chấm phẩy;
  • Nhận xét tiếp theo: Không

Nguồn có thẩm quyền là hàm API của Windows đọc các giá trị từ các tệp INI

GetPrivateProfileString

Lấy một chuỗi từ phần được chỉ định trong tệp khởi tạo.

Lý do "nhận xét dòng đầy đủ" hoạt động là vì giá trị được yêu cầu không tồn tại. Ví dụ: khi phân tích cú pháp ininội dung tệp sau :

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

Đọc các giá trị:

  • UseLiveData: 1
  • coke: không có mặt
  • ;coke: không có mặt
  • pepsi: diet ;gag
  • stackoverflow: không có mặt
  • #stackoverflow: splotchy

Cập nhật : Tôi từng nghĩ rằng dấu số (#) là một ký tự nhận xét dòng giả. Lý do sử dụng # đứng đầu có tác dụng ẩn stackoverflowlà vì tên stackoverflowkhông còn tồn tại. Và hóa ra dấu chấm phẩy ( ;) một dòng chú thích.

Nhưng không có hỗ trợ cho các bình luận theo sau.


3
Các ví dụ rất hữu ích, nhưng tôi thấy từ "Lý do 'nhận xét dòng đầy đủ' hoạt động là vì giá trị được yêu cầu không tồn tại" khó phân tích cú pháp. Tôi sẽ làm rõ để nói rằng việc triển khai Windows INI yêu cầu dấu chấm phẩy trước cặp khóa / giá trị (nếu có), nếu không nó được coi là một phần của giá trị.
GravityWell,

@Roddy Bạn nói đúng. Tôi đã quá tập trung vào việc sử dụng #mà tôi đã không chú ý đến ;. Đã sửa câu trả lời để chỉ ra rằng dấu chấm phẩy thực sự là một dòng chú thích.
Ian Boyd

29

Tôi đã thấy nhận xét trong tệp INI, vì vậy có. Vui lòng tham khảo bài viết này trên Wikipedia . Tôi không thể tìm thấy thông số kỹ thuật chính thức, nhưng đó là cú pháp chính xác cho nhận xét, vì nhiều tệp INI trò chơi có điều này như tôi nhớ.

Biên tập

API trả về Giá trị và Nhận xét (tôi đã quên đề cập đến vấn đề này trong câu trả lời của tôi), chỉ cần tạo và ví dụ tệp INI và gọi API trên tệp này (kèm theo nhận xét) và bạn có thể xem cách trả về tệp này.


1
Khi sử dụng các nguồn, sẽ có ý nghĩa hơn khi sử dụng nguồn có thẩm quyền nhất và sau đó là bất kỳ nguồn hỗ trợ nào.
Mike Collins

1
Chắc chắn đó là một ý tưởng tốt - bao giờ là quá muộn để điểm đó ra - thậm chí sau bảy năm
RoguePlanetoid

8

SỬ DỤNG SEMI-COLON KHI BẮT ĐẦU DÒNG --- >>; << ---

Ví dụ.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.