先谢谢各位大爷们。能过来帮我。问题如下:下边的是 直接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不行。哎谢谢大爷们啦。帮小弟下。。

解决方案 »

  1.   

    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;
     
    行不行?
      

  2.   

    [Error] Unit1.pas(639): Incompatible types: 'TStrings' and 'PStrList'
      

  3.   


    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;不行哎。
      

  4.   

    哦,getkeynames是把结果放到PStrList里的,那就拿一个PStrList类型的变量嘛
    不过PStrList变量怎么给strings、怎么释放,就要看kol是怎么实现的了
      

  5.   


    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;自己搞定 哦也~