Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2009, 07:57   #1
Exploit
Пользователь
 
Регистрация: 13.12.2006
Сообщений: 13
По умолчанию в чем проблема?

Ребят подскажите что не правельно делаю? пытаюсь вывести в listbox список установленный программ из реестра!
Код:
 
unit uRegnew;
interface
uses
  SysUtils, Classes, Controls, windows, ExtCtrls, Graphics, Forms,
  StdCtrls, Registry, Dialogs;


type
  TRegCom = class(TPanel)
  private
    edKey, edValue : TEdit;
    btRead, btWrite : TButton;
    listbox1 : TListBox;
    cb : TComboBox;
    Reg:Tregistry;
    fRootKey : string;
    //function ReadStr(Aroot, ) : boolean;
  protected
    
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    Property RootKey : string read  fRootKey write fRootKey;
  end;

var reg:TRegistry;
P: TStringList;i:byte;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TRegCom]);
end;
 
constructor TRegCom.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent := TWinControl(AOwner);
  Reg:=TRegistry.create;
  Width := 210;
  Height := 100;


  edKey := TEdit.Create(self);
  edKey.Left := 5;
  edKey.Top := 5;
  edKey.Parent := self;


  listbox1 := TListbox.Create(self);
  listbox1.Left := 5;
  listbox1.Top := 105;
  listbox1.Width := 150
  listbox1.Height :=80
  listbox1.Parent := self;

  edValue := TEdit.Create(self);
  edValue.Left := 5;
  edValue.Top := 35;
  edValue.Parent := self;

end;
procedure Scan;
begin

reg:=TRegistry.Create;
p:=TStringList.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;

if reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',false) then
reg.GetKeyNames(p);
reg.Free;

if p.Count>0 then
for i := 0 to p.Count-1 do
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
  if  reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+p[i],false) then
     if reg.ValueExists('DisplayName') then
       if reg.ValueExists('UninstallString') then
         uRegnew.ListBox1.Items.Add(reg.ReadString('DisplayName'));

reg.Free;
end;

end;

destructor TRegCom.Destroy;
begin
  Reg.Destroy;
  inherited Destroy;
end;
end.
Если не даешь мне денег на жизнь, не учи меня жить!!!
Exploit вне форума Ответить с цитированием
Старый 20.01.2009, 08:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сама процедура вывода в ЛистБокс работает нормально, только твой код я не пойму, это компонент или форма?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2009, 08:49   #3
Exploit
Пользователь
 
Регистрация: 13.12.2006
Сообщений: 13
По умолчанию

это компанент!
Если не даешь мне денег на жизнь, не учи меня жить!!!
Exploit вне форума Ответить с цитированием
Старый 20.01.2009, 09:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну тогда ставь его, кидай на форму и работай.
Что у тебя не правильно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2009, 09:42   #5
Exploit
Пользователь
 
Регистрация: 13.12.2006
Сообщений: 13
По умолчанию

он у меня ругается на ListBox1! глянь сам!
Вложения
Тип файла: rar uRegnew.rar (916 байт, 9 просмотров)
Если не даешь мне денег на жизнь, не учи меня жить!!!
Exploit вне форума Ответить с цитированием
Старый 20.01.2009, 10:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Правильно ругается
В listbox1.Width := 150 ты точку-запятую провтыкал.
А Scan у тебя нигде не определен.
Поставь эту процедуру методом

Добавь в public
Код:
procedure Scan;
и пиши так:
Код:
procedure TRegCom.Scan;
и
Код:
ListBox1.Items.Add(reg.ReadString('DisplayName'));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.01.2009, 03:52   #7
Exploit
Пользователь
 
Регистрация: 13.12.2006
Сообщений: 13
По умолчанию

Странно! ошибок нету а список в Listbox не выводит! че может быть?

Код:
unit uRegnew;
interface
uses
  SysUtils, Classes, Controls, windows, ExtCtrls, Graphics, Forms,
  StdCtrls, Registry, Dialogs;


type
  TRegCom = class(TPanel)
  private
   // edKey, edValue : TEdit;
  //  btRead, btWrite : TButton;
    listbox1 : TListBox;
    Scan_button: TButton;
    cb : TComboBox;
    Reg:Tregistry;
    fRootKey : string;
   // procedure Scan_buttonClick(Sender: TObject);
    //function ReadStr(Aroot, ) : boolean;
  protected
    
  public
    constructor Create(AOwner: TComponent); override;
    //destructor Destroy;
     //override;
    Property RootKey : string read  fRootKey write fRootKey;
   //procedure Scan_buttonClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  //  procedure Scan;
  end;

var reg:TRegistry;
P: TStringList;i:byte;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TRegCom]);
end;
 
constructor TRegCom.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent := TWinControl(AOwner);
  Reg:=TRegistry.create;
  Width := 210;
  Height := 100;

  
  Scan_button := TButton.Create(self);
  Scan_button.Left := 5;
  Scan_button.Top := 5;
  Scan_button.Parent := self;


  listbox1 := TListbox.Create(self);
  listbox1.Left := 5;
  listbox1.Top := 105;
  listbox1.Width := 650;
  listbox1.Height :=380;
  listbox1.Parent := self;

end;
procedure TRegCom.Button1Click(Sender: TObject);
begin
listbox1.Clear;
reg:=TRegistry.Create;
p:=TStringList.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;

if reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',false) then
reg.GetKeyNames(p);
reg.Free;

if p.Count>0 then
for i := 0 to p.Count-1 do
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
  if  reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+p[i],false) then
     if reg.ValueExists('DisplayName') then
       if reg.ValueExists('UninstallString') then
       ListBox1.Items.Add(reg.ReadString('DisplayName'));
reg.Free;
end;
end;
end.
Если не даешь мне денег на жизнь, не учи меня жить!!!
Exploit вне форума Ответить с цитированием
Старый 22.01.2009, 09:35   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: У тебя обработчик клика по кнопке к ней не подключен.
Во-вторых: ЛистБокс просто напросто невидим.Координата его Left выходит за пределы твоей рамки. Поставь в нее 10
В-третьих: Может лучше фрейм вместо компонента?
I'm learning to live...

Последний раз редактировалось Stilet; 22.01.2009 в 09:37.
Stilet вне форума Ответить с цитированием
Старый 22.01.2009, 10:23   #9
Exploit
Пользователь
 
Регистрация: 13.12.2006
Сообщений: 13
По умолчанию

а как к кнопке подключить? мне нужен именно компанент!
Если не даешь мне денег на жизнь, не учи меня жить!!!
Exploit вне форума Ответить с цитированием
Старый 23.01.2009, 03:49   #10
Exploit
Пользователь
 
Регистрация: 13.12.2006
Сообщений: 13
По умолчанию

апну темку!
Если не даешь мне денег на жизнь, не учи меня жить!!!
Exploit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем проблема? Sirazh Microsoft Office Excel 4 25.09.2008 21:32
Не могу понять в чем проблема (код) diznt Помощь студентам 2 03.08.2008 10:20
Не не знаю в чем проблема с IdUDPServer D@rk M@k Работа с сетью в Delphi 2 28.12.2007 15:46