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 ;)
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...
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
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.