[ Pobierz całość w formacie PDF ]
.Jak wida�, w powy�szym fragmencie koduzastosowana zosta�a konstrukcja try�finally � jej zadaniem jest zapewnienieprawid�owego zwolnienia zmiennej Reg przed powrotem z procedury.Nast�pstwem niepowodzenia podczas zapisu lub odczytu danych z�klucza jestwygenerowanie wyj�tku przez VCL.Je�eli spróbujesz odczyta� dane z klucza,który nie zosta� otwarty, spowodujesz wygenerowanie wyj�tku.Istniej� wi�c dwiemo�liwo�ci: albo przed przyst�pieniem do zapisu lub odczytu pól danych b�dzieszsprawdza� warto�� zwracan� przez funkcj� OpenKey, albo b�dziesz musia�przygotowa� si� na obs�u�enie wyj�tku.Na koniec zauwa� równie�, �e w powy�szym kodzie przetwarzany klucz nie jestnigdzie jawnie zamykany.Je�eli zaniedbasz operacj� zamkni�cia klucza, zrobi toza Ciebie destruktor klasy TRegistry.W tym przypadku destruktor zostaniewywo�any (a przez to zamkni�ty zostanie klucz) kiedy tylko usuni�ty zostanieobiekt Reg, dlatego wywo�anie metody CloseKey nie jest wymagane.Funkcja OpenKey dodaje automatycznie warto�� w�a�ciwo�ci RootKey (domy�lnieHKEY_CURRENT_USER) do pocz�tku przekazanego jej �a�cucha, dlatego przyotwieraniu klucza nie trzeba podawa� klucza g�ównego.Zapisywanie do RejestruPostawi�em przed chwil� przys�owiowy wóz przed koniem, dyskutuj�c na tematczytania z Rejestru � podczas gdy Ty nic jeszcze do niego nie zapisa�e�.Nie mato znaczenia � pisanie do Rejestru jest równie proste:procedure TForm1.FormDestroy(Sender : TObject);varReg : TRegistry;beginReg := TRegistry.Create;tryReg.OpenKey('Software\SAMS\Delphi 4 in 21 Days', True);Reg.WriteInteger('Top',Top);Reg.WriteInteger('Left',Left);Reg.WriteInteger('Width',Width);Reg.WriteInteger('Height',Height);finallyReg.Free;end;end;Ten fragment kodu otwiera klucz i zapisuje do niego w�a�ciwo�ci formularza Top,Left, Width i Height wykorzystuj�c do tego celu metod� WriteInteger.Zauwa�, �eostatnim parametrem wywo�ania funkcji OpenKey jest True.Oznacza to, �e je�elido tej pory klucz nie istnia�, powinien zosta� utworzony.Je�eli u�yjesz tejmetody, nigdy nie b�dziesz musia� w ogóle wywo�ywa� metody CreateKey.To ju� w zasadzie wszystko na temat odczytywania i zapisywania warto�ci do/zRejestru.Zapisywanie i odczytywanie innych typów danych opiera si� po prostuna innych odmianach powy�szego kodu.Wykorzystanie Rejestru do przechowywania danychListing 14.3 przedstawia g�ówny modu� aplikacji o nazwie RegTest, którakorzysta z�Rejestru do przechowywania specyficznych dla siebie informacji.Program ten zapisuje w Rejestrze kilka elementów: ostatni rozmiar i pozycj�okna; stan okna (normalny, zminimalizowany lub zmaksymalizowany); ostatnikatalog; ostatni plik; indeks filtru u�yty jako ostatni podczas otwieraniapliku w oknie dialogowym Otwórz, a tak�e dat� i czas ostatniego uruchomieniaprogramu.Aby wyczy�ci� klucze Rejestru stworzone za pomoc� RegTest, wystarczyklikn�� na przycisku Delete Key umieszczonym w g�ównym formularzu (patrzrysunek 14.4 w dalszej cz�ci tego rozdzia�u).Program ten znajduje si� równie�na dyskietce do��czonej do ksi��ki.Listing 14.3.RegTestU.pasunit RegTestU;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, Menus, StdCtrls, ExtCtrls, Registry;typeTMainForm = class(TForm)Panel1: TPanel;Label1: TLabel;DeleteKey: TButton;Panel2: TPanel;Label2: TLabel;Label3: TLabel;TimeLabel: TLabel;DateLabel: TLabel;MainMenu: TMainMenu;File1: TMenuItem;FileOpen: TMenuItem;FileExit: TMenuItem;OpenDialog: TopenDialog;procedure FormCreate(Sender: TObject);procedure FileOpenClick(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure FileExitClick(Sender: TObject);procedure DeleteKeyClick(Sender: TObject);private{ Private declarations }KeyDeleted : Boolean;public{ Public declarations }end;varMainForm: TMainForm;implementation{$R *.DFM}procedure TMainForm.FormCreate(Sender: TObject);varReg : TRegistry;KeyGood : Boolean;DT : TDateTime;Top : Integer;Left : Integer;Width : Integer;Height : Integer;begin{Zainicjalizowanie zmiennej KeyDeleted warto�ci� False.{Zmienna ta jest ustawiana gdy u�ytkownik usunie klucz{w programie.Patrz funkcja FormDestroy }KeyDeleted := False;{Utworzenie obiektu klasy TRegistry, aby uzyska� dost�p do{Rejestru }Reg := TRegistry.Create;try{Otwarcie klucza}KeyGood := Reg [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • orla.opx.pl