我按下BUTTON的时候,就跳出了一个CPU窗口!我从来没见过这东西!
我关了之后,显示错误信息是
'access violation at address 00000003.read of address 00BD4258'

解决方案 »

  1.   

    我有加入REGISTRY单元啊!!!
      

  2.   

    procedure TForm1.Button2Click(Sender: TObject);   //这部分帮忙看看。
    var
    reg:Tregistry;
    i:integer;
    temp:string;
    begin
    reg:=Tregistry.create;
    reg.RootKey:=HKEY_LOCAL_MACHINE;
    for i:=0 to listbox1.Items.Count-1 do
    begin
    if listbox1.Selected[i] then
    begin
    temp:=listbox1.Items.Strings[i];
    reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\',true);
    reg.Deletekey(temp);
    end;
    end;
    reg.CloseKey;
    reg.Free;
    end;
      

  3.   

    你把closekey,free放到循环里面了。应该放最后!
    还有删除后listbox好像要重新刷新一下哦
      

  4.   

    这样试度试
    procedure TForm1.Button1Click(Sender: TObject);var
    reg:Tregistry;
    temp:Tstrings;
    i:integer;begin
    reg:=Tregistry.Create;
    reg.RootKey:=HKEY_LOCAL_MACHINE;
    if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\',false) then
    begin
    Temp:=Tstringlist.Create;
    reg.GetkeyNames(Temp);
    for i:=0 to Temp.count-1 do
    begin
    listbox1.Items.Add(temp.Strings[i]);
    end;
    reg.CloseKey;
    temp.free;
    reg.Free;
    end;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    var
    reg:Tregistry;
    i:integer;
    temp:string;
    begin
    reg:=Tregistry.create;
    reg.RootKey:=HKEY_LOCAL_MACHINE;
    for i:=0 to listbox1.Items.Count-1 do
    begin
      if listbox1.Selected[i] then
       begin
      temp:=listbox1.Items.Strings[i];
      reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\',true);
      reg.Deletekey(temp);
    end;end;
    reg.CloseKey;
    reg.Free;
    end;end.
      

  5.   

    这样写
    procedure TForm1.Button2Click(Sender: TObject);
    var
      reg: Tregistry;
      i: integer;
      temp: string;
    begin
      reg := Tregistry.create;
      reg.RootKey := HKEY_LOCAL_MACHINE;
      reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\', true);
      for i := 0 to listbox1.Items.Count - 1 do
      begin
        if listbox1.Selected[i] then
        begin
          temp := listbox1.Items.Strings[i];
          showmessage('选中了记录'+temp);
          if reg.Deletekey(temp) then
          begin
            showmessage('删除成功');
          end
          else
          begin
            showmessage('删除失败');
          end;
        end;
      end;
      reg.Free;
    end;