 |
|

04.09.2022, 23:41
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
What`s up, niggers! Мне понадобился класс для работы с реестром Windows.
Смог найти только древнейший класс от @SR_team: https://www.blast.hk/threads/13855
Код там старый, кривой и не безопасный. Решил написать свой классик, дропаю всем.
Все методы задокументированы, разобраться не составить труда.
Умные разработчики - предлагайте правки кода в теме.
Исходник: https://github.com/Receiver1/re_regedit
Использование:
C++:
[CODE]
// Подробнее на странице GitHub
re
.
openCatalog
(
RegEdit
::
Key
::
KEY_CURRENT_USER
,
"Software\\test-app"
)
;
re
.
setString
(
"access_token"
,
"new-access-token"
)
;
re
.
setUlong
(
"expires_in"
,
123
)
;
std
::
string accessToken
{
re
.
getString
(
"access_token"
)
}
;
std
::
cout
|
|
|

04.09.2022, 23:50
|
|
Постоянный
Регистрация: 19.06.2018
Сообщений: 961
С нами:
4158550
Репутация:
163
|
|
за пределами бласта не пробовал искать?
|
|
|

05.09.2022, 00:00
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Говно одним словом.
Как минимум:
Вместо нормальных эксепшенов юзается самописное говно(спасибо хоть за то, что наследовано от
).
А еще это самописное говно полная хуета. Привет от виртуального деструктора.
В чем проблема была заюзать
Поехали дальше:
Вместо
принимается
Ну и вишенка на торте - уебанский интерфейс. Есть много вариантов сделать нормально, например как у мапы, или как у жсона, но был выбран самый уебский и систайловый.
В чем проблема сделать
C++:
Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
std
::
visit
(
*
it
,
[
]
(
const
auto
&
value
)
{
using
T
=
std
::
remove_cv_ref_t
;
if
constexpr
(
std
::
is_same_v
)
{
// ...
}
else
if
constexpr
(
std
::
is_same_v
)
{
// ...
}
else
{
// ...
}
}
)
;
}
Или
C++:
Код:
RegEdit r
;
try
{
auto
value
=
r
.
get
(
"key"
)
;
}
catch
(
const
std
::
runtime_error
&
ec
)
{
// wrong type ...
// ... or key not found
}
Или
C++:
Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
auto
value
=
it
.
get
(
)
;
}
Короче одним словом:

|
|
|

05.09.2022, 00:11
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
|
|
|

05.09.2022, 01:16
|
|
Постоянный
Регистрация: 10.07.2019
Сообщений: 453
С нами:
3602995
Репутация:
98
|
|
Сообщение от kin4stat
и оба говно
ждем от тебя класс
|
|
|

05.09.2022, 10:42
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Сообщение от kin4stat
Говно одним словом.
Как минимум:
Вместо нормальных эксепшенов юзается самописное говно(спасибо хоть за то, что наследовано от
).
А еще это самописное говно полная хуета. Привет от виртуального деструктора.
В чем проблема была заюзать
Поехали дальше:
Вместо
принимается
Ну и вишенка на торте - уебанский интерфейс. Есть много вариантов сделать нормально, например как у мапы, или как у жсона, но был выбран самый уебский и систайловый.
В чем проблема сделать
C++:
Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
std
::
visit
(
*
it
,
[
]
(
const
auto
&
value
)
{
using
T
=
std
::
remove_cv_ref_t
;
if
constexpr
(
std
::
is_same_v
)
{
// ...
}
else
if
constexpr
(
std
::
is_same_v
)
{
// ...
}
else
{
// ...
}
}
)
;
}
Или
C++:
Код:
RegEdit r
;
try
{
auto
value
=
r
.
get
(
"key"
)
;
}
catch
(
const
std
::
runtime_error
&
ec
)
{
// wrong type ...
// ... or key not found
}
Или
C++:
Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
auto
value
=
it
.
get
(
)
;
}
Короче одним словом:
Хорошая идея на счёт
. А вот твою ***ню про итераторы я вообще не понял. Зачем получать итератор через
, чтобы потом в итоге всё равно использовать
, лол? Ты предлагаешь сделать перебор ключей через итераторы, но когда ты обращаешься к реестру - заранее знаешь в каком ключе находится твой каталог. И что начнётся если каталог существует в нескольких ключах одновременно. =/
|
|
|

05.09.2022, 12:18
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Нововведения и исправления: - Исправил краш при вызове
- Добавил
- Добавил поддержку
- Заменил кастомный
на
|
|
|

05.09.2022, 12:55
|
|
Участник форума
Регистрация: 21.07.2020
Сообщений: 280
С нами:
3059886
Репутация:
68
|
|
*****тые теги

|
|
|

05.09.2022, 18:04
|
|
Постоянный
Регистрация: 10.07.2019
Сообщений: 453
С нами:
3602995
Репутация:
98
|
|
Сообщение от MeG@LaDo[N] ^_^
*****тые теги
тему создал не @kin4stat так что не удивительно
|
|
|

06.09.2022, 14:34
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Нововведения и исправления: - Исправлено непредсказуемое поведение
- При использовании
строка реаллоцируется
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|