쉬운 예를 들어서요...
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;
해서. 이진데이터 값을 하나 받아오는 예를 했는데요....
공백이 출력이 되네요...
뭐가 잘못된걸까요?
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;
> 해서. 이진데이터 값을 하나 받아오는 예를 했는데요....
>
> 공백이 출력이 되네요...
>
> 뭐가 잘못된걸까요?