Ustawienia

dział ogólny

Ustawienia

Nowy postprzez Pitek » sobota, 26 grudnia 2009, 23:54

Chcę wprowadzić pewne ustawienia które użytkownik może zmieniać i mam pytanie jak to sie robi ?
Ja wiem tylko o używaniu zmiennych typu bool i nie tylko oraz warunków if.
Ale nie wiem czy nie jest to jakieś prymitywne i utrudnione bardziej niż ma być, czy jest na to jakiś sposób inny poprostu ?
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Ustawienia

Nowy postprzez Cyfrowy Baron » niedziela, 27 grudnia 2009, 13:39

Twoje pytanie jest zbyt ogólne. CO konkretnie chcesz zmieniać, chcesz zapisywać te ustawienia, to zapisuje je w plikach ini. Podaj jakiś przykład zmiany jakiegoś ustawienia.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Ustawienia

Nowy postprzez Pitek » niedziela, 27 grudnia 2009, 14:17

Np. Zmiana dokładności wyświetlanej średniej :
Kod: Zaznacz cały
bool srednia=true;
if(srednia==true)
{
   Form1->StringGrid1->Cells[45][p]=CurrToStrF(wynik,ffFixed,2);
}
else
{
   Form1->StringGrid1->Cells[45][p]=CurrToStrF(wynik,ffFixed,3);
}

Coś takiego jeżeli srednia będzie true (co jest ustawieniem domyślnym) to okładność jest do dwóch miejsc po przecinku.
Natomiast jeżeli srednia jest false to dokładność będzie do trzech miejsc po przecinku.
I to jest mój sposób na takie ustawienie teraz chciałbym np. zapisać to w pliku z ustawieniami i nie wiem jak oraz czy ten sposób jest dobry ?
Ostatnio edytowano niedziela, 27 grudnia 2009, 14:51 przez Pitek, łącznie edytowano 1 raz
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Ustawienia

Nowy postprzez polymorphism » niedziela, 27 grudnia 2009, 14:35

TIniFile może to wyglądać tak:
Kod: Zaznacz cały
/* czytasz */
int dokladnosc_sredniej = ini->ReadBool("ustawienia","dokladnosc.sredniej" ,true) ? 2 : 3;

/* zapisujesz */
ini->WriteBool("ustawienia","dokladnosc.sredniej" ,dokladnosc_sredniej == 2);

/* używasz */
Form1->StringGrid1->Cells[45][p] = CurrToStrF(wynik,ffFixed,dokladnosc_sredniej);
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Ustawienia

Nowy postprzez Cyfrowy Baron » niedziela, 27 grudnia 2009, 15:09

Co do tego Twojego przykładu, to lepiej żeby średnia była typu int, wtedy sprawa jest dużo prostsza:

Kod: Zaznacz cały
Form1->StringGrid1->Cells[45][p] = CurrToStrF(wynik, ffFixed, srednia);


O tworzeniu i pobieraniu danych z plików ini przeczytasz w serwisie Cyfrowy Baron dział: teoria -> pliki ini.

Dane konfiguracyjne możesz zapisywać w dowolnym momencie podczas działania programu, a najlepiej zawsze gdy zachodzi jakaś zmianach w tych danych. Pliki ini mają tą zaletę, że tworząc prywatny lub publiczny obiekt klasy TIniFile nie musisz zapisywać wszystkich danych konfiguracyjnych na raz, możesz zapisać tylko to co się zmienia.

Wczytywanie danych konfiguracyjnych najlepiej realizować zawsze podczas uruchamiania programu, np. w zdarzeniu OnCreate.

Odnosząc się do przykładu polymorphism z założeniem, że średnia jest typu integer a nie bolean:

Kod: Zaznacz cały
    TIniFile *ini = new TIniFile(ExtractFilePath(ParamStr(0)) + "Nazwa_pliku.ini");
     int dokladnosc_sredniej;

    /* czytasz */
    dokladnosc_sredniej = ini->ReadInteger("ustawienia","dokladnosc.sredniej", 2); // wartość domyślna 2, jeżeli plik nie zawiera takiego rekordu

    /* używasz */
    Form1->StringGrid1->Cells[45][p] = CurrToStrF(wynik,ffFixed, dokladnosc_sredniej);
   
    dokladnosc_sredniej = 3; // zmiana wartości domyślnej

    /* zapisujesz */
    ini->WriteInteger("ustawienia","dokladnosc.sredniej", dokladnosc_sredniej); // zapisanie zmian w wartości domyśłnej

Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości