C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[45991] Re:TRegistry 에서 GetValueNames 함수에 대한 질문
열씸! [cappuccino] 1267 읽음    2006-08-02 21:05
몇 가지 문제가 있군요.

0. TStrings 은 순수 가상 함수들로 이루어진 베이스 클래스입니다.
    즉, 최소한 이런 이런 멤버들이 있다. 최소 사양만 적어 놓은거시지 실제 작동하는 기능이 있는
    녀석이 아니란겁니다. TStrings 는 직접 생성하시면 안됩니다. 그걸 상속받아 구체적인 기능이
    구현된 자식 클래스들을 이용해야 됩니다. 메모리 오류는 이것 때문에 생긴 문제일겁니다.
    대표적으로 TStringList 를 사용하시면 되겠지요.
    하지만 이번 경우엔 TStrings 씨리즈는 사용할 필요가 없겠습니다.
    굳이 사용하는 예를 만들어 본다면
    TStringList *strList = new TStringList();
    Registry->GetValueNames(strList);
    (그러나 지금 필요하신건 ValueNames <Test란 이름을 알고 계시니까>가 아니고 ValueData 이십니다)

1.  ValueNames 란 Key 내에 들어 있는 항목들의 이름들입니다.
    즉, ValueNames 중 하나가 Test 였던거죠.
    첨부하신 레지스트리 편집기의 스크린 샷에도 Test 가 "이름" (ValueName) 이라고 나와 있지요?
    거기에 딸린 데이타를 읽고 싶으시면 그 데이타의 타잎에 따라 Read~~~ 하는 함수를 호출하셔야
    하는데 GetDataInfo 같은 함수들을 사용해 데이타 타잎을 알아오시면 되지만,
    이 경우엔 문자열인걸 알고 있다고 가정하고, 바로 ReadString 함수를 호출할 수 있습니다.
    AnsiString valueName = "Test";
    AnsiString valueData;
    valueData = Registry->ReadString(valueName);

2. 이렇게 하시면 AnsiString 형인 valueData 에 원하는 값이 들어 있을겁니다.
    정리 하면 다음과 같습니다.
    TRegistry* Registry = new TRegistry();
    Registry->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\ABC", false);
    AnsiString valueName = "Test";
    AnsiString valueData;
    valueData = Registry->ReadString(valueName);
    ShowMessage(valueData); // 잘 들어 왔나 확인해 보시죠.

+ -

관련 글 리스트
45986 TRegistry 에서 GetValueNames 함수에 대한 질문 이재득 1525 2006/08/02
45991     Re:TRegistry 에서 GetValueNames 함수에 대한 질문 열씸! 1267 2006/08/02
46000         답변 감사합니다 이재득 930 2006/08/03
45990     Re:TRegistry 에서 GetValueNames 함수에 대한 질문 f 1192 2006/08/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.