pliki konfiguracyjne / pomocy dla własnych programów

0

Program który pisze musi przechowywać / udostępniać użytkownikowi dane do konfiguracji i plik pomocy i teraz pytanie rzeczy takie jak pomoc, konfiguracja powinny być w osobnych plikach dołączanych do aplikacji czy można pewne rzeczy wbić na sztywno do programu? jeżeli pliki to .txt czy binarne? i czy wewnętrzna struktura przechowywania tych danych w pliku ma jakieś znaczenie? bo jakoś trzeba by oddzielać / rozpoznawać polecenia, opcje konfiguracji podczas ich wczytywania. Czy jest na to jakiś 'wzorzec' postępowania? Dzięki ;)

1

konfiguracja powinny być w osobnych plikach dołączanych do aplikacji czy można pewne rzeczy wbić na sztywno do programu?

Zależy co masz na myśli - ogólnie to plik konfiguracyjny (formatu XML czy co tam sobie wybierzesz) powinien być w katalogu z programem w katalogu domowym użytkownika (chyba, że zdecydujesz się na Windowsowy rejestr).
Parę rzeczy powinno być w programie wbudowanych jako ustawienia domyślne - czyli, że gdy w pliku będzie brakować np.informacji o kolorze jakiegoś komponentu, niech program automatycznie ustawi tę wartość na jakąś domyślną.
Plik z pomocą możesz dołączyć do programu (zasoby) lub umieścić w katalogu z programem; użytkownik i tak na to nie zwróci uwagi, a w gruncie rzeczy również na jedno wychodzi podczas pisania.

jeżeli pliki to .txt czy binarne?

Hę?
Do konfiguracji skorzystaj z gotowego parsera XML/INI/czegokolwiek i po problemie, a do pliku pomocy to cóż... zależy.

bo jakoś trzeba by oddzielać / rozpoznawać polecenia, opcje konfiguracji podczas ich wczytywania

Zależnie od formatu tego Twojego pliku pomocy...

0

Dzięki za odpowiedź, w takim razie pomoc zrobię chyba najprościej jak się da czyli plik .txt w katalogu z programem i na odpalenie helpa z programu odczytam cały plik i wyrzucę na jakiś textview a co do plików konfiguracyjnych poczytam o gotowych generatorach ale widzę że nie ma zgodności co do umieszczenia takich plików, dodam że zależy mi na rozwiązaniu działającym na windows / linux

0

Możesz również utworzyć strukturę z danymi i zapisywać ją jako fragment bajtów poprzez rzutowanie (również nie szkodzi użyć klas)

#include <iostream>
#include <fstream>

using namespace std;

struct Configuration
{
    int a, b, c, d;
    char e;
    float f;
};

void save(Configuration configstrct)
{
    ofstream configfile("config.dat");
    configfile.write((char*)&configstrct, sizeof(configstrct)); // zapisujemy
}

Configuration load(void)
{
    Configuration r;
    ifstream configfile("config.dat");
    configfile.read((char*)&r, sizeof(r));
    return r;
}

void print(Configuration c)
{
    cout << c.a << ' ' << c.b << ' ' << c.c << ' ' << c.d << ' ' << c.e << ' ' << c.f << endl;
}

int main()
{
    Configuration write = {1, 2, 3, 4, 'o', 3.14f}; // przykladowa konfiguracja
    save(write);
    Configuration read = load();

    print(write);
    print(read);

    return 0;
}

Jedyną wadą jest znikoma kompatybilność wsteczna dla takiej konfiguracji. Zaletą zaś jest upakowanie danych. Taki trick z rzutowaniem na binarne dane przydaje się podczas komunikacji z gniazdkami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1