Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / C++ |
![]() ![]() |
Топик располагается на нескольких страницах: 1 2 3 4 5 6 [все] |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Храню в регистре некоторые данные. Пытался хранить в ветке HKCU HKEY_LOCAL_MACHINE; - но там совсем плохо с возможностью записи на некоторых машинах даёт писать в HKEY_CURRENT_USER; а на других - нет как решить проблему доступа к записи в реестр? TRegistry *reg = new TRegistry(KEY_ALL_ACCESS); //Создали обьект класса TRegistry reg->RootKey = HKEY_CURRENT_USER; //присваивание объекту 'reg' пути HKCU HKEY_LOCAL_MACHINE; // reg->OpenKey("Software\\йцукr", true); if (reg) { reg->WriteBool("Connect", true); reg->WriteString("pwd", Edit3->Text); reg->WriteString("plz", Edit2->Text); reg->WriteString("srv", Edit1->Text); } if (reg) delete reg; |
26 дек 20, 00:58 [22254483] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Вы уверены, что вам обязательно нужна возможность намусорить в реестр? Может лучше обойтись файлами ini, xml или json? |
26 дек 20, 01:19 [22254488] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Путём отладки найти ошибку и исправить. Подсказка: OpenKey это функция, возвращающая значение. http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Registry_TRegistry_OpenKey.html HKEY_CURRENT_USER по определению доступен для записи текущему пользователю. Posted via ActualForum NNTP Server 1.5 |
||
26 дек 20, 01:20 [22254489] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Mizer73, И да, лучше завязать с Борландом. Возьмите православный Qt. |
26 дек 20, 01:21 [22254491] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
|
||||
26 дек 20, 11:34 [22254561] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
тем не менее - это из практики. не поднял бы эту тему, если бы не столкнулся с этим. Сейчас переделываю все по правилам букварей. Работает. |
||||||||
27 дек 20, 11:37 [22254971] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Что значит намусорить? Это штатная возможность Windows архитектур. И ей надо пользоваться. |
||||
27 дек 20, 12:29 [22254987] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
При её создании не учли пару моментов, включая производительность. Более свежие рекомендации по дизайну приложений обратно рекомендуют файловую систему для хранения информации приложений. Posted via ActualForum NNTP Server 1.5 |
||
27 дек 20, 14:12 [22255032] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Значит SQLite надо юзать. |
||||||
27 дек 20, 14:58 [22255054] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Ну реестр не предназначен для хранения баз данных. Свойства разве что. Вопрос с файлами нужно рассмотреть с позиции например администрирования Windows домена с массой пользователей и настройками. И сравнить варианты развертывания на файлах и на реестре. |
||||||
27 дек 20, 15:56 [22255078] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Вариант с файлами победит, поскольку их-то можно разогнать на local profile и roaming profile, а вот с реестром это не прокатит. Posted via ActualForum NNTP Server 1.5 |
||
27 дек 20, 16:09 [22255084] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Dimitry Sibiryakov, столкнулся с проблемой. Этот код проходит нормально TRegistry* reg2 = new TRegistry(KEY_ALL_ACCESS); reg2->RootKey = HKEY_LOCAL_MACHINE; reg2->Access = KEY_WRITE; if (!reg2->KeyExists("Software\\Extra\\")) { reg2->CreateKey("Software\\Extra\\"); reg2->WriteBool("Connect", false); reg2->WriteString("pwd", ""); reg2->WriteString("plz", ""); reg2->WriteString("srv", ""); } а в этом коде создаётся только заголовок SOFTWARE\\nsoftware\\RT\\IPBBA2\\, а дальше они идут друг за другом try { if (!reg2->KeyExists("SOFTWARE\\nsoftware\\RT\\IPBBA2\\")) { reg2->CreateKey("SOFTWARE\\nsoftware\\RT\\IPBBA2\\"); - отрабатывает, reg2->WriteString("RTK", "31500000000000000000000485958303956504A000056465336524A500"); //reg2->WriteString("", "IP"); reg2->WriteString("*", "JZ"); } Сообщение было отредактировано: 27 дек 20, 16:20 |
27 дек 20, 16:24 [22255088] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
на самом деле и это не отрабатывает reg2->WriteBool("Connect", false); reg2->WriteString("pwd", ""); reg2->WriteString("plz", ""); reg2->WriteString("srv", ""); |
||||
27 дек 20, 16:35 [22255095] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
И это логично, поскольку ты так и не прислушался к советам выше. Какой смысл в продолжении?.. Posted via ActualForum NNTP Server 1.5 |
27 дек 20, 17:40 [22255112] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Dimitry Sibiryakov, попробуй объяснить |
27 дек 20, 20:22 [22255175] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Mizer73, билдер это дельфи. То что Паскаль заменили на С++ оно не стало С++, |
27 дек 20, 20:43 [22255187] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Думаешь, там до него лучше дойдёт, что значения, возвращаемые функциями, надо проверять, а ошибки - протоколировать?.. Posted via ActualForum NNTP Server 1.5 |
||
27 дек 20, 21:11 [22255195] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
IMHO и AFAIK. Хм... может быть. Еще приведу один довод в пользу реестра. Его API - прост. И действия атомарны. С конфигурациями типа .properties, .ini e.t.c. У вас появляется новый контракт. Нужно проверять валидность файла и иметь третье состояние - файл невалиден (был отредактирован вручную неверно) и принмать какое-то решение. И вообще редко какой разработчик заморачивается с правильным текстовым парсером вследствие чего конфиги могут быть долгое время сломаны но никто об этом не знает т.к. нет механизма проверки их валидности. Тоесть пока вы не упали в явном виде - неизвестно валиден-ли конфиг. Еще довод. На реестре проще следовать принципу Conversion Over Configuration для много-пользовательских систем. Для текстовых конфигов у вас придется дробить крупный файл на россыпь мелких по принципу 1 ключ == 1 текстовый файл что само по себе создает некие неудобства при ведении файлового хозяйства. Дробление может возникать от кастомизации настроек. Чем больше юзер кастомизировал - тем больше дробления. Кроме того значения в реестре - типизированы. Есть булевые значения. Есть числа и так далее. Это все - дополнительные уровни строгости конфигураций. Еще довод. Реестр проще бэкапить и реплицировать. Как с БД у админа будет сфокусировано внимание на одной сущности. А не на тысяче директорий и еще бох его знает надо их бэкапить или нет т.к. в файловой системе обычно создается некий флуд скрытых фолдеров-конфигов которые могут быть не нужны (не релевантны) к ведению админской деятельности. Сообщение было отредактировано: 27 дек 20, 22:37 |
||||||
27 дек 20, 22:42 [22255213] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Ну, админы, конечно, бывают разные, но лично у меня одним махом бэкапилось всё дерево роуминговых профилей, а там и данные приложения и документы пользователя и всё остальное (включая реестр ЕМНИП). Posted via ActualForum NNTP Server 1.5 |
||
27 дек 20, 23:02 [22255218] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Dimitry Sibiryakov, пургу несешь в эфире. |
28 дек 20, 01:01 [22255251] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Офф. То регистр это плохо, это миф с 2000х годов. Mizer73, >на самом деле и это не отрабатывает Удалите лишний код. Сделайте минимальный пример с комментарием на строчке ошибки и скрином ошибки. |
28 дек 20, 08:10 [22255294] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Спорный довод. Вся прога вместе в конфигами может жить в одной папке, тогда ее очень легко бэкапить или переносить. С другой стороны есть вирусы-шифровальщики, которые реестр не трогают. Буквально на днях разбирались: админ пишет что наша прога тупит сильно, по логам выясняем что постоянно выполняются тяжелые служебные операции, которые должны раз в сутки ночью отработать. Оказывается админ защитился от шифровальщиков, убрал права на запись в инишник ![]() |
||||
28 дек 20, 08:47 [22255297] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Реестр, это всего лишь следующий этап автоматизации после ini. Например, автоматическое создание каждому новому юзверю своей папки...профили. Они не конкурируют а дополняют решения по IT |
28 дек 20, 09:30 [22255313] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, имею этоTRegistry* reg2 = new TRegistry(KEY_ALL_ACCESS); reg2->RootKey = HKEY_LOCAL_MACHINE; g63: if (!reg2->KeyExists("Software\\ExtraMaster\\")) { reg2->CreateKey("Software\\ExtraMaster\\"); goto g63; } /* bool openResult = reg2->("Software\\ExtraMaster\\", true); if(!openResult) { MessageDlg("Unable to create key! Exiting.", mtError, TMsgDlgButtons() << mbOK, 0); Application->Terminate(); } */ if (!reg2->ValueExists("Connect")) reg2->WriteBool("Connect", false); if (!reg2->ValueExists("pwd")) reg2->WriteString("pwd", ""); if (!reg2->ValueExists("plz")) reg2->WriteString("plz", ""); if (!reg2->ValueExists("svr")) reg2->WriteString("srv", ""); reg2->CloseKey(); delete reg2; вся ветка нормально записано в реестре, но... при выполнении данного кода, это строка if (!reg2->ValueExists("Connect")) не определяет наличие параметра Connect и пытается его снова создать. Видимо, не определено, где искать этот параметр. |
28 дек 20, 09:42 [22255319] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Mizer73, Поставь перед проверкой if вывод в лог или консоль что там записано. |
28 дек 20, 10:09 [22255330] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Mizer73, Убери goto |
28 дек 20, 10:09 [22255331] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Ты понимаешь что произойдет если CreateKey() по каким-либо причинам не создаст ветку реестра? Твоя программа превратит процессор в обогреватель. Нельзя так писать. Как выше уже написали - надо получать код ошибки и как-то разбираться с причиной ошибки. |
||||
28 дек 20, 11:21 [22255391] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, имеется в виду, что выдаёт if ? |
28 дек 20, 12:07 [22255419] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Dima T, точно, но это на период разработки. Естественно, все это будет уделано проверками по видам ошибок. пока я не могу разобраться с определенными вещами, что бы делать какую то общую системную обработку ошибок. там у меня перед всем этим стоит try, который и возьмет на себя основную задачу обработки ошибок. И добавяится вложенные try. грелки не будет. |
28 дек 20, 12:11 [22255424] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Я абсолютно поддержу этот aproach как родной для Unix/Linux подобных конфигураций. Он исторически прижился и вообще файлы в Linux системах наполнены более широким смыслом нежели в Windows. Сюда-же семантика скрытого фолдера (начинающийся с точки). Это все - наследние Unix/Linux. Реестр в Windows все таки зашел эволюционным путем через боль администрирования крупных парков рабочих станций и поэтому наш спор надо рассматривать именно в разрезе крупного предприятия где есть домены на базе Microsoft AD и есть чистые Windows рабочие станции на которых надо каждый день делать много хозяйственных действий. |
||||||||
28 дек 20, 12:13 [22255428] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Dima T,if (!reg2->KeyExists("Software\\ExtraMaster\\")) это не даёт ошибки. Ветка и параметр есть. Думаю, что он просто, не видит параметров, т.к. видимо не установлен курсор на эту ветку, или как? |
28 дек 20, 12:20 [22255434] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Нет. Это шаг любого программиста. Умение логировать. Умеем? |
||||
28 дек 20, 12:29 [22255443] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Логирование. Пошаговая отладка. |
||||
28 дек 20, 12:30 [22255444] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
А можете вызвать нормальную функцию из этих https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-functions ? И дать код ошибки. |
||||||||
28 дек 20, 12:59 [22255476] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, как можно залогировать результат выполнения if ? |
28 дек 20, 13:28 [22255505] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Вот так log(“1") if.... { log(“2 } log("3 |
||||
28 дек 20, 13:40 [22255509] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Во-первых, не может. Во вторых, толку-то, если у него логика в коде отсутствет как таковая. "Если ветка не существует - создать её, потом ещё раз открыть или создать, ах нет, закомментируем открытие, оно же не работает..." Аффтар, проверки существования ветки и ключей не нужны тебе в коде вообще. Убери их. Posted via ActualForum NNTP Server 1.5 |
||
28 дек 20, 13:48 [22255518] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, это я понимаю и пользуюсь. Я не понимаю, что записывать в лог1, лог 2 и лог3 - какие состояния? |
28 дек 20, 14:28 [22255570] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp,TRegistry* reg2 = new TRegistry(KEY_ALL_ACCESS); reg2->RootKey = HKEY_LOCAL_MACHINE; try { if (!reg2->KeyExists("Software\\ExtraMaster\\")) { reg2->CreateKey("Software\\ExtraMaster\\"); } if (!reg2->ValueExists("Connect")) reg2->WriteBool("Connect", false); } catch(Exception *e) { ShowMessage(e->Message); }; Ошибка Faild set data for Connect |
28 дек 20, 14:47 [22255604] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Сначала просто цифры 1,2,.... чтобы проверить логику кода. Потом
getTextKey() {
.....
}
...
log(getTextKey("мойКлючик"))
|
||||
28 дек 20, 14:56 [22255609] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, логика понятна - идет создавать ветку, если её нет. Дальше смотрит - если нет параметра, то идет создавать параметр. Ветку создает, параметр - нет. на создание параметра пишет: Faild set data for Connect |
28 дек 20, 14:59 [22255611] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
И где логи? Где скрин ошибки? Где комментарий в коде? Работай! |
||||
28 дек 20, 14:59 [22255612] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Это у тебя в голове. А машину проверяют КАЖДУЮ строку для новичка. Ферштейн? |
||||
28 дек 20, 15:01 [22255616] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Теперь включи формальную логику: "а если ветка есть?" Posted via ActualForum NNTP Server 1.5 |
||
28 дек 20, 15:06 [22255622] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Тут сложнее))). Без формальной логики это женский ум))) |
||||||
28 дек 20, 15:09 [22255624] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, я и иду по каждой строке. На данной момент - нет параметра в ветке. И создать его не получается. Для меня главное понять логику. Есть конкретная команда создания ветки - CreateKey. А параметр, получается, создаётся только записью значения. А как машина понимает, что я записываю данный параметр именно в эту ветку? |
28 дек 20, 15:27 [22255643] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Если ветки (фолдеры) или ключи реестра мы вынесем за скобки - то тогда жизнь намного упрощается. Вообще какой смысл несут ключи если в них нет значений? Я думаю автору стоит просто взглянуть на задачу под другим углом. |
28 дек 20, 15:28 [22255644] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Внезапно, но никак. Открой уже для себя справку по TRegistry. Posted via ActualForum NNTP Server 1.5 |
||
28 дек 20, 15:29 [22255645] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Ты меня не слышишь или споришь? Я просил дать логи и скрин. Твое право болтать и болтать дальше. |
||||
28 дек 20, 15:35 [22255650] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Как-то это примитивно. :) |
||||
28 дек 20, 15:48 [22255664] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Семантика скрытого фолдера, насколько я знаю, это был баг в первых версиях ФС Юникс. И каким же таким более широким смыслом файлы наполнены в Юникс/Линукс нежели чем в Виндах? |
||||
28 дек 20, 15:54 [22255667] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
petrav, почитай сам. Блочные устройства. Каналы и сокеты. С помощью канальных устройств (mknod) я делал в Linux/Ext3 для Оракла такие штуки которые в Windows/NTFS принципиально невозможно повторить. Скрытый фолдер был скорее багом утилит листинга которые скрывали фолдер с предшетсвующей точкой "." и эта традиция и сегодня используется в Linux/Unix и к моему ужасу ее перенесли на Windows просто как порты исходников Linux приложений. Я по прежнему настаиваю на пользе использования Windows registry для Windows приложений пока мне не доказали обратное. Тоесть не доказали что реестр опасе или вреден или создает перформанс-проблемы. |
28 дек 20, 16:26 [22255695] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Воля ваша, но могли бы конечно хотя бы один use case на пальцах пояснить. |
||||
28 дек 20, 16:46 [22255718] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
С ораклом? Ну вот по аналогии с этим. Почитай как толстяк Бурльсон делает экспорт БД в условиях нехватки места. http://www.dba-oracle.com/t_export_2_gig_limit.htm И обрати внимание как работает mknod в операционке linux. mknod compress_pipe p mknod split_pipe p Только у меня интереснее было. У меня на 1 физическом сервере стояло 2 БД. И я экспортировал одну и импортировал в другую одновременно. А толстяк просто сохраняет по конвейеру в файл а потом архивирует gzip-ом. В скобках замечу что утилита exp/imp НЕ УМЕЕТ работать с STDIN/STDOUT. Это важно. И попробуй это повторить на Windows. |
28 дек 20, 16:51 [22255721] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 10925 |
![]() |
||||
28 дек 20, 17:00 [22255737] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Во-первых, работа с ним тривиально сложнее. Топикстартер, вон, так и не осилил. Во-вторых, как я уже сказал, у него нет локальной ветки для пользователя, только перемещаемая. То есть данные, привязанные к конкретному пользователю И рабочей станции хранить без извращений не получится. В-третьих, система считает его своей частью, поэтому бэкапит (и что самое плохое - восстанавливает) целиком как часть точки восстановления когда ей в голову взбредёт. Ну и, как всякое структурированное хранилище, иногда он имеет привычку портиться. После чего следует п.3. Posted via ActualForum NNTP Server 1.5 |
||
28 дек 20, 17:08 [22255752] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Понимаешь. Мы не можем брать за правило - рассматривать исключения как норму или как основу для архитектур. Если админ зобанил ветку пользователя - то да. Ну пиши в каталог пользователя. Потом он зобанит каталог пользователя - ты будешь писать в веб-сокет ну и так далее. До полного абсурда. Если админ не хочет чтобы софт работал - развеж мы тут ему помешаем? Сообщение было отредактировано: 28 дек 20, 17:21 |
||||||
28 дек 20, 17:23 [22255773] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Dimitry Sibiryakov, 1. Согласен. Не умеет реестр, пусть файл пишет 2. Настройки для всех обычно прав нет. Ну, MS не рекомендует. 3. Бэкап автоматом это супер 4. Портится положения окон? Ну и фиг с ними |
28 дек 20, 17:25 [22255776] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
А вот это уже интересно обсудить без админа. Просто как частный случай. Был восстановлен старый снапшот реестра. Каково будет поведение приложения? Я думаю - программист ответит нам. Кстати поведение приложения хранящего конфиги на файлах не будет лучше в данном случае. Тоже обсуждается. |
||||
28 дек 20, 17:25 [22255777] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Не согласен. Я думаю что на файловых операциях мы ТС-а похороним еще быстрее. Работая с реестром - он работает атомарно к ключами и значениями. В файлах - больше стейта. Больше аномалий. Файл надо грамотно открыть. Грамотно распарсить. Модифицировать. И закрыть. Много рутины короче для вместо того чтобы key-value взят-положить. |
||||||
28 дек 20, 17:29 [22255785] Ответить | Цитировать Сообщить модератору |
m_Sla Member Откуда: Сообщений: 2709 |
GetPrivateProfileStringW - вроде проще реестра |
28 дек 20, 17:40 [22255803] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Это вообще полный капец. В msdn пишут что эта функция осталась только для совместимости с Windows-3.1. Тоесть это не то что тухляк. Это уже археологическая находка. |
||||
28 дек 20, 17:45 [22255811] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
С ключ-значение атомарно. Но есть ли большая польза от атомарности на уровне одного значения? Поддерживает ли реестр транзакции? Файл заблокировать то не очень сложно. |
||||
28 дек 20, 17:54 [22255830] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
petrav, В реестре есть дерево. Класс такой в дельфи появился не давно. А в Си? |
28 дек 20, 18:34 [22255874] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Вот что-то есть https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regopenkeytransacteda надо читать и разбираться. |
||||||||
28 дек 20, 18:37 [22255878] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Похоже, вы, ребята, не в теме. Почитайте на досуге про различия между FOLDERID_LocalAppData, FOLDERID_RoamingAppData и FOLDERID_ProgramData в условиях roaming profiles домена Windows. И если найдёте - то же самое про реестр. Posted via ActualForum NNTP Server 1.5 |
||
28 дек 20, 18:48 [22255888] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
mayton, Да не нужны там транзакции. |
28 дек 20, 18:49 [22255889] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Dimitry Sibiryakov, Я не только читаю, но пишу туда |
28 дек 20, 18:50 [22255890] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Вроде как с *.ini по другому никак не поработать штатными средствами. А так да, тухляк, начиная с Win7 ее опошлили добавив кэширование в виртуальном реестре, в итоге какие-то криворукие индусы это дописывали, поэтому работает, но иногда запись через WritePrivateProfileString() не происходит. |
||||||||
28 дек 20, 19:06 [22255904] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
SQLite - и транзакции, и один файл данных, и один файл исходника, и еще куча плюшек. |
||||||||
28 дек 20, 19:08 [22255907] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
+1 Но оверхед в цепочке ini - - > Реестр - - > sqlite |
||||||||
28 дек 20, 19:16 [22255912] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Видите как интересно. За 30 лет эволюции Windows так и не обзавёлся лаконичным встроенным средством для работы с файловыми конфигами. Вы все еще работаете с "мешком свойств". Даже не json/yaml. SQLite надо обсуждать. У него тоже есть оверхед вида "журнал". Мало кому понравится если 1000 раз модифицировав свойство ваш конфиг умножится в 100 раз по занимаемому месту. Тоесть нужно придумывать какие-то механизмы самообслуживания. Схлопывания журнала. Или какую-то там архивацию. В свете всего этого registry по прежнему выглядит привлекательнее. |
28 дек 20, 19:26 [22255922] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
В смысле? sqlite медленнее читает/пишет чем ini или реестр? ini однозначно тормознее, т.к. индексов не предусмотрено, реестр тоже СУБД, хз быстрее ли он чем sqlite. Да и не надо супер скоростей для чтения настроек, а если надо, то в переменных кэшировать и будет точно быстрее. |
||||
28 дек 20, 19:26 [22255923] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Все уже есть, только включать надо PRAGMA schema.auto_vacuum |
||||
28 дек 20, 19:31 [22255926] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Есть библиотека MSXML. |
||||
28 дек 20, 19:39 [22255934] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Dima T, Оверхед это не медленнее. Это лишние прибамбасы. |
28 дек 20, 19:39 [22255935] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Там есть String s = reg.readKeyString(“isModal", "да") ? |
||||||||
28 дек 20, 19:45 [22255941] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Полная поддержка стандарта. Включая XML схемы. |
||||||||
28 дек 20, 19:58 [22255952] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Я помню ее. Кажется использовали. Она ужасна. Поддерживает еще тот. Морально устаревший API который называется SAX. Хотел-бы я посмотреть на тех кто его использует. Это надо быть большим мозохистом. И судя по всему она не является частью поставки Windows. Ее надо доустанавливать отдельно. Я думаю что если поискать по гитхабу - то можно найти более приятные API. |
||||||||
28 дек 20, 20:00 [22255953] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Удивительно, но Линукс за свои 20 тоже не сподобился. "Тенденция, однако..." Posted via ActualForum NNTP Server 1.5 |
||
28 дек 20, 20:10 [22255963] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
SAX он не реализовывает. Он реализует DOM.
А мне кажется он давно уже встроен в Винду. |
||||||||||||
28 дек 20, 20:12 [22255964] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
HRESULT hr1 = pChildNode2->get_nodeValue(&varValue); |
||||||||
28 дек 20, 20:15 [22255966] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
А чем ты обычно .xml проперти читаешь? |
||||||||
28 дек 20, 20:15 [22255967] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Тут - опасный спор. Фактически спор определений. Мы в топике говоря Линукс - подразумеваем многое. Хотя в целом я согласен. Но линукс изначально базировал свои конфигурации на файлах. Благо его файловые системы - более легкие. В плане проверки прав доступа и скорости fopen/close. |
||||||
28 дек 20, 20:18 [22255970] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
mayton, QSettings https://doc.qt.io/qt-5/qsettings.html |
28 дек 20, 20:18 [22255971] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
столкнулся с тем, что if (!reg3->KeyExists("SOFTWARE\\nsoft2")) { сюда не идёт } определяет, что ключ есть, а bool openResult = reg3->OpenKey("SOFTWARE\\nsoft2", true); if(openResult) [i]= false[/i] { и сюда не идёт, а должно } даёт значение false Сообщение было отредактировано: 28 дек 20, 20:17 |
28 дек 20, 20:21 [22255976] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
QtXml. |
||||||||
28 дек 20, 20:22 [22255979] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Шикарно. А какой foot-print. Тоесть на сколько килобайт или мегабайт больше становится дистрибутив после того как ты подключил QtXml? |
||||||||
28 дек 20, 20:24 [22255982] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Mizer73, Логирование изучил? Теперь пошаговую отладку и смотри на строчку что не так. |
28 дек 20, 20:29 [22255988] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
146 килобайт. |
||||||||
28 дек 20, 20:33 [22255992] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Это вопрос или что? |
||||||||
28 дек 20, 20:34 [22255993] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Да вы не размахивайте крыльями так сильно. Полная поддержка XML стандарта очень сложна. Особенно если рассматривать там части этого стандарта. И тогда библиотеки надо просто проводить через сертификации. В топике-то речь идет о простом. Дан конфиг. .... <property name="logfile" value="log/log.log"/> ... это сделать легко. Любой школьник закодит либу. А далее уже утяжеления всякие. Нужно ли вам делать так? .... <!ENTITY logref ...> <property name="logfile" value="&logref;"/> ... Или еще обработку инструкций или транформинг. Последнее - это уже функциональный язык программирования. Это все надо? Или можно где-то уже остановится? |
28 дек 20, 20:54 [22256001] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Вы про что? Про MSXML? Он поддерживает всё: XML DOM, XML схемы, XPath и XSLT. Полная поддержка стандарта. На счёт SAX -- вроде нет, но это, вроде, и не стандарт. Что по поводу QtXml -- наверное тоже. Но мне от него нужен только XML DOM. Сообщение было отредактировано: 28 дек 20, 21:06 |
||||
28 дек 20, 21:02 [22256002] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Да, виндавс не андроид, где sqlite доступен по умолчанию. И наверно никогда не будет по умолчанию. Но если так рассуждать, то все С++ что после MSVC98 тоже оверхэд, т.к. рантайм надо дополнительно ставить. |
||||
28 дек 20, 21:15 [22256006] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Давай чуть дальше заглянем: Как мы правим этот конфиг? Руками в текстовом редакторе оно уже проблематично, т.к. кавычку или слэш или еще какой обязательный символ пропустил и файлик нечитабельный. Для ручной правки идеален INI. В xml/json трудно соблюсти формат. |
||||
28 дек 20, 21:22 [22256012] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
INI часто недостаточен. Отсутствует древовидная структура и списки. Плюс в XML на порядки больше вариантов проверки корректности данных. |
||||||||
28 дек 20, 21:32 [22256017] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Повторюсь: с точки зрения ручной правки XML - недоразумение, его сложно править в блокноте, нужны спецсредства. С другой стороны он ущербен при записи как любой текстовый файл. Конфиг в XML это блажь MS, маркетинг и не более того. |
||||||||
28 дек 20, 21:45 [22256025] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
У меня таких проблем не возникает. ![]() Вы мне скажите, если мне нужен конфиг с деревом и списками объектов, то по вашему, мне нужна реаляционная БД? Для конфига юзать SQL?! Да ну... блин. А как вы редактируете такой SQL-конфиг? Носите с собой спец-утилиту? |
||||||||
28 дек 20, 21:54 [22256034] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15689 |
Можно просто скачать sqlite3.exe и там очень много чего можно https://www.sqlite.org/cli.html |
||||
28 дек 20, 22:30 [22256045] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Я не хвалю и не осуждаю. В топике мне сказали дескыть MSXML. Вот и дискуссия пошла туда. Я сам не люблю XML для конфигов. Он совершенно не human-readable. Так... для всяких протоколов типа SOAP подходит. |
||||||||
28 дек 20, 22:58 [22256055] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
У нас часто такой формат используется:
Абсолютный human-readable. ![]() |
||||
28 дек 20, 23:10 [22256062] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Я не нашел в API то что показал выше - одной строкой получить значение или умолчание. Не люблю бойлерплейт-код. |
||||||||
28 дек 20, 23:55 [22256084] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Как-то так. |
||||||||
29 дек 20, 00:03 [22256092] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
petrav, Где возврат строки? Где возврат default строки если там нечего читать? Не видишь что код неравнозначный? |
29 дек 20, 07:42 [22256142] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Там какие-то нюансы связанные с описанием интерфейса COM объекта. Я не помню. Вот пример сразу чтения текста в аттрибуте xml. |
||||
29 дек 20, 09:02 [22256150] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
petrav, В общем нет там такого String s = reg.readKeyString(“isModal", "да") И такого от Qt QSettings QSettings *p = new QSettings(file, форматINIorXML) int i = p->value(sKey, -1).toInt() Хочешь XML внизу, хочешь ini.... Ну и -1 это удобство при чтении например положения окна на экране left, top, bottom... |
29 дек 20, 10:37 [22256184] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
почему пишет в ветку Software\\Extra\\WOW6432Node, когда задана ветка CreateKey("Software\\Extra"); а при чтении читает из Software\\Extra |
29 дек 20, 12:01 [22256264] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Mizer73, Дай полный путь ветки |
29 дек 20, 12:04 [22256268] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ExtraMaster - куда записалось как писалось: TRegistry* reg2 = new TRegistry(KEY_ALL_ACCESS); reg2->RootKey = HKEY_LOCAL_MACHINE; reg2->Access = KEY_ALL_ACCESS; try { if (!reg2->KeyExists("Software\\ExtraMaster\\")) { reg2->CreateKey("Software\\ExtraMaster\\"); reg2->OpenKey("Software\\ExtraMaster\\", true); if (!reg2->ValueExists("Connect")) reg2->WriteBool("Connect", false); if (!reg2->ValueExists("kinde")) reg2->WriteBool("kinde", false); if (!reg2->ValueExists("pwd")) reg2->WriteString("pwd", ""); if (!reg2->ValueExists("plz")) reg2->WriteString("plz", ""); if (!reg2->ValueExists("svr")) reg2->WriteString("srv", ""); } Сообщение было отредактировано: 29 дек 20, 12:05 |
||||
29 дек 20, 12:08 [22256276] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
копать сюда https://docs.microsoft.com/ru-ru/windows/win32/api/winreg/nf-winreg-regdisablereflectionkey?redirectedfrom=MSDN |
||||||||
29 дек 20, 12:14 [22256279] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Mizer73, Нельзя сюда писать. Только админу. HKEY_LOCAL_MACHINE |
29 дек 20, 12:22 [22256289] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Значение по умолчанию прописывается в XML схеме. Заодно и провалидируешь документ. На счёт DTD не уверен. Тут прикол в том, что судя по документации видимо Майкрософт считает MSXML устаревшим. Типа гоу все на .NET. |
||||
29 дек 20, 12:27 [22256293] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, к сожалению, мне надо сюда писать, т.к. использую красивые компоненты. И надо прописать лицензию. |
29 дек 20, 12:39 [22256308] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, сюда же пишут программы свои настройки. Почему я не могу для своей программы написать настройки для своей проги? а эта лопата не работает копать сюда https://docs.microsoft.com/ru-ru/windows/win32/api/winreg/nf-winreg-regdisablereflectionkey?redirectedfrom=MSDN |
29 дек 20, 12:41 [22256310] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
petrav, Не. Схема это черезчур. Удачи! |
29 дек 20, 12:44 [22256317] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 10925 |
|
||||
29 дек 20, 12:44 [22256319] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Mizer73, Ты раздели. Настройки пользователя и настройки лицензии. Потом будет сообщение в вашей программе от вас. : "вы не имеете админских прав. Установка прекращена!" |
29 дек 20, 12:46 [22256320] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
PetroNotC Sharp, с проверкой лицензии все хорошо. все настроено. проблема одна - записать в реестр для 64 битных. |
29 дек 20, 13:08 [22256351] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
Basil A. Sidorov, при первичном запуске под админом - все хорошо. все записывается. но в другую ветку для 32 битных. // long f = RegDisableReflectionKey(HKEY_LOCAL_MACHINE); long f = RegEnableReflectionKey(HKEY_LOCAL_MACHINE); не работает |
29 дек 20, 13:10 [22256354] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Тебе уже дали ссылку в разделе Windows. Далее ходи на описание флагов перенаправления, использующихся при открытии ветки (и отсутствующих в Билдере). Например, KEY_WOW64_32KEY. Сообщение было отредактировано: 29 дек 20, 13:22 |
29 дек 20, 13:26 [22256389] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Обычно лицензии запрещают их распространение и передачу. Так что лучше тебе обратиться за поддержкой к продавцу этих компонент, а все твои топики на этом форуме будут удалены за нарушение правил форума. Posted via ActualForum NNTP Server 1.5 |
||
29 дек 20, 13:34 [22256398] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Мое имхо что странную прихоть ты придумал сам себе. Если коммонент Не работает без админа и реестра рутового, то так и напиши здесь на форуме. А так не интересно. Удачи! |
||||
29 дек 20, 13:36 [22256400] Ответить | Цитировать Сообщить модератору |
Mizer73 Member Откуда: Питер Сообщений: 251 |
не запрещают, т.к. лицензия на "одно место программиста". хочу уйти от отдельной установки пакета, т.к. сама программа не требует установочного пакета |
||||||
29 дек 20, 14:12 [22256431] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
И устанавливаться она должна на одном месте программиста. Её нельзя пихать в установку программы, написанной этим программистом. Её нельзя устанавливать на двух местах одновременно. Posted via ActualForum NNTP Server 1.5 |
||
29 дек 20, 14:43 [22256460] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Както чудно. С точки с запятой начинается комментарий? |
||||||||
29 дек 20, 15:01 [22256484] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Конечно комментарий, это не id. Такой ini читается как книга, всё просто и понятно. |
||||||||
29 дек 20, 15:17 [22256509] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Так у тебя values нету. Если убрать каменты получистя1.1 -1.2 1.3 А где само тело конфига? Или это был неудачный пример? |
29 дек 20, 15:34 [22256531] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Чудно - чёрт с ним. Проблема в том, что это совершенно не машино-писабельно. То есть править такой конфиг может исключительно человек. Posted via ActualForum NNTP Server 1.5 |
||
29 дек 20, 15:37 [22256533] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Так это и есть values и тело конфига (то что вы процитировали). Причём значения могут быть разных типов, не только double. |
||||
29 дек 20, 15:37 [22256534] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
petrav, Вот оракл любит книгообразие, а MS не любит. Имей ввиду. |
29 дек 20, 15:52 [22256544] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Его и правит только человек. :) Но я не вижу проблем добавить в парсер возможность записи такого файла (с сохранением комментариев). Подумать придётся только о сохранении выравнивания. |
||||||
29 дек 20, 17:54 [22256667] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
petrav, Тогда надо убрать из меню п.п. Сервис - настройки. Иначе дублирование. |
29 дек 20, 18:01 [22256675] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51017 |
Да я не против комментариев. Кстати посмотри этот топик. https://www.sql.ru/forum/1324921/semantika-yaml-dokumenta Может пригодится. |
||||||||
29 дек 20, 18:06 [22256681] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
А я - вижу. Но если сумеете сделать рабочий код не слишком монстрообразным - дайте на посмотреть. Posted via ActualForum NNTP Server 1.5 |
||
29 дек 20, 18:29 [22256699] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Кстати, люди, а как бы вы назвали такой формат файла настроек? Мне в голову приходит только plain-ini. Просто мне название парсера нужно придумать, но что-то plain-in мне не нравится. А больше ничего в голову не приходит. |
||||||||
5 мар 21, 18:59 [22290417] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Если я честно отвечу на этот вопрос - меня забанят. К .ini этот формат не имеет никакого отношения, он совершенно кастомный. Posted via ActualForum NNTP Server 1.5 |
||
5 мар 21, 19:07 [22290423] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 10925 |
flatINI? |
5 мар 21, 19:08 [22290424] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Вот поэтому мне и не нравится название plain-ini. Культурное нужно придумать. Он не кастомный в смысле что каждый файл уникальный. Структура и общая идея то присутствуют. |
||||||
5 мар 21, 19:10 [22290426] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Ну и назовите "structured idea parser". PS: Или "structured text data". Расширение файла получится .std. Сообщение было отредактировано: 5 мар 21, 19:14 |
||
5 мар 21, 19:17 [22290429] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7650 |
Любите вы Г... решения))) |
||||||||
5 мар 21, 19:23 [22290432] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: 1 2 3 4 5 6 [все] |
Все форумы / C++ | ![]() |