線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2216
推到 Plurk!
推到 Facebook!

TRegistry 相關問題

尚未結案
epard
一般會員


發表:23
回覆:18
積分:8
註冊:2004-01-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-05 10:32:22 IP:211.76.xxx.xxx 未訂閱
請問 如何用 TRegistry 來接收 REG_BINARY 的資料 再把 REG_BINARY 轉換為 看的懂得自串 謝謝
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-05 11:27:28 IP:211.20.xxx.xxx 未訂閱
epard 你好 REG_BINARY 通常存的是ICON或游標或圖示的位元資料,不知要轉成什麼樣的字串,人才看得懂呢?更何況還可能是任何其他格式的資料。
epard
一般會員


發表:23
回覆:18
積分:8
註冊:2004-01-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-05 14:09:33 IP:211.76.xxx.xxx 未訂閱
引言: epard 你好 REG_BINARY 通常存的是ICON或游標或圖示的位元資料,不知要轉成什麼樣的字串,人才看得懂呢?更何況還可能是任何其他格式的資料。
您好 在 regedit 中 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 的資料 就像圖片右邊的文字 請問要如何轉換 謝謝
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-05 19:17:04 IP:211.20.xxx.xxx 未訂閱
epard 你好 試試看  
Var
  Registry : TRegistry;
  Buff : PChar;
  l :integer;
begin
  Registry := TRegistry.Create(KEY_READ);
  Registry.RootKey:=HKEY_LOCAL_MACHINE;
  If Registry.OpenKey('\SYSTEM\MountedDevices',False) Then Begin
    l := Registry.GetDataSize('\??\Volume{3a039bd0-81b0-11d8-ab7c-806d6172696f}');
    Getmem(Buff,l);
    If Registry.ReadBinaryData('\??\Volume{3a039bd0-81b0-11d8-ab7c-806d6172696f}',Buff,l) = l Then Begin
      RichEdit1.Text := Buff; //在此可能看不到你所希望的畫面 *
    End;
    FreeMem(Buff,l);
  End;
  Registry.Free;    end; 
* 以上取得的Buff 只是字元陣列,因其內包含有不可視的字元,因此你還要有其他的程式碼來加以改變其視覺化的字元,以下提供一連結(本站站長提供的範例)含Source Code 你可自行研習後,若還有問題再提問 http://delphi.ktop.com.tw/topic.php?topic_id=29705
epard
一般會員


發表:23
回覆:18
積分:8
註冊:2004-01-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-06 12:06:56 IP:211.75.xxx.xxx 未訂閱
您好 我執行您的程式後 出現 請問我要修改哪邊 delphi 7.0 windows xp pro 謝謝
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-06 18:58:05 IP:203.204.xxx.xxx 未訂閱
epard 你好     我試了一下果然會發生同樣的問題,而且是發生在ReadBinaryData後Buff竟然無法存取(無效的指標)了,真是奇怪!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-06 19:26:23 IP:202.39.xxx.xxx 未訂閱
這有一篇: http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&th=5772b69483a9cb49&rnum=5
uses
  Registry;    procedure TFrmReadBinaryData.Button1Click(Sender: TObject);
const
  KeyName: string = 'System\CurrentControlSet\control\TimeZoneInformation';
  ValName: string = 'DaylightStart';
var
  i:        integer;
  keyGood:  boolean;
  regKey:   TRegistry;
  timeInfo: array of byte;
  tmpStr:   string;
  vSize:    integer;
begin
  regKey := TRegistry.Create;
  try
    regKey.RootKey := HKEY_LOCAL_MACHINE;
    keyGood        := regKey.OpenKey(keyName, false);        if (keyGood) then
    begin
      vSize := regKey.GetDataSize(valName);          if (vSize > 0) then
      begin
        SetLength(timeInfo, vSize);
        regKey.ReadBinaryData(valName, timeInfo[0], vSize);            for i := 0 to vSize - 1 do
          tmpStr := tmpStr +
                    Format('%.2X ', [timeInfo[i]]);            Delete(tmpStr, Length(tmpStr), 1);
        Label1.Caption := tmpStr;
      end;
    end;
  finally
    regKey.Free;
  end;
end;
-- He just never quits. 發表人 - hagar 於 2004/04/06 19:27:50
epard
一般會員


發表:23
回覆:18
積分:8
註冊:2004-01-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-08 15:41:17 IP:211.75.xxx.xxx 未訂閱
引言: 這有一篇: http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&th=5772b69483a9cb49&rnum=5
uses
  Registry;    procedure TFrmReadBinaryData.Button1Click(Sender: TObject);
const
  KeyName: string = 'System\CurrentControlSet\control\TimeZoneInformation';
  ValName: string = 'DaylightStart';
var
  i:        integer;
  keyGood:  boolean;
  regKey:   TRegistry;
  timeInfo: array of byte;
  tmpStr:   string;
  vSize:    integer;
begin
  regKey := TRegistry.Create;
  try
    regKey.RootKey := HKEY_LOCAL_MACHINE;
    keyGood        := regKey.OpenKey(keyName, false);        if (keyGood) then
    begin
      vSize := regKey.GetDataSize(valName);          if (vSize > 0) then
      begin
        SetLength(timeInfo, vSize);
        regKey.ReadBinaryData(valName, timeInfo[0], vSize);            for i := 0 to vSize - 1 do
          tmpStr := tmpStr +
                    Format('%.2X ', [timeInfo[i]]);            Delete(tmpStr, Length(tmpStr), 1);
        Label1.Caption := tmpStr;
      end;
    end;
  finally
    regKey.Free;
  end;
end;
-- He just never quits. 發表人 - hagar 於 2004/04/06 19:27:50
您好 那我應該如何把像上圖 binary 的部份 轉成 其右邊可看的懂的文字 謝謝
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-08 21:09:48 IP:211.20.xxx.xxx 未訂閱
epard 你好    以下提供一連結(本站站長提供的範例)含Source Code  http://delphi.ktop.com.tw/topic.php?topic_id=29705
epard
一般會員


發表:23
回覆:18
積分:8
註冊:2004-01-09

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-09 15:05:21 IP:211.75.xxx.xxx 未訂閱
努力 try 中 謝謝各位熱心的解答 兩位所提供的訊息都很有幫助
系統時間:2024-05-14 6:01:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!