DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tzzhj
今日帖子: 4
在线用户: 15
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 none_six (五更钟) ★☆☆☆☆ -
盒子活跃会员
2004/3/13 16:38:04
标题:
如何用DELPHI 操作注册表? 浏览:1503
加入我的收藏
楼主: 我作的是DELPHI7,在操作注册时我用了如下语句:
avr
reg:TRegistry;
但系统总提示出如下错误:
[Error] Unit1.pas(27): Undeclared identifier: 'TRegistry'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
请各位指点,多谢!

----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/3/13 17:02:49
1楼: 你这家伙是不是搞破坏啊! 老是重复提问 在这样删除你的站号!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 waterstone (waterstone) ★☆☆☆☆ -
盒子活跃会员
2004/3/13 17:05:50
2楼: 呵呵!

----------------------------------------------
我来自农村广阔的田野我的每一个动作都很夸张http://waterstone.51r.com
作者:
男 none_six (五更钟) ★☆☆☆☆ -
盒子活跃会员
2004/3/13 23:21:42
3楼: 我不是搞破坏,我是新来的,但我刚发了贴子,在找却找不到,所以多发了几次
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/3/14 7:36:59
4楼: 你的头脑不会灵活点啊!2CCC是可以发送邮件 你这么没耐心等待!
而且你不会用 网址工具 记住自己的帖子的网址啊!真苯!
http://www.516688.net/ergong/down/_wzsk62.exe
此帖子包含附件:
JPEG 图像
大小:96.9K
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 none_six (五更钟) ★☆☆☆☆ -
盒子活跃会员
2004/3/16 21:31:22
5楼: 你们的态度很不好呀。
----------------------------------------------
-
作者:
男 fox7899 (fox7899) ★☆☆☆☆ -
盒子活跃会员
2004/3/16 21:41:48
6楼: uses Registry ;  需要先声明

----------------------------------------------
-
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 7:26:21
7楼: 楼上的兄弟说法是正确的!先在uses中加上Registry项目

我再来贴一段,希望对你有所帮助!

  
  在Delphi程序中操作注册表   
  32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。 
一、创建和释放TRegistry对象
1.创建TRegistry对象。为了操作注册表,要创建一个TRegistry对象:ARegistry := TRegistry.Create;
2.释放TRegistry对象。对注册表操作结束后,应释放TRegistry对象所占内存:ARegistry.Destroy。

二、指定要操作的键
操作注册表时,首先应指定操作的主键:先给属性RootKey赋值以指定根键,然后用方法OpenKey来指定要操作的主键名。
1.指定根键(RootKey)。
根键是注册表的入口,也注册表信息的分类,其值可为:
HKEY-CLASSES-ROOT:存储整个系统对象类信息,如ActiveX对象注册、文件关联等信息。
HKEY-CURRENT-USER:存储当前用户的配置信息。为属性RootKey的默认值。
HKEY-LOCAL-MACHINE:存储当前系统的软硬件配置信息。应用程序自己的信息可以存储在该根键下。
HKEY-USERS:存储所有用户通用的配置信息。
还可以是HKEY-CURRENT-CONFIG、HKEY-DYN-DATA。
2.指定要操作的主键。
Function OpenKey(const Key: string; CanCreate: Boolean): Boolean;
Key:主键名,是键名全名中除去根键的部分,如Software。
CanCreate:在指定的主键名不存在时,是否允许创建该主键,True表示允许。
返回值True表示操作成功。
3.关闭当前主键。
在读取或存储信息之后,应及时将关闭当前主键:procedure CloseKey。

三、从注册表中读取信息
Read系列方法从注册表读取指定的信息(字符串、二进制和十六进制),并转换为指定的类型。
1.Read系列方法。
function ReadString(const Name: string): string;
读取一个字符串值,Name为字符串名称。
function ReadInteger(const Name: string): Integer;
读取一个整数值,Name为整数名称。
function ReadBinaryData(const Name: string; var Buffer; BufSize: Integer):Integer;
读取二进制值,Name为二进制值名称,Buffer为接收缓冲区,BufSize为缓冲区大小,返回为实际读取的字节数。
其它方法还有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。
2.读取信息一例(显示Windows的版本)。
在HKEY-LOCAL-MACHINE下,有三个字符串值Version、VersionNumber和SubVersionNumber,用于记录当前Windows的版本号。
{请在Uses中包含Registry单元}
procedure TForm1.Button1Click(Sender:TObject);
var
ARegistry : TRegistry;
begin
ARegistry := TRegistry.Create;
//建立一个TRegistry实例
with ARegistry do
begin
RootKey := HKEY-LOCAL-MACHINE;//指定根键为HKEY-LOCAL-MACHINE
//打开主键Software
if OpenKey( ′Software′,false ) then
begin
memo1.lines.add('Windows版本:′+ ReadString(′Version′));
memo1.lines.add('Windows版本号:′ + ReadString(′VersionNumber′));
memo1.lines.add(′Windows子版本号:′ + ReadString(′SubVersionNumber′));
end;
CloseKey;//关闭主键
Destroy;//释放内存
end;
end;

四、向注册表中写入信息
Write系列方法将信息转化为指定的类型,并写入注册表。
1.Write系列方法。
procedure WriteString(const Name, Value: string);
写入一个字符串值,Name为字符串的名称,Value为字符串值。
procedure WriteInteger(const Name: string; Value: Integer);
写入一个整数值。
procedure WriteBinaryData(const Name: string; var Buffer; BufSize: Integer);
写入二进制值,Name为二进制值的名称,Buffer为包含二进制值的缓冲区,BufSize为缓冲区大小。
其它方法还有:WriteBool、WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。
2.写入信息一例。
下面程序使Delphi随Windows启动而自动运行。
var
ARegistry : TRegistry;
begin
ARegistry := TRegistry.Create;
//建立一个TRegistry实例
with ARegistry do
begin
RootKey:=HKEY-LOCAL-MACHINE;
if OpenKey(′Software′,True) then
WriteString(′delphi′,′C:Files.exe′);
CloseKey;
Destroy;
end;
end;

五、键值维护
除了在注册表中读取、存储外,程序可能还需要增加主键、删除主键、主键改名、数据值改名等。
1.创建新主键:function CreateKey(const Key: string): Boolean。
Key即为主键名,返回值True表示操作成功。
2.删除主键:function DeleteKey(const Key: string): Boolean。
Key即为主键名,返回值True表示操作成功。
3.复制或移动主键:procedure MoveKey(const OldName, NewName: string; Delete: Boolean)。
OldName、NewName分别表示源主键名和目标主键名;Delete表示是否删除源主键,True表示删除,False表示保留。
复制或移动一个主键将复制或移动该子键下的所有数据值和子键内容。
4.判断指定主键是否存在,其下是否有主键,并获取主键名称。
KeyExists用于判断指定主键是否存在:
function KeyExists(const Key: string): Boolean;//返回值为True表示主键存在。
HasSubKeys用于判断指定主键下是否有子键:function HasSubKeys: Boolean;
返回值为True表示主键下有子键。
GetKeyNames用于获取子键名称:procedure GetKeyNames(Strings: TStrings);
Strings用于返回当前主键下各子键的名称。
5.获取主键下的数据值名称:procedure GetValueNames(Strings: TStrings)。
Strings用于返回当前主键下各数值名称。
如要获取当前系统中的拨号连接名称,可利用获取主键HKEY-USERS
.DEFAULT下的数值名称的方法来进行。
6.判断数值名称存在、数值名称改名。
ValueExists用于判断数值名称是否存在:
function ValueExists(const Name: string): Boolean;
返回值为True表示数值名称存在。
RenameValue用于数值名称改名:
procedure RenameValue(const OldName, NewName: string);
以上是注册表常用操作所对应的TRegistry的方法和属性,其它方法和属性请参见Delphi联机帮助文件。
----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
作者:
男 none_six (五更钟) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 18:34:36
8楼: 多谢各位老兄
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS