리스트박스에 HKEY_CLASSES_ROOT의 CLSID 의 서브키의 값을 보여주려고 하는데요.
아래와 같이 코딩을 했는데... 리스트 박스에 아무값도 나오지 않는데 그 이유를 모르겠네요..
아래의 소스에서 제가 잘못한 부분을 알려주심 정말 감사하겠습니다..
답변 꼬옥 부탁드립니다요~~ ㅠㅠ
procedure TItems.Button2Click(Sender: TObject);
var
Reg: TRegistry;
rInfo: TRegKeyInfo;
aList: TStringList;
gList: TStringList;
i: Integer;
begin
reg := TRegistry.Create;
aList := TStringList.Create;
try
reg.RootKey := HKEY_CLASSES_ROOT;
if reg.OpenKey('CLSID', False) then
if reg.GetKeyInfo(rInfo) then begin
if rInfo.NumSubKeys > 0 then begin
reg.GetKeyNames(aList); //서브키 항목들 구하기
for i := 0 to rInfo.NumSubKeys -1 do begin
listbox1.items.Add(reg.ReadString(aList.strings[i]));
end;
end;
end;
finally
reg.CloseKey;
reg.Free;
aList.Free;
end;
end;
aList에 키들이 들어 있는데 왜 또 reg.ReadString(aList.strings[i]);를 하셨는지?
ReadString은 키값을 얻는게 아니라 항목(Data)에 연결된 값(Value)를 얻는것입니다.
> reg.GetKeyNames(aList); //서브키 항목들 구하기
> for i := 0 to rInfo.NumSubKeys -1 do begin
> listbox1.items.Add(aList.strings[i]); <<<<<<<<<<<<<<<<<<<<<<<<<<<
^^ 항상 즐코하세요...
eocn wrote:
> 리스트박스에 HKEY_CLASSES_ROOT의 CLSID 의 서브키의 값을 보여주려고 하는데요.
> 아래와 같이 코딩을 했는데... 리스트 박스에 아무값도 나오지 않는데 그 이유를 모르겠네요..
> 아래의 소스에서 제가 잘못한 부분을 알려주심 정말 감사하겠습니다..
> 답변 꼬옥 부탁드립니다요~~ ㅠㅠ
>
> procedure TItems.Button2Click(Sender: TObject);
> var
> Reg: TRegistry;
> rInfo: TRegKeyInfo;
> aList: TStringList;
> gList: TStringList;
> i: Integer;
> begin
> reg := TRegistry.Create;
> aList := TStringList.Create;
> try
> reg.RootKey := HKEY_CLASSES_ROOT;
> if reg.OpenKey('CLSID', False) then
> if reg.GetKeyInfo(rInfo) then begin
> if rInfo.NumSubKeys > 0 then begin
> reg.GetKeyNames(aList); //서브키 항목들 구하기
> for i := 0 to rInfo.NumSubKeys -1 do begin
> listbox1.items.Add(reg.ReadString(aList.strings[i]));
> end;
> end;
> end;
> finally
> reg.CloseKey;
> reg.Free;
> aList.Free;
> end;
> end;
>