Zapamiętanie ustawień programu przy zamykaniu PDF Drukuj Email
Wpisał doctor   
Niedziela, 02. Grudzień 2007 03:18
Zapamiętanie ustawień programu przy zamykaniu aplikacji

Często piszemy programy, które użytkownik może wedle upodobań spersonalizować. Spersonalizowanie programu daje wiele korzyści, m.in. nie trzeba wielokrotnie ustawiać tych samych parametrów a tym samym usprawnia pracę z programem.Na potrzeby systemu Windows wymyślono pliki ini, które w założeniu miały służyć zapisowi i odczytowi wartości do pliku tekstowego, coś na wzór prostej bazy danych. Z czasem pliki ini były zastępowane przez rejestr systemu, a obecnie przeważa zapisywanie danych konfiguracyjnych w plikach XML. Jednak pliki ini nie zostały wyparte z całkowitego użycia, a to za sprawą prostoty używania oraz swojej elastyczności.

Pliki ini nie mają zdefiniowanego formatu danych (!), a więc warto stosować się do zaleceń, które obowiązują przy ich stosowaniu.

Budowa pliku ini
[sekcja1]
; komentarz1
zmienna1=wartosc1
zmienna2=wartosc2
[sekcja2]
; komentarz2
zmienna3=wartosc3

Komentarz w pliku jest opcjonalny.

Zalecenia przy pisaniu plików ini
  • stosuj komentarz zaczynający się średnikiem (nie hashem)
  • w ramach tej samej sekcji nie dodawaj zmiennych o tej samej nazwie
  • nie dodawaj sekcji o tych samych nazwach
  • nazwa sekcji jest rozróżniana poprzez umieszczenie jej w nawiasach kwadratowych
  • stosuj raczej gotowe klasy obsługujące pliki ini
  • aby przejść do nowej linii dodaj znak ukośnika '\'

Przykład
W ramach ćwiczeń, napiszemy program, który będzie zapisywał pozycje formy Left oraz Top przy zamykaniu programu, a podczas uruchamiania będzie je odczytywał z pliku ini. Posłużymy się tu klasą TIniFile. W tym celu do nagłówka programu musimy dołączyć

#include <inifiles.hpp>

Na formę kładziemy dwa komponenty Label.
W zdarzeniu OnShow aplikacji wpisujemy następujący kod: {viewonly=registered}

void __fastcall TForm1::FormShow(TObject *Sender)
{
int posx, posy;

TIniFile *Ini = new TIniFile(".\\plik.ini");
posx = Ini->ReadInteger("Position", "Posx", posx);
posy = Ini->ReadInteger("Position", "Posy", posy);

delete Ini;
Label1->Caption = IntToStr(posx);
Label2->Caption = IntToStr(posy);
Form1->Left = posx;
Form1->Top = posy;
}

Ten kod odpowiedzialny jest za odczytywanie poprzednich ustawień z pliku ini podczas uruchamiania programu.
Kilka słów wyjaśnienia. Plik ini zapisujemy w katalogu programu. Jeśli ominiemy kropkę w ciągu ".\\plik.ini", to plik ini zostanie zapisany w katalogu systemowym. Musimy o tym pamiętać.
Natomiast jeśli usuniemy plik ini, to nie będzie można uruchomić programu (wyjątek w zdarzeniu OnShow), O tym także należy pamiętać. A więc właściwa kolejność postępowania przy plikach ini jest następująca: najpierw zapisać zmienne, a dopiero potem je odczytywać.

Zdarzenie OnClose aplikacji (odpowiedzialne za zapis parametrów) uzupełniamy następującym kodem:

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
int posx = Form1->Left;
int posy = Form1->Top;

TIniFile *Ini = new TIniFile(".\\plik.ini");
Ini->WriteInteger("Position", "Posx", posx);
Ini->WriteInteger("Position", "Posy", posy);
delete Ini;
}


Warto jeszcze wspomnieć dwa słowa o możlkiwościach klasy TIniFile. W ramach tej klasy mamy do dyspozycji następujące metody:
ReadString
WriteString
ReadInteger
WriteInteger
ReadBool
WriteBool
ReadSection
ReadSections
ReadSectionValues
EraseSection
DeleteKey
UpdateFile
ReadSections
ReadBinaryStream
ReadDate
ReadDateTime
ReadTime
ReadFloat
WriteBinaryStream
WriteDate
WriteDateTime
WriteFloat


oraz właściwości
SectionExists
ValueExists
{/viewonly}
Komentarze
Dodaj nowy Szukaj
+/-
Napisz komentarz
Nick:
E-mail:
 
Strona www:
Tytuł:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Proszę wpisać kod antyspamowy widoczny na obrazku.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Ostatnia aktualizacja: Niedziela, 02. Grudzień 2007 03:45
 
 

Losowy obraz

b12.jpg

Gościmy

Naszą witrynę przegląda teraz 10 gości 




| | | |