Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

c++ czy warto robić konfigurację programu do rejestru systemowego?

Ostatnio zmodyfikowano 2020-06-11 22:11
Autor Wiadomość
Gildin213
Temat założony przez niniejszego użytkownika
c++ czy warto robić konfigurację programu do rejestru systemowego?
» 2020-06-11 17:35:20
Hej mam dość duży projekt w c++ i mam dużo zmiennych do zapisania, warto zapisywać je do rejestru czy lepiej np do pliku .ini albo .cfg

zmienny jest 1029(int, DWORD, string, float, size_t, bool)


Jeżeli lepiej do pliku, polecicie jakąś funkcje ?
P-177040
pekfos
» 2020-06-11 18:10:42
Lepiej plik w formacie INI/XML/JSON, zwłaszcza że masz tych zmiennych dużo. Wtedy nie rezygnujesz też z przenośności na Linuksa.
P-177041
Gildin213
Temat założony przez niniejszego użytkownika
» 2020-06-11 18:48:56
Tylko ten projekt jest wyłącznie pod Windows'a 7+
Jak wykryje inny system niż Windows, to jest funkcja
exit( 1 )

Nadal lepiej do pliku? bo tworzenie pliku i wpisywanie konfiguracji funkcją np
WritePrivateProfileStringA
 
I wczytanie zawartości przez funkcję
GetPrivateProfileStringA

Chwilę trwa, przynajmniej u mnie na windows 10 pro

Robię to w pętli może dlatego

np, zmienna int
C/C++
for( auto value: ints )
{
    GetPrivateProfileStringA( value->category.c_str(), value->name.c_str(), "", value_l, 32, file.c_str() );
    * value->value = atoi( value_l );
}
co to ints?
C/C++
std::vector < ConfigValue < int >*> ints;

a tu rozwiązanie do ConfigValue
C/C++
template < typename T >
class ConfigValue
{
public:
    ConfigValue( std::string category_, std::string name_, T * value_ )
    {
        category = category_;
        name = name_;
        value = value_;
    }
   
    std::string category, name;
    T * value;
};
P-177044
pekfos
» 2020-06-11 19:02:02
Te funkcje się nie nadają do tego zastosowania. Wczytaj plik do pamięci raz i odczytaj wybrane informacje z pamięci. W tym celu użyj zwykłych operacji plikowych i zaimplementuj jakiś format, albo użyj gotowej biblioteki do standardowych formatów, jak np JSON.
P-177045
Gildin213
Temat założony przez niniejszego użytkownika
» 2020-06-11 19:19:41
Mam przyciski
"wczytaj"
"zapisz"
"usuń"
itd, te funkcje się nie powtarzają ciągle, tylko wtedy kiedy użytkownik wciśnie przycisk do zapisu lub wczytania konfiguracji
P-177046
DejaVu
» 2020-06-11 20:26:03
Również polecam pliki ponad ponad użycie rejestrów Windows. Czy to będzie INI czy JSON czy XML to już rzecz gustu.
P-177047
pekfos
» 2020-06-11 20:58:01
C/C++
for( auto value: ints )
{
    GetPrivateProfileStringA( value->category.c_str(), value->name.c_str(), "", value_l, 32, file.c_str() );
    * value->value = atoi( value_l );
}
GetPrivateProfileStringA() za każdym razem wczytuje plik od nowa, więc nie nadaje się do użycia w tym kontekście (w pętli, dla tego samego pliku), jeśli zła wydajność jest odczuwalna.
P-177049
Gildin213
Temat założony przez niniejszego użytkownika
» 2020-06-11 22:11:27
Dziękuje!
Wezmę Twoje porady do serduszka!
P-177050
« 1 »
  Strona 1 z 1