Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Числовой ключ в INI-файле

 
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение printer-friendly view
View previous topic :: View next topic  
Author Message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Wed Aug 16, 2017 14:24    Post subject: Числовой ключ в INI-файле Reply with quote

Все знают, что такое INI-файл (он же файл конфигурации, в просторечии ""инишник"). Также известно, что не существует общепринятого стандарта формата такого файла. Но многие программы, включая ТС, его активно используют. Кроме того, некоторые приложения позволяют пользователю создавать свои инишники и читают из них/пишут в них значения ключей. Поэтому, видимо, авторы подобных приложений стараются соблюдать если не стандарт, то хотя бы сложившиеся традиции.
Поиск в MSDN ничего не дал, или я плохо искал? Официально Microsoft этот формат уже давно не поддерживает (хотя неофициально - поддерживает, см. хотя бы boot.ini). Но, с другой стороны, на меломягких свет клином не сошелся.
Где есть наиболее адекватный список этих правил/норм/ограничений, или каждый создает свой собственный?
Например, как заранее, без экспериментов, понять:
- какую кодировку должен иметь инишник?
- допускается ли использование кириллицы в именах разделов и ключей?
- комментарий должен быть отдельной строкой или может отделяться от любой строки символом ";"?
- может ли к качестве символа комментария использоваться "#"?
- может ли быть пустой ключ? При его чтении возвращается пустая строка или такая запись трактуется как ошибка?
- каково ограничение на длину имени раздела/ключа/значения?
- может ли ключ иметь чисто числовое, без букв, имя?
Меня, признаться, больше всего интересует именно последний вопрос. Если нет, то хочется понять логику: чему противоречит строка
Code:
1=something
Буду признателен за информацию.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Aug 16, 2017 14:44    Post subject: Reply with quote

Quote:
Также известно, что не существует общепринятого стандарта формата такого файла.

Насколько мне известно, этот формат - творение Microsoft, поэтому истинно правильным синтаксисом я считаю синтаксис INI-файлов, которые читаются и пишутся системными функциями Windows (GetPrivateProfileString, WritePrivateProfileString и др.).
Quote:
Официально Microsoft этот формат уже давно не поддерживает

Однако функции чтения/записи INI-файлов никуда не делись и продолжают работать.
Quote:
(хотя неофициально - поддерживает, см. хотя бы boot.ini)

Который после WinXP не используется?
Quote:
Например, как заранее, без экспериментов, понять:

В виндовозных инишниках поддерживаются только ANSI и UTF-16 (без BOM). Кириллица допускается везде. Комментарии начинаются после точки с запятой и могут быть в конце строк. Ключи без значения скорее всего недопустимы. Самое известное ограничение - на размер файла, 64 КБ. Ключи только из цифр, разумеется, допустимы (в тоталовских инишниках такое сплошь и рядом).

Тоталовские INI- и BAR-файлы читаются и пишется через системные функции, поэтому является примером "нормального" INI-файла. INI-файл моей TCFS2 тоже читается системными функциями и является примером INI-файла с комментариями в конце строк, кроме того, в TCFS2 есть команды для чтения/записи INI-значений через системные функции, например:
Code:
TCFS2 /ef "set_tcini(апап,апапа,`папа`)"

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Wed Aug 16, 2017 14:51    Post subject: Reply with quote

Quote:
Ключи только из цифр, разумеется, допустимы
Alan Campbell, автор плагина ini для PowerPro придерживается, видимо, другой точки зрения, хотя в документации об этом не говорит. У меня чуть мозги не закипели, пока я искал ошибку в своем скрипте, читающим именно такие ключи.
Получается, это следует трактовать как баг или есть какие-то разумные ограничения на числовые ключи?
Впрочем, спрашиваю больше из любопытства. Кэмпбелл уже давно отошел от дел и последняя версия плагина датируется 2004 годом, так что придется выкручиваться...
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Aug 16, 2017 15:02    Post subject: Reply with quote

Числовые ключи используются очень часто, когда в секции нужны только значения (для формирования списка), и отсутствие их поддержки - определённо баг.

Ещё важным правилом виндовозных INI-файлов является обрамление кавычками: если значение начинается или заканчивается пробелом, оно берётся в кавычки, при этом перед открывающей кавычкой (самой первой) могут быть пробелы, после закрывающей (самой последней) - пробелы и комментарий, и между этими кавычками могут быть другие кавычки.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group