程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 使Delphi程序記憶參數的設置(2)

使Delphi程序記憶參數的設置(2)

編輯:Delphi

實現對注冊表的操作

//啟動窗口時要做的一些工作
   procedure TForm1.FormCreate(Sender: Tobject);
   begin
   ww:=Tregistry.Create;
   //創建ww對象
   ww.RootKey :=HKEY_CURRENT_USER;
   //注意:通過修改RootKey可以把信息寫到注冊表的每一個角落
   ww.OpenKey('software',FALSE);
   //打開鍵software,可以看到Borland,Netscape
   還有Microsoft也在這個software鍵中
   ww.CreateKey( '王偉');
   //在software鍵中創建一個名為“王偉“的鍵值,
   使自己的名字和Borland,Netscape,
   //Microsoft並排在一起,是不是很Cool啊:)
   ww.OpenKey( '王偉',FALSE);
   //打開鍵"王偉"
   ww.CreateKey('XX單位XX管理系統');
   //創建應用程序的名稱
   ww.OpenKey('XX單位XX管理系統',TRUE);
   ww.CreateKey('位置');
   //創建應用程序中某一個要存貯的項目的名稱,便於管理
   ww.OpenKey('位置',TRUE);
   if (ww.ReadString('first')<>'1')then
   //這是值得注意的一個地方,通過“first“來判斷程序是否
   begin
   //是第一次寫注冊表,如果是第一次寫則用程序給的默認值來
   ww.WriteString('first','1');
   //設置窗口的位置和大小。如果不是第一次啟動應用程序則說明
   Form1.Windowstate:=(wsNormal);
   //注冊表中已經寫了位置信息,就讀這些信息並賦給Form。
   Form1.Top:=10;
   form1.Left:=10;
   form1.Height:=100;
   form1.Width:=100;
   end
   else
   begin
   if(ww.ReadString('max')='y') then
   //判斷上次關閉程序時,窗口是否是最大化的。如果是的話,則
   Form1.Windowstate:=(wsMaximized)
   //繼續使窗口擁有這一特征。
   else
   begin
   Form1.top:=StrToInt(ww.ReadString('top'));
   //如果不是最大化,則取位置和大小數據賦給From
   Form1.left:=StrToInt(ww.ReadString('left'));
   Form1.height:=StrToInt(ww.ReadString('height'));
   Form1.width:=StrToInt(ww.ReadString('width'));
   end;
   end;
   end;

   //關閉窗口時要做的一些工作
   procedure TForm1.FormDestroy(Sender: Tobject);
   begin
   ww.OpenKey('位置',FALSE);
   //打開“位置”鍵
   if Form1.Windowstate=(wsMaximized) then
   //如果當前程序是最大化,則把這一信息寫入注冊表,
   ww.WriteString('max','y')
   //便於下一次時使用。
   else
   begin
   ww.WriteString('max','n');
   //如果不是最大化,則把窗口的位置和大小數據寫入注冊表中。
   ww.WriteString('top',IntToStr(Form1.top));
   ww.WriteString('left',IntToStr(Form1.left));
   ww.WriteString('height',IntToStr(Form1.Height));
   ww.writeString('width',IntToStr(Form1.Width));
   end;
   end;

需要注意的幾點:

1:因為程序不可能在第一次使用時,就從注冊表裡讀數據,所以第一次必須由程序賦一個初值。然後做上標記,表示已經有過第一次了,以後只要判斷出不是第一次了,就可以讀數據了。(這點最重要,由這一點還可以引出一個話題,那就是可以做一個Demo版的軟件,每次啟動時往注冊表裡加個1,當>10時,就不許用該軟件了,cool吧)  

2:往注冊表裡可以寫string型數據,也可以寫Integer型數據,但在注冊表中的Integer型數據是以16進制形式存在的,而我們在程序中用的都是10進制數,所以干脆寫string型,然後用StrToInt或IntToStr轉換

3:寫注冊表並不是很安全的,它的內容可以用RegEdit一覽無佘的看到,所以千萬不能將一些重要的信息(如密碼)不經加密而直接寫入注冊表,這樣做是非常危險的!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved