Q&A

  • 질문있어요..
쉬운 예를 들어서요...



procedure MakeRegiImage;

var

Reg : TRegistry;

buf : array[0..MAX_PATH] of char;

begin

Reg := TRegistry.Create;

try

strcopy(buf, '');

Reg.RootKey := HKEY_CURRENT_CONFIG;

Reg.OpenKey('SoftwareMicrosoftwindowsCurrentVersionInternet Settings', False);

reg.ReadBinaryData('EnableAutodial', buf, MAX_PATH);

ShowMessage(buf);

finally

Reg.CloseKey;

Reg.Free;

end;

end;

해서. 이진데이터 값을 하나 받아오는 예를 했는데요....



공백이 출력이 되네요...



뭐가 잘못된걸까요?

1  COMMENTS
  • Profile
    최용일 2001.05.22 04:48
    안녕하세요. 최용일입니다.



    ShowMessage(buf);



    위부분이 문제가 있을거 같군요...



    이진 데이터가 65('A'), 32(' '), ... 이런식으로 아스키로 표현이 가능한 숫자들로 이루어 졌다면 제대로 보이겠지만 0, 1, 2, 3, ... 등과 같이 아스키로 표현할 수 없는 숫자가 있다면 제대로 보이지 않아요. 특히 PChar에서 널종료문자로 쓰이는 0이 들어간다면 그 이후에는 짤리구요...



    그 숫자 하나하나를 문자로 바꾸어서 보여주세요...



    var

    BufSize, I: Integer;

    S: string;

    ...

    begin

    BufSize := reg.ReadBinaryData('EnableAutodial', buf, MAX_PATH);

    for I := 0 to BufSize - 1 do

    S := S + IntToHex(Buf[I], 2)

    ShowMessage(S);

    end;



    ReadBinaryData메소드는 읽혀진 이진테이터의 크기를 리턴값으로 반환합니다...



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



    백승환 wrote:

    > 쉬운 예를 들어서요...

    >

    > procedure MakeRegiImage;

    > var

    > Reg : TRegistry;

    > buf : array[0..MAX_PATH] of char;

    > begin

    > Reg := TRegistry.Create;

    > try

    > strcopy(buf, '');

    > Reg.RootKey := HKEY_CURRENT_CONFIG;

    > Reg.OpenKey('SoftwareMicrosoftwindowsCurrentVersionInternet Settings', False);

    > reg.ReadBinaryData('EnableAutodial', buf, MAX_PATH);

    > ShowMessage(buf);

    > finally

    > Reg.CloseKey;

    > Reg.Free;

    > end;

    > end;

    > 해서. 이진데이터 값을 하나 받아오는 예를 했는데요....

    >

    > 공백이 출력이 되네요...

    >

    > 뭐가 잘못된걸까요?