В этом семействе форматов файлов, которые мы привыкли обозначать тремя буквами после точки в имени файла, есть очень странные, которые, собственно, никакой формат и не представляют.
Чему нас «учит» расширение файлов — за каждым из них скрывается определённая внутренняя побайтная структура файла, а открыть файл можно только с помощью специальной программы, которая эту структуру знает.
Вот расширение-формат jpg — всё ясно, это сжатое представление растрового изображения.
Вот psd — это тоже растровое, но уже может хранить в себе информацию о слоях. Чтобы открыть такой формат, уже нужен его родной Photoshop.
Exe — это всем известный исполняемый файл, проще говоря — программа. Здесь обязательно первые два байта — коды двух английских букв MZ. А вот открыть такой файл, по большому счёту, и нечем. Это шестнадцатеричные коды команд микропроцессора компьютера. Нет, такие шестнадцатеричные редакторы есть, но они только для «профессионалов», как говорят, но смотреть exe-файл даже эта «когорта неприкасаемых» боится как чёрт ладана.
А вот ещё целая группа расширений — pas, cpp, c, htm, css, js. В том числе и наш — cfg!
Это странное семейство расширений — «всё в одном»
Так, это очень странные расширения форматов, которые не существуют! Да, в самом деле, формата pas или формата css или, ближе, cfg — просто не существует. Каждое расширение скрывает простейший текстовый файл в кодировке ASCII — для Блокнота.
Дело в том, что любая программа — это масса вспомогательных файлов, это, в конце концов, исходные коды, из которых уже и получаются исполняемые exe. Все приведённые расширения и скрывают эти самые настройки и исходные текстовые коды. Формат ASCII — простая кодировка символов на клавиатуре и на экране, кодировка испокон веку известная всем, принимаемая по умолчанию на всех платформах. Не нужна никакая специальная программа, чтобы открыть такие файлы, эти программы по умолчанию включаются в любую систему. Более того, все более совершенные текстовые редакторы, и Word, и WordPerfect, знают этот формат, так что файлы pas, css, js, cfg вы можете прочитать в любой программе.
А дальше всё уже на уровне «джентльменских» соглашений. Вот принято, что pas — текст исходного модуля на языке программирования Паскаль, cpp — такой же текст, но уже на C++, css — файл-таблица стилей web-страницы, а cfg — файл конфигурации системы-программы.
Примеры файлов cfg — для наглядности
Порядок работы с такими файлами cfg, с точки зрения разработчика программной системы, довольно понятен и прост, можно сказать, отдаёт жизнью.
- Система довольно большая и нет необходимости, а часто это и невозможно или недальновидно, все настройки загонять в exe-файл, делать настройки, когда программа уже запущена, а некоторые действия должны быть доступны ещё до запуска программы.
- Разработчик создаёт внешний файл cfg простым Блокнотом.
- После запуска программа сначала считывает этот файл конфигурации и только потом принимает решения о дальнейшей работе.
- Когда разработчику нужно быстро поменять режим работы, он открывает файл cfg и за несколько минут кардинально меняет работу всей программы.
Или вот другая ситуация. Когда программа разрабатывается, для неё создаётся на локальном компьютере целая среда разработки, которая включает в себя, в том числе, и не один файл cfg.
Но приходит время предъявлять работу заказчику — программа предъявляется, но что-то пошло не так и нужно срочно поменять конфигурацию. А привычной среды-то разработки у заказчика нет. Вот на помощь и приходит Блокнот и файл cfg, в его текстовом формате «от Блокнота» всё и дело. Разработчик быстро запускает Блокнот на компьютере заказчика, а без него никуда, делает исправления и заказ успешно сдаётся.
Приводим некоторые примеры конфигурационных файлов CFG:
- Вот acad2002.cfg — это внутренний системы AutoCAD (что для чего служит, уже «знает» сам autocad.exe, но прочитать, а возможно, догадаться может каждый):
; Configuration for AutoCAD 2002 () Microsoft Windows
; C:Program FilesAutoCAD 2002acad2002.cfg created on 11/07/2015 at 0:19:51
[AppData]
[Version]
Platform=Microsoft Windows
FileVersion=8
ExecutableDate&Time=junkjunkjunkjunk
[AutoCAD]
CfgStamp=^EQL!,GA
AuthorizationCode=», ]»
[Digitizer/Driver]
MenuName=Current System Pointing Device
PathName=internal
Configured=1
[Editor]
Link=0
[Menu]
T_Menu=0
- Вот системный файл Windows — cfgimp32.cfg (вероятно, конфигурация шрифтов; внимание! файл немного сокращён). Как видите, файл cfg — это ещё и некая структура со своими комментариями и обозначениями:
# CGMfontconfigurationfile.
# modifiedbyepasperjxh 4/14/94
# Commandsyntax:
# commandarguments «font_name_string»
# commands are:
# index n «font_name_string»
# match «string» «font_name_string»
# keyword word [, word, …] «font_name_string»
# The font name string provieds an index into an internal table
# 1 — Courier New», FW_NORMAL
# 2 Courier New», FW_BOLD
# 3 Courier New», FW_NORMAL,italic
# Negative values are for Hershey font mapping.
default «9»
#keyword HERSHEY, SYMBOL, SET1 «-13»
#keyword HERSHEY, SYMBOL, SET2 «-13»
keyword HERSHEY, SYMBOL, SET1 «13» 1.0 1.0
keyword HERSHEY, SYMBOL, SET2 «13» 1.0 1.0
# Handle a few generic keywords
keyword Sans, Serif, Bold, Italic «8»
keyword Sans, Serif, Oblique «7»
# use Times for fonts
# with no recognized type family name
keyword Bold, Italic «12»
keyword Bold, Oblique «12»
keyword Bold «10»
index 1 «5»
index 2 «7»
index 3 «6»
- Здесь уж конфигурация системы программирования Borland Delphi5 (и это только один из множества файлов системы — какой движок базы данных используется и где находится библиотека):
-aWinTypes=Windows;WinProcs=Windows;DbiProcs=BDE;DbiTypes=BDE;DbiErrs=BDE
-u»C:Program FilesBorlandDelphi5Lib»
Что с ними делать
На прямой вопрос — какой порядок редактирования cfg-файлов, требуется и прямой ответ — никакой, и точка! Строго говоря, не стоит эти файлы вообще трогать, они носят чисто служебный характер, искажение информации в них (а это сделать ничего не стоит — Блокнот-то, вот он!) может привести к поломке не только одной какой-то прикладной программы, но и системы в целом. Для исправления часто требуется перестановка системы (или программы) целиком. С другой стороны, если вы уверены в своих действиях, то смелее, такое вмешательство помогает иногда сэкономить массу времени (и денег, кстати!)
Между прочим, далеко не секрет, что таких простых редакторов «на замену Блокнота» — очень много. Поэтому открывать cfg-файлы можно любой, какая нравится.
Маленький нюанс — первый
Вот эта идея — хранить в cfg-файлах конфигурацию — очень широко прижилась. Но ведь разработчики часто и не хотят, чтобы они же стали жертвой такой доступности. Поэтому иногда, особенно подозрительными головами, cfg-файлы шифруются и тогда уже, естественно, не подходят ни для какого Блокнота. Для работы с такими файлами нужна уже специальная программа от самого разработчика — тут уж точно можно сказать — не нужно трогать такие файлы, они вам ничего не дадут и не покажут.
Маленький нюанс — уже второй, и последний
А вот ещё, всё из той же оперы. Компания iWinInc. — известный разработчик видеоигр, под её «началом» серия JewelQuest, CoconutQueen — тоже приняла эту идею внешних конфигурационных файлов. Всю информацию о текущем ходе игры, счёте, игроках она хранит в файлах cfge — да, добавила к известным трём буквам ещё и четвёртую e (вероятно, extension — расширенный). Что поделаешь, оказывается, творчество можно проявлять и на «спичечных головках». Так, этим формат cfg и живёт!