powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запись в реестр
25 сообщений из 140, страница 2 из 6
Запись в реестр
    #40031701
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,
Убери goto
...
Рейтинг: 0 / 0
Запись в реестр
    #40031717
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
Код: plaintext
1.
2.
3.
4.
5.
6.
 g63:
		if (!reg2->KeyExists("Software\\ExtraMaster\\"))
		{
			reg2->CreateKey("Software\\ExtraMaster\\");
			goto g63;
		}


Ты понимаешь что произойдет если CreateKey() по каким-либо причинам не создаст ветку реестра? Твоя программа превратит процессор в обогреватель. Нельзя так писать.

Как выше уже написали - надо получать код ошибки и как-то разбираться с причиной ошибки.
...
Рейтинг: 0 / 0
Запись в реестр
    #40031723
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

имеется в виду, что выдаёт if ?
...
Рейтинг: 0 / 0
Запись в реестр
    #40031725
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
точно, но это на период разработки. Естественно, все это будет уделано проверками по видам ошибок.
пока я не могу разобраться с определенными вещами, что бы делать какую то общую системную обработку ошибок.
там у меня перед всем этим стоит try, который и возьмет на себя основную задачу обработки ошибок. И добавяится вложенные try.
грелки не будет.
...
Рейтинг: 0 / 0
Запись в реестр
    #40031726
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton
Еще довод. Реестр проще бэкапить и реплицировать. Как с БД у админа будет сфокусировано внимание на одной сущности. А не на тысяче
директорий и еще бох его знает надо их бэкапить или нет т.к. в файловой системе обычно создается некий флуд скрытых
фолдеров-конфигов которые могут быть не нужны (не релевантны) к ведению админской деятельности.

Спорный довод. Вся прога вместе в конфигами может жить в одной папке, тогда ее очень легко бэкапить или переносить.

Я абсолютно поддержу этот aproach как родной для Unix/Linux подобных конфигураций. Он исторически
прижился и вообще файлы в Linux системах наполнены более широким смыслом нежели в Windows.
Сюда-же семантика скрытого фолдера (начинающийся с точки). Это все - наследние Unix/Linux.

Реестр в Windows все таки зашел эволюционным путем через боль администрирования крупных парков рабочих
станций и поэтому наш спор надо рассматривать именно в разрезе крупного предприятия где есть домены
на базе Microsoft AD и есть чистые Windows рабочие станции на которых надо каждый день делать много
хозяйственных действий.
...
Рейтинг: 0 / 0
Запись в реестр
    #40031728
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Код: plaintext
1.
if (!reg2->KeyExists("Software\\ExtraMaster\\"))


это не даёт ошибки. Ветка и параметр есть. Думаю, что он просто, не видит параметров, т.к. видимо не установлен курсор на эту ветку, или как?
...
Рейтинг: 0 / 0
Запись в реестр
    #40031732
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
PetroNotC Sharp,

имеется в виду, что выдаёт if ?

Нет.
Это шаг любого программиста. Умение логировать. Умеем?
...
Рейтинг: 0 / 0
Запись в реестр
    #40031733
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
Dima T,

Код: plaintext
1.
if (!reg2->KeyExists("Software\\ExtraMaster\\"))


это не даёт ошибки. Ветка и параметр есть. Думаю, что он просто, не видит параметров, т.к. видимо не установлен курсор на эту ветку, или как?

Логирование.
Пошаговая отладка.
...
Рейтинг: 0 / 0
Запись в реестр
    #40031749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Mizer73
Dima T,

Код: plaintext
1.
if (!reg2->KeyExists("Software\\ExtraMaster\\"))


это не даёт ошибки. Ветка и параметр есть. Думаю, что он просто, не видит параметров, т.к. видимо не установлен курсор на эту ветку, или как?

Логирование.
Пошаговая отладка.

А можете вызвать нормальную функцию из этих https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-functions ?

И дать код ошибки.
...
Рейтинг: 0 / 0
Запись в реестр
    #40031765
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

как можно залогировать результат выполнения if ?
...
Рейтинг: 0 / 0
Запись в реестр
    #40031768
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
PetroNotC Sharp,

как можно залогировать результат выполнения if ?

Вот так
Код: plaintext
1.
2.
3.
4.
5.
log(“1")
if.... {
   log(“2
}
log("3
...
Рейтинг: 0 / 0
Запись в реестр
    #40031773
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА можете вызвать нормальную функцию

Во-первых, не может. Во вторых, толку-то, если у него логика в коде отсутствет как
таковая. "Если ветка не существует - создать её, потом ещё раз открыть или создать, ах
нет, закомментируем открытие, оно же не работает..."

Аффтар, проверки существования ветки и ключей не нужны тебе в коде вообще. Убери их.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запись в реестр
    #40031791
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp, это я понимаю и пользуюсь. Я не понимаю, что записывать в лог1, лог 2 и лог3 - какие состояния?
...
Рейтинг: 0 / 0
Запись в реестр
    #40031809
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	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
...
Рейтинг: 0 / 0
Запись в реестр
    #40031812
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
PetroNotC Sharp, это я понимаю и пользуюсь. Я не понимаю, что записывать в лог1, лог 2 и лог3 - какие состояния?

Сначала просто цифры 1,2,.... чтобы проверить логику кода.
Потом
Код: plaintext
1.
2.
3.
4.
5.
getTextKey() {
..... 
} 
... 
log(getTextKey("мойКлючик"))
...
Рейтинг: 0 / 0
Запись в реестр
    #40031813
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

логика понятна - идет создавать ветку, если её нет. Дальше смотрит - если нет параметра, то идет создавать параметр.
Ветку создает, параметр - нет.
на создание параметра пишет: Faild set data for Connect
...
Рейтинг: 0 / 0
Запись в реестр
    #40031814
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
PetroNotC Sharp,


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	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

И где логи? Где скрин ошибки? Где комментарий в коде?
Работай!
...
Рейтинг: 0 / 0
Запись в реестр
    #40031816
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
PetroNotC Sharp,

логика понятна - идет создавать ветку, если её нет. Дальше смотрит - если нет параметра, то идет создавать параметр.
Ветку создает, параметр - нет.
на создание параметра пишет: Faild set data for Connect

Это у тебя в голове. А машину проверяют КАЖДУЮ строку для новичка.
Ферштейн?
...
Рейтинг: 0 / 0
Запись в реестр
    #40031818
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73логика понятна - идет создавать ветку, если её нет.

Теперь включи формальную логику: "а если ветка есть?"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запись в реестр
    #40031819
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Mizer73логика понятна - идет создавать ветку, если её нет.

Теперь включи формальную логику: "а если ветка есть?"

Тут сложнее))). Без формальной логики это женский ум)))
...
Рейтинг: 0 / 0
Запись в реестр
    #40031827
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,
я и иду по каждой строке. На данной момент - нет параметра в ветке. И создать его не получается.
Для меня главное понять логику. Есть конкретная команда создания ветки - CreateKey. А параметр, получается, создаётся только записью значения. А как машина понимает, что я записываю данный параметр именно в эту ветку?
...
Рейтинг: 0 / 0
Запись в реестр
    #40031828
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ветки (фолдеры) или ключи реестра мы вынесем за скобки - то тогда жизнь намного упрощается.

Вообще какой смысл несут ключи если в них нет значений? Я думаю автору стоит просто взглянуть на задачу
под другим углом.
...
Рейтинг: 0 / 0
Запись в реестр
    #40031829
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73А как машина понимает, что я записываю данный параметр именно в эту ветку?

Внезапно, но никак. Открой уже для себя справку по TRegistry.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запись в реестр
    #40031831
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
PetroNotC Sharp,
я и иду по каждой строке. На данной момент - нет параметра в ветке. И создать его не получается.
Для меня главное понять логику. Есть конкретная команда создания ветки - CreateKey. А параметр, получается, создаётся только записью значения. А как машина понимает, что я записываю данный параметр именно в эту ветку?

Ты меня не слышишь или споришь?
Я просил дать логи и скрин.
Твое право болтать и болтать дальше.
...
Рейтинг: 0 / 0
Запись в реестр
    #40031837
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Вся прога вместе в конфигами может жить в одной папке, тогда ее очень легко бэкапить или переносить.

Как-то это примитивно. :)
...
Рейтинг: 0 / 0
25 сообщений из 140, страница 2 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запись в реестр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]