Q&A

  • RegEnumValue를 써보신분 꼭 답변주세요...
제가 알기로는 레지스트리에 있는 서브키의 리스트를
얻을수 있는것은 RegEnumKey이구요..
서브 Value의 리스트를 얻을수 있는 것은 RegEnumValue라고 알고 있거든요..

실제로 RegEnumKey를 사용해서 키값들을 구해서 사용하는데..
이번에는 Value 명을 얻어야 하는데.. 꼭 다음과 같은 에러가 나요...
---------------------------------------------------------------------
Types of actual and formal var parameters must be identical
---------------------------------------------------------------------
function GetSubValue(hkey : HKEY; subkey : string; var list : TStringList) : comp;
var
  lRet, count : comp;
  key1 : array[0..512] of char;
  i : integer;
begin
  i := 0;
  count := 0;
  FillChar(key1, sizeof(key1), #0);
  lRet := RegOpenKeyEx(hkey, PChar(subkey), 0, KEY_READ, hkey);
  if( lRet <> ERROR_SUCCESS) then
  begin
    RegCloseKey(hkey);
    result := 0;
    exit;
  end;
  RegQueryInfoKey(hkey, nil, nil, nil,nil, nil, nil,@count, nil, nil, nil, nil);
  while i < count do
  begin
    FillChar(key1, sizeof(key1), #0);
-----------------------------------------------------------
    RegEnumValue(hkey, i,key1,@lRet, nil,nil,nil,nil);
-----------------------------------------------------------
    list.Add(key1);
    i := i+ 1;
  end;
  RegCloseKey(hkey);
  result := i;
end;


위 함수가 소스 전체구요...
실제로 RegEnumKey를 사용해서 위와 같은 형식으로 사용 하고 있거든요..
근데 문제가 되는 부분이 sizeof(key1) 이라는 부분입니다.

Delphi Help를 보면
LPDWORD lpcbValueName,        // address for size of value buffer
라고 써있고 DWORD의 포인터지요? 그래서 lRet의 레퍼런스로 넣었는데
안맞는다고 나오네요...

꼭좀 가르쳐 주세요...
어떻게 RegEnumValue를 쓰셨는지...^^;;
1  COMMENTS
  • Profile
    최용일 2002.09.25 03:20
    안녕하세요. 최용일입니다.

    함수 프로토타입은 API헬프보시지 마시고 Windows관련 유닛에서 직접찾으세요... API헬프에는 씨로된 프로토타입이 나와 있으니까요...

    function RegEnumValue(hKey: HKEY; dwIndex: DWORD; lpValueName: PChar;
      var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD;
      lpData: PByte; lpcbData: PDWORD): Longint; stdcall;

    위와 같이 되어 있습니다. 그냥 DWORD변수를 넣어주시면 됩니다.
    var
        ......
        Len: DWORD;
    begin
        ......
        RegEnumValue(hkey, i,key1,Len, nil,nil,nil,nil);
        ......
    end;

    참고로 델파이의 TRegistry를 이용하시면 아주 간단하게 하실수도 있습니다.

    uses
        ......, Registry;

    function GetSubValue2(hkey : HKEY; subkey : string; var list : TStringList) : comp;
    var
        RegFile: TRegistry;
    begin
        RegFile := TRegistry.Create;
        try
            RegFile.RootKey := HKEY;
            if RegFile.OpenKey(SubKey, False) then
              RegFile.GetValueNames(List);
              // 키값은 GetKeyNames메소드를 이용하시면 됩니다.
        finally
            RegFile.Free;
            Result := List.Count;
        end;
    end;

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

    • 김재환
    • 2002.09.25 06:42
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최연식
    • 2002.09.25 05:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.25 19:07
      Form Open하는 SRC를 올리시죠..그러면 더 쉬울듯 한데... var FormList : TStringList = nil; funct...
    • 최연식
      2002.09.25 20:50
      delphi 6에서 적용해보았는데 에러가 발생하내요!! 에러 내용은 CreateForm이 정의되지 안았다는 내용이었...
    • 최병철
      2002.09.25 17:57
      Group 밴드를 두번 사용해 보세요 그룹 1 - 시작 티별 합계 필드 연결 그룹 2 - 시작 팀별 소계 필드 ...
    • 최용일
      2002.09.25 20:51
      안녕하세요. 최용일입니다. 예제로 드린것은 물리적인 하드웨어를 검색하는게 아니라 논리적인 하드웨어...
    • 델코초
      2006.10.12 22:21
      안녕하세요. 최용일님.(시삽님) 아래와 같이 처리해서 사용을 하고 있는데요, 두자리 컴포트(ex: COM10...
    • 정성훈
      2002.09.25 04:18
      저도 바코드만 2년해봤는데 폰트는 윈도우 폰트가 제일 깨끗하고 잘 찍혀요. Zebra Z4M은 지원되는지 안...
    • 박상은
    • 2002.09.25 02:25
    • 1 COMMENTS
    • /
    • 1 LIKES
    • 최용일
      2002.09.25 03:20
      안녕하세요. 최용일입니다. 함수 프로토타입은 API헬프보시지 마시고 Windows관련 유닛에서 직접찾으세...
    • 버섯
    • 2002.09.25 02:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 임승범
      2002.10.31 07:58
      죄송하지만 이글은 답변이 아니랍니다. 실은 저도 같은 문제로 머리카락이 빠지고 있어서요. sql2k nat...
    • 최병철
      2002.09.25 03:13
      파라독스( paradox )나 MS-SQL등에서 Memo라는 형( Type )이 있는데, 이는 델파이에서 AsBlob등의 형으로...
    • 고지범
      2002.09.25 06:35
      음... 어차피 각 thread 함수는 비슷하고 Label 만 서로 다르군요... type    TLabelThread = ...
    • 박서규
      2002.09.25 01:13
      만약 제가 한다면,, 음,,, CreateThread를 안쓰고,,,, Thread := 쓰레드형.Create(true); Thread.T...
    • 최용일
      2002.09.25 01:29
      안녕하세요. 최용일입니다. 흠~ 프로그램 내부에 뭔가 오류가 있는거 같네요... Dispose할때 인자로 ...
    • 도니
    • 2002.09.25 00:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.25 00:15
      아주간단하게는 Form 의 프로퍼티를 이용하세요... Borderlcons의 biMinimize, biMaximize를 이용하시면 ...
    • 도니
      2002.10.01 22:52
      감사감사..^^ 덕분에 아주 쉽게 해결했습니다..^^
    • 한대필
    • 2002.09.25 00:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.25 00:31
      안녕하세요. 최용일입니다. 그냥 for문으로 하나씩 검색해보시면 될겁니다.... [mtbPrint,mtbDelete,...
    • 한대필
      2002.09.25 01:03
      아.. 결국 순서를 알수는 없는 것이군요.. 순서가 필요하다면 다른 방법을 사용해야 하는 것이군요... ...
    • 이영동
    • 2002.09.24 22:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.25 00:32
      안녕하세요. 최용일입니다. 저기 팁란에서 본것같네요. 검색해보세요... ^^ 항상 즐코하세요...
    • 최병철
      2002.09.25 01:19
      자료실과 팁란에 있읍니다
    • 송재진
      2002.09.24 23:38
      ------------------------------------------------- 먼저... Datasource1 은 페이지 1에 DB에디트에 연...
    • 정경철
      2002.09.24 23:04
      DBGrid에 연결된 DataSource를 DBEdit에도 같이 연결 하세요... 그럼..
    • 전형식
      2002.09.24 22:38
      BMP파일을 모두가저가는것은 좀 그렇지 않나요? 차라리 움직이는 GIF파일을 맹그러서 보여주심이.. 알집...
    • 이경남
      2002.09.24 22:48
      토리 사이트가 어딘지 모르겠네요 ㅡ.ㅡ 죄송함다 ㅡ.ㅡ 안녕하세요.. ㅡ.ㅡ 델파이 초보의 길은 ...
    • 최용일
      2002.09.25 00:35
      안녕하세요. 최용일입니다. 토리사이트는 저기 외국추천링크에 있어요. URL은 http://www.torry.net&...
    • 미소나눔
      2002.09.24 21:39
      [실행]에서 dcomcnfg 실행하면 [DCOM 구성 등록정보] 가 뜨는데 거기서 원하시는 DCOM 객체를 선택하시구...
    • 노동옥
    • 2002.09.24 21:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정경철
      2002.09.24 23:12
      zeos라는 컴포넌트가 있습니다. 이것은 상용으로 쓰고 있는 몇가지 지원 됩니다. 제가 알고 있기로는.. M...
    • KDDG_ZZOM
      2002.09.24 22:25
      힘들것같은데... 저도 듣긴들었는데... 상용인것같기도하고... 여기자료실에 있는것같은데... 콤포넌트는...