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 ? |
|
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. |
|
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 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? std::vector < ConfigValue < int >*> ints;
a tu rozwiązanie do ConfigValue 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; };
|
|
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. |
|
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 |
|
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. |
|
pekfos |
» 2020-06-11 20:58:01 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. |
|
Gildin213 Temat założony przez niniejszego użytkownika |
» 2020-06-11 22:11:27 Dziękuje! Wezmę Twoje porady do serduszka! |
|
« 1 » |