Q&A

  • Registrey 쓰기, 읽기..
procedure TForm1.Button9Click(Sender: TObject);

var Reg : TRegistry;

begin

//Registry생성

Reg:= TRegistry.Create;

Try

Reg.RootKey := HKEY_CURRENT_USER;

Reg.CreateKey('softwareDaerm');

Reg.OpenKey('softwareDaerm', false);

Reg.WriteString('델파이5','가장인기있는 개발 툴');

Reg.CloseKey;

Finally

Reg.Free;

end;

Showmessage('생성완료');

end;



procedure TForm1.Button10Click(Sender: TObject);

var Reg : TRegistry;

begin

//이부분은 생성된 레지스트리의 값을 가저오는부분이다

Reg:= TRegistry.Create;

with Reg do begin

RootKey := HKEY_CURRENT_USER;

OpenKey('softwareDaerm',false);

if HasSubKeys then begin //하위키가 있는지 검사함

GetValueNames(ListBox1.Items);//키값에대한 내용을 가져온다

end else

begin

showmessage('하위키가 없네요');

end;

Free;

end;

end;



안녕하세요

즐거운 추석연휴를 앞두고 있네요

레지스트리 공부를 하다가 막히는 부분이 있어서요 문의 드립니다

위 구문은 레지스트리에 키를 생성하고 값을 입력 하는부분과

이력한 키값을 읽어서 그 키값의 내용을 가져 오는것인데요



입력은 잘 됩니다 실행에서찾아보면

HKEY_CURRENT_USER 아래software 아래 Daerm 이 생성되고 그값이 잘 입력되어있습니다.



그런데 두번째구문은 이력된 키값을 찾아서 그 내용을 가져오는것인데...쩝

계속 하위키가 없다고만 나오네요...

그런데 또 'softwareDaerm'이분부을 'softwareBorand'로 바꾸면 잘 됩니다(약간수정후)

고수님들 어디가 잘못된 것인가요 부탁드립니다.





2  COMMENTS
  • Profile
    최용일 2001.09.28 00:02
    안녕하세요. 최용일입니다.



    흠~ 님이 만드신것은 Key가 아니라 Value네요... 그러니까 HasSubKeys대신에



    ValueExists를 쓰셔야 겠군요...



    TRegistry.WriteString은 Key를 만드는 것이 아니라 Value를 만드는 것입니다...



    ^^ 항상 즐코하세요...



    초보 wrote:

    > procedure TForm1.Button9Click(Sender: TObject);

    > var Reg : TRegistry;

    > begin

    > //Registry생성

    > Reg:= TRegistry.Create;

    > Try

    > Reg.RootKey := HKEY_CURRENT_USER;

    > Reg.CreateKey('softwareDaerm');

    > Reg.OpenKey('softwareDaerm', false);

    > Reg.WriteString('델파이5','가장인기있는 개발 툴');

    > Reg.CloseKey;

    > Finally

    > Reg.Free;

    > end;

    > Showmessage('생성완료');

    > end;

    >

    > procedure TForm1.Button10Click(Sender: TObject);

    > var Reg : TRegistry;

    > begin

    > //이부분은 생성된 레지스트리의 값을 가저오는부분이다

    > Reg:= TRegistry.Create;

    > with Reg do begin

    > RootKey := HKEY_CURRENT_USER;

    > OpenKey('softwareDaerm',false);

    > if HasSubKeys then begin //하위키가 있는지 검사함

    > GetValueNames(ListBox1.Items);//키값에대한 내용을 가져온다

    > end else

    > begin

    > showmessage('하위키가 없네요');

    > end;

    > Free;

    > end;

    > end;

    >

    > 안녕하세요

    > 즐거운 추석연휴를 앞두고 있네요

    > 레지스트리 공부를 하다가 막히는 부분이 있어서요 문의 드립니다

    > 위 구문은 레지스트리에 키를 생성하고 값을 입력 하는부분과

    > 이력한 키값을 읽어서 그 키값의 내용을 가져 오는것인데요

    >

    > 입력은 잘 됩니다 실행에서찾아보면

    > HKEY_CURRENT_USER 아래software 아래 Daerm 이 생성되고 그값이 잘 입력되어있습니다.

    >

    > 그런데 두번째구문은 이력된 키값을 찾아서 그 내용을 가져오는것인데...쩝

    > 계속 하위키가 없다고만 나오네요...

    > 그런데 또 'softwareDaerm'이분부을 'softwareBorand'로 바꾸면 잘 됩니다(약간수정후)

    > 고수님들 어디가 잘못된 것인가요 부탁드립니다.

    >

    >

  • Profile
    초보 2001.09.28 00:45
    안녕하세요. 최용일입니다.



    흠~ 님이 만드신것은 Key가 아니라 Value네요... 그러니까 HasSubKeys대신에



    ValueExists를 쓰셔야 겠군요...



    TRegistry.WriteString은 Key를 만드는 것이 아니라 Value를 만드는 것입니다...



    ^^ 항상 즐코하세요...

    -----------------------------------------------------------

    그렇군요 게시판에 올리고 가만히 들여다보니 보이는 군요

    최용일님 감사합니다.



    소스중 ShowMessage를 고치니 제가 원하는 값이 잘 나타납니다.

    정말로 감사합니다.





    procedure TForm1.Button9Click(Sender: TObject);

    var Reg : TRegistry;

    begin

    //Registry생성

    Reg:= TRegistry.Create;

    Try

    Reg.RootKey := HKEY_CURRENT_USER;

    Reg.CreateKey('softwareDaerm');

    Reg.OpenKey('softwareDaerm', false);

    Reg.WriteString('델파이5','가장인기있는 개발 툴');

    Reg.CloseKey;

    Finally

    Reg.Free;

    end;

    Showmessage('생성완료');

    end;



    procedure TForm1.Button10Click(Sender: TObject);

    var Reg : TRegistry;

    begin

    //이부분은 생성된 레지스트리의 값을 가저오는부분이다

    Reg:= TRegistry.Create;

    with Reg do begin

    RootKey := HKEY_CURRENT_USER;

    OpenKey('softwareDaerm',false);

    if HasSubKeys then begin //하위키가 있는지 검사함

    GetValueNames(ListBox1.Items);//키값에대한 내용을 가져온다

    end else

    begin

    showmessage(Readstring('델파이5'));

    ======수정부분 "가장인기있는 개발 툴"이라고 잘 나옵니다===========

    end;

    Free;

    end;

    end;