Gemme data til næste startup

Tags:    c++

<< < 12 > >>
Ja, overskriften siger det meste:
Hvordan får jeg mit program til at huske om brugeren f.eks. har klikket på en checkbox?

Kunne self. gøres med en .txt fil som man åbner og lukker, men det virker bare lidt "plat"

Er det noget med DLL??



Hvad mener du med at gemme til næste startup?
Mener du at du skal gemme noget efter dit program er lukket, men kun indtil du genstarter din maskine?



Det er da ikke særligt plat, hvis du bare sørger for at der er noget struktur i din text fil.

f.eks kunne din state af din checkbox vel gemmes med linien

checkbox1=True/False

hvor checkbox1 selvfølgelig er navnet på boxen og true eller false er checkstaten.

Så skulle du bare skrive/finde koden der kan læse og skrive sådanne textfiler.

Ini filer f.eks. som jo er ret brugte er ikke andet ind en txt fil med en speciel syntax.

At gemme data i txt fil med en fornuftig syntxt har jo også den fordel at du kan læse filen selv.



Det er da ikke særligt plat, hvis du bare sørger for at der er noget struktur i din text fil.

f.eks kunne din state af din checkbox vel gemmes med linien

checkbox1=True/False

hvor checkbox1 selvfølgelig er navnet på boxen og true eller false er checkstaten.

Så skulle du bare skrive/finde koden der kan læse og skrive sådanne textfiler.

Ini filer f.eks. som jo er ret brugte er ikke andet ind en txt fil med en speciel syntax.

At gemme data i txt fil med en fornuftig syntxt har jo også den fordel at du kan læse filen selv.



Jeg er ganske enig. Text filer (eller rettere .ini filer) er meget brugt til noget sådan og Windows har et API til brug for sådanne, så du skal ikke en gang lave en parser til filen.

DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // points to section name
LPCTSTR lpKeyName, // points to key name
LPCTSTR lpDefault, // points to default string
LPTSTR lpReturnedString, // points to destination buffer
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // points to initialization filename
);

BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // pointer to section name
LPCTSTR lpKeyName, // pointer to key name
LPCTSTR lpString, // pointer to string to add
LPCTSTR lpFileName // pointer to initialization filename
);

Alternativt kunne du gemme det i registry, men jeg ville nok vælge at bruge .ini filer hvis jeg var dig.

Hth




Filer fremfor registry har også den fordel at det er lettere at porte til andre platforme.



Filer fremfor registry har også den fordel at det er lettere at porte til andre platforme.


Præcis derfor jeg også anbefalede det :)



okay!

hvad er en .ini fil? og hvad er foskellen på den og en .txt?
Og nice med de to funktioner!



eller hvad med sqlite?



Tjekkede lige dine to funktioner op Jess og prøv li' at se hvad Microsoft skriver:
Fold kodeboks ind/udKode 




okay!

hvad er en .ini fil? og hvad er foskellen på den og en .txt?
Og nice med de to funktioner!


En .ini fil det ER en tekst fil. Den er blot i et bestemt format. Du kan se et eksempel på et sådan, hvis du kigget i filen c:\\windows\\win.ini. De er bygget op efter følgende struktur.

[Section1]
Key1=Value1
Key2=Value2
KeyN=ValueN

[Section2]
Key1=Value1
Key2=Value2
KeyN=ValueN

En nem og hurtig adgang til denne struktur fåes via de to API kald jeg skrev til dig tidligere. Du kan så selv vælge om du blot vil have en enkelt værdi for hver nøgle eller om du vil have et værdisæt som du senere selv parser. Et eksempel på et værdisæt for en nøgle kan du se her nedenfor.

[Section3]
Key1=(X,Y,Z)

HTH




Tjekkede lige dine to funktioner op Jess og prøv li' at se hvad Microsoft skriver:
Fold kodeboks ind/udKode 


Det er hvad MS *anbefaler*, det er altså ikke påkævet, og funktionaliteten er OGSÅ tilgængelig fra 32 bit applikationer.

Som Per skriver, og som jeg er enig med ham i, så er det bedre at gemme det i en fil, da det så er nemmere at portere til andre platforme.




<< < 12 > >>
t