如何讀取多字串的值? |
答題得分者是:RaynorPao
|
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
您可在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\您印表機名稱\DsDriver下,有一名稱 printMediaSupported 的機碼,該型態就是多字串值~
或者您可在空白地方按滑鼠右鍵\新增 下~即可看到多字串值~
我是想抓取多字串值的資料放進ComboBox裏面~
PS.
補充一點,我的OS是WindowsXP..
可能在Win200和WinXP的Registry才有此一型態~
而Win98的Registry沒有~因為Registry的版本不同~
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 您可在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\您印表機名稱\DsDriver下,有一名稱 printMediaSupported 的機碼,該型態就是多字串值~ 或者您可在空白地方按滑鼠右鍵\新增 下~即可看到多字串值~ 我是想抓取多字串值的資料放進ComboBox裏面~ PS. 補充一點,我的OS是WindowsXP.. 可能在Win200和WinXP的Registry才有此一型態~ 而Win98的Registry沒有~因為Registry的版本不同~yamigo 你好: 跟上次一樣~~用 ReadBinaryData 就可以了< > 請參考以下的做法< > void __fastcall TForm1::Button4Click(TObject *Sender) { TRegistry *Reg=new TRegistry; Reg->RootKey=HKEY_LOCAL_MACHINE; Reg->OpenKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers\\傳真\\DsDriver", false); if(Reg->ValueExists("printMediaSupported")) { DWORD dwBuf=Reg->GetDataSize("printMediaSupported"); BYTE *bBuf=new BYTE[dwBuf]; Reg->ReadBinaryData("printMediaSupported", bBuf, dwBuf); TMemoryStream *msBuf=new TMemoryStream; msBuf->Size=dwBuf; msBuf->Write(bBuf, dwBuf); msBuf->Position=0; msBuf->SaveToFile("Buf.dat"); delete msBuf; delete bBuf; } Reg->CloseKey(); delete Reg; }備註: 讀出來的串流~~以 0x00 分隔所有的字串 因此~~你必須自己把這些字串找出來 這部分就讓你自己寫吧 <>有問題再提出來吧> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 可是~~RaynorPao大大~~ 小弟我剛接觸BCB不久(約二個星期)~ 對型態轉換很棘手~更遑論要判斷了~ 找遍手邊書籍也找無TMemoryStream的參考文獻~ 查了BCB的Help~更是~看攏嘸~~ 所以~能否請RaynorPao大大教一下~~ 拜託囉~~~>.< 先謝謝啦~yamigo 你好: 好吧~~那我這次就幫助你< > 把上面藍色的程式碼~~換成下面紅色的程式碼< > ComboBox1->Clear(); char *szChar=(char*)bBuf; char *szZero=szChar; int i=0; while(i備註: 其實這部分跟 BCB 是沒有很大的關係的 建議你要多加強 C/C 的基本功了 市面上有很多這方面的書籍(養成多逛書店的好習慣) 加油囉~~如果還有其他問題~~再提出來 --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
|
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
對不起~又有問題了~
小弟將大大您的程式碼放到button1的OnClick Event上執行~~
不會有問題~
假設我有一個TForm叫PrinteDialog..
若放到
__fastcall TFormPrintDialog::TFormPrintDialog(TComponent* Owner)
: TForm(Owner)
這裡面~Compiler不會有問題~
但一進入該 Form 就會出現 "Access violation ...."
然後是停留在 delete bBuf; 那一行~
請問是否有那有問題? 發表人 - yamigo 於 2002/12/23 11:11:07
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 對不起~又有問題了~ 小弟將大大您的程式碼放到button1的OnClick Event上執行~~ 不會有問題~ 假設我有一個TForm叫PrinteDialog.. 若放到 __fastcall TFormPrintDialog::TFormPrintDialog(TComponent* Owner) : TForm(Owner) 這裡面~Compiler不會有問題~ 但一進入該 Form 就會出現 "Access violation ...." 然後是停留在 delete bBuf; 那一行~ 請問是否有那有問題?yamigo 你好: 我的不會耶?? 你是如何 Create FormPrintDialog 的?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |