Ghi, đọc, xoá  thông tin trong Registry bằng Delphi

Trần Trung

E-mail: trantrung22@yahoo.com

Bài viết này sẽ hướng dẫn bạn cách can thiệp vào Registry bằng Delphi 6.0.

Nếu bạn đã từng quen lập trình bằng VB hẳn bạn đã sử dụng các hàm dùng để ghi, đọc thông tin trong Registry (SaveSetting, GetSetting) và cảm thấy rất tiện lợi, nhưng nay bạn chuyển sang Delphi thì lại không có những hàm đó, nhưng chương trình của bạn lại cần ghi thông tin cấu hình để lưu giữ cho lần chạy sau đó, nếu bạn lưu thông tin vào file thì hiệu quả không cao, và thao tác với file rất lằng nhằng, tôi cũng đã ở trong tình cảnh đó, và tôi đã dành cả buổi sáng để đọc Help của Delphi và thiết kế được 3 thủ tục (SaveSetting, GetSetting, DeleteSetting) có chức năng tương tự như của VB, nhưng linh hoạt hơn nhiều vì bạn có thể ghi, đọc, xoá thông tin ở bất cứ khoá nào trong Registry, cũng vì tính linh hoạt này mà tác hại của 3 thủ tục này sẽ rất lớn nếu bạn sử dụng chúng không cẩn thận, bạn nên sao lưu Registry trước khi chọc ngoáy nó nếu không muốn phải cài lại Windows

Download chương trình mẫu

Dưới đây là nội dung 3 thủ tục:

Chú ý: Vì 3 thủ tục này có sử dụng kiểu dữ liệu TRegistry nên bạn phải khai báo sử dụng Unit Registry cho chương trình của bạn, cú pháp: uses (các unit khác)...,Registry;

1. Ghi thông tin vào Registry

Procedure SaveSetting(khoa,ten,noidung:string);
var Reg: TRegistry;
begin
Reg:=TRegistry.Create;
try
//Mở khoá gốc, bạn có thể chọn khoá gốc khác tuỳ ý
//HKEY_CLASSES_ROOT
//HKEY_LOCAL_MACHINE
//HKEY_USERS
Reg.RootKey := HKEY_CURRENT_USER;
//Tạo khoá
Reg.OpenKey(khoa,true);
Reg.WriteString(Ten,noidung);
reg.CloseKey ;
Finally
reg.Free;
end;
end;

2. Đọc thông tin từ Registry

Hàm này trả về nội dung của 1 khoá, nếu khoá không tồn tại nó sẽ trả về giá trị mặc định do bạn quy định sẵn

Function GetSetting(khoa,ten, macdinh:string):string;
var Reg: TRegistry;gt:string;
begin
Reg:=TRegistry.Create;
try
//Mở khoá gốc, bạn có thể chọn khoá gốc khác tuỳ ý
//HKEY_CLASSES_ROOT
//HKEY_LOCAL_MACHINE
//HKEY_USERS
Reg.RootKey := HKEY_CURRENT_USER;
//Tao khoa
Reg.OpenKey(khoa,true);
gt:=reg.ReadString(Ten);
if gt<>'' then result:=gt else result:=macdinh;
reg.CloseKey ;
Finally
reg.Free;
end;
end;

3. Xoá Key trong Registry

Procedure DeleteSetting(khoa:string);
var Reg: TRegistry;
begin
Reg:=TRegistry.Create;
try
//Mở khoá gốc, bạn có thể chọn khoá gốc khác tuỳ ý
//HKEY_CLASSES_ROOT
//HKEY_LOCAL_MACHINE
//HKEY_USERS
Reg.RootKey := HKEY_CURRENT_USER;
//Xoá khoá
Reg.DeleteKey(khoa);
reg.CloseKey ;
Finally
reg.Free;
end;
end;


4. Cách sử dụng 

- Để ghi thông tin dạng 1 chuỗi có nội dung là 'Data1' vào Registry theo đường dẫn HKEY_CURRENT_USER\TranTrung\RegistryDemo\Key1 bạn khai báo như sau:

SaveSetting('TranTrung\RegistryDemo','Key1','Data1');

- Để đọc thông tin dạng 1 chuỗi trong Registry theo đường dẫn HKEY_CURRENT_USER\TranTrung\RegistryDemo\Key1 bạn khai báo như sau:

Getsetting('TranTrung\RegistryDemo','Key1','Nothing')

nếu khoá không tồn tại bạn sẽ nhận được chuỗi 'Nothing'

- Để xoá 1 khoá trong Registry có đường dẫn HKEY_CURRENT_USER\TranTrung\RegistryDemo bạn khai báo như sau:

DeleteSetting('TranTrung\RegistryDemo');

---------------------------------------------------

Chúc bạn thành công.


PcLeHoan 1996 - 2002
Mirror : http://www.pclehoan.com
Mirror : http://www.lehoanpc.net

Mirror : http://www.ktlehoan.com