[ 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