寻求delphi中KOL的GetKeyNames用法。

koal2010 2009-12-07 11:36:02
先谢谢各位大爷们。能过来帮我。

问题如下:

下边的是 直接delphi的代码。读取注册表项的。然后显示到listbox的item里边


Procedure Explorer;
Var
reg : TRegistry;
Begin
reg := TRegistry.Create;
With reg Do
Begin
Rootkey := HKEY_LOCAL_MACHINE;
If OpenKey('\SOFTWARE\Clients', false) Then
Begin
GetKeyNames(Form1.ListBox1.Items);
End;
CloseKey;
Destroy;
End;
End;


然后下边是KOL代码。。。

Procedure Explorer;
Var
reg : PExRegistry;
s:Integer;
Begin
reg := NewExRegistry;
//s:=
Begin
reg.Rootkey := HKEY_LOCAL_MACHINE;
If reg.OpenKey('\SOFTWARE\Clients', false) Then
Begin
reg.GetKeyNames(form1.listbox1); //这里咋写?????Form1.ListBox1.Items不行。哎
End;
reg.CloseKey;
reg.Destroy;
End;
End;




问题就是这样的。
reg.GetKeyNames(form1.listbox1);

这里在KOL中的写法。Form1.ListBox1.Items不行。哎

谢谢大爷们啦。帮小弟下。。。。。
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
koal2010 2009-12-08
  • 打赏
  • 举报
回复
顶顶更健康。。。。。牛X都跑哪儿了。。。
koal2010 2009-12-08
  • 打赏
  • 举报
回复
谢谢了。大哥。能否给写个代码。这个问题折腾几个小时了。。。
haitao 2009-12-08
  • 打赏
  • 举报
回复
哦,getkeynames是把结果放到PStrList里的,那就拿一个PStrList类型的变量嘛
不过PStrList变量怎么给strings、怎么释放,就要看kol是怎么实现的了
koal2010 2009-12-08
  • 打赏
  • 举报
回复

Var
reg : PExRegistry;
ss:Tstrings;
Begin
reg := NewExRegistry;
ss:=Tstringlist.create;
Begin
reg.Rootkey := HKEY_LOCAL_MACHINE;
If reg.OpenKey('\SOFTWARE\Clients\StartMenuInternet', false) Then
Begin
reg.GetKeyNames(ss);
form1.listbox1.items.text:=ss.text;
ss.free;
End;
reg.CloseKey;
reg.Destroy;
End;
End;



不行哎。。。。
koal2010 2009-12-08
  • 打赏
  • 举报
回复
[Error] Unit1.pas(639): Incompatible types: 'TStrings' and 'PStrList'
haitao 2009-12-08
  • 打赏
  • 举报
回复
ss:Tstrings;

If reg.OpenKey('\SOFTWARE\Clients', false) Then
Begin
ss:=Tstringlist.create;
reg.GetKeyNames(ss);
form1.listbox1.items.text:=ss.text;
ss.free;
End;


行不行?
koal2010 2009-12-08
  • 打赏
  • 举报
回复

Var
reg : PExRegistry;
ss:PStrList;
i:Integer;
Begin
reg := NewExRegistry;
ss:= NewStrList;
Begin
reg.Rootkey := HKEY_LOCAL_MACHINE;
ss := NewStrList;
If reg.OpenKey('\SOFTWARE\Clients\StartMenuInternet', false) Then
Begin
reg.GetKeyNames(ss);
for i := 0 to ss.Count - 1 do
ListBox1.Items[i] := UpperCase (ss.Items[i]);
ss.free;
End;
reg.CloseKey;
reg.Destroy;
End;
End;



自己搞定 哦也~

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧