Czy standardowe pliki .ini systemu Windows zezwalają na komentarze?


92

Czy komentarze są dozwolone w plikach ini systemu Windows? (... zakładając, że używasz funkcji API GetPrivateProfileString do ich odczytywania ...)

[Section]
Name=Value   ; comment

; full line comment

I czy jest gdzieś odpowiednia specyfikacja formatu pliku .INI?

Dzięki za odpowiedzi - ale może nie byłam wystarczająco jasna. Interesuje mnie tylko format odczytywany przez wywołania Windows API . Wiem, że inne implementacje pozwalają na komentarze, ale jest to konkretnie specyfikacja i implementacja MS Windows, o których muszę wiedzieć.


1
API zwraca wartość i komentarz, wystarczy poszukać wartości SemiColon i przeczytać lub usunąć to podczas spotkania, używając wyrażenia regularnego lub po prostu poszukać;
RoguePlanetoid

7
@RoguePlanetoid Wyrażenie regularne, aby znaleźć ;znak? Poważnie!?
Niespodziewane

1
@IInspectable Może użyć wyrażenia regularnego tylko do odczytu komentarza, więc wyodrębnij element po średniku, lub jak wspomniałem w moim komentarzu lub poszukaj; dając alternatywę do wyodrębnienia samego komentarza lub szukania obecności takiego, o którym myślałem, że mój komentarz ma wartość dodaną, po prostu sprawdzając, czy był średnik, był niekompletny komentarz
RoguePlanetoid,

Odpowiedzi:


96

Obsługa Windows INI API dla:

  • Komentarze do linii : tak, używając średnika;
  • Komentarze końcowe: Nie

Autorytatywnym źródłem jest funkcja Windows API, która odczytuje wartości z plików INI

GetPrivateProfileString

Pobiera ciąg z określonej sekcji w pliku inicjującym.

Przyczyną działania „pełnych komentarzy w wierszu” jest to, że żądana wartość nie istnieje. Na przykład podczas analizowania następującej inizawartości pliku:

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

Czytanie wartości:

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

Aktualizacja : Kiedyś myślałem, że znak numeru (#) to pseudo-wierszowy komentarz. Powodem używania wiodącego # działa do ukrycia stackoverflowjest to, że nazwa stackoverflowjuż nie istnieje. Okazuje się, że średnik ( ;) jest komentarzem do linii.

Ale nie ma obsługi końcowych komentarzy.


3
Bardzo pomocne przykłady, ale wydaje mi się, że sformułowanie „Powodem, dla którego„ komentarze pełnoliniowe ”działają, jest brak żądanej wartości” . Chciałbym wyjaśnić, że implementacja Windows INI wymaga średnika przed parą klucz / wartość (jeśli występuje), w przeciwnym razie jest uważana za część wartości.
GravityWell

@Roddy Masz rację. Byłem tak skupiony na używaniu, #że nie zwróciłem uwagi na ;. Poprawiono odpowiedź, aby wskazać, że średnik naprawdę jest komentarzem do linii.
Ian Boyd

29

Widziałem komentarze w plikach INI, więc tak. Zapoznaj się z tym artykułem w Wikipedii . Nie mogłem znaleźć oficjalnej specyfikacji, ale to jest poprawna składnia komentarzy, ponieważ wiele plików INI gry miało to, o ile pamiętam.

Edytować

API zwraca wartość i komentarz (zapomniałem o tym wspomnieć w mojej odpowiedzi), po prostu skonstruuj i przykładowy plik INI i wywołaj API na tym (z komentarzami) i możesz zobaczyć, jak to jest zwracane.


1
Korzystając ze źródeł, bardziej sensowne jest użycie najbardziej autorytatywnego źródła, a następnie wszelkich źródeł pomocniczych.
Mike Collins

1
Jasne, że to dobry pomysł - nigdy nie jest za późno, by to podkreślić - nawet po siedmiu latach
RoguePlanetoid

9

UŻYJ PÓŁKOLONA NA POCZĄTKU LINII --- >>; << ---

Dawny.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.