關於列舉電腦串列埠的乙個小問題

2022-06-23 02:45:10 字數 1965 閱讀 7355

一直在用cport控制項,也用了它帶的乙個列舉電腦串列埠的函式enumcomports(),原**如下:

procedure enumcomports(ports: tstrings);

var keyhandle: hkey;

errcode, index: integer;

valuename, data: string;

valuelen, datalen, valuetype: dword;

tmpports: tstringlist;

begin

errcode := regopenkeyex(

hkey_local_machine,

'hardware\devicemap\serialcomm',

0,key_read,

keyhandle);

if errcode <> error_success then

begin

//raise ecomport.create(cerror_regerror, errcode);

exit;

end;

tmpports := tstringlist.create;

tryindex := 0;

repeat

valuelen := 256;

datalen := 256;

setlength(valuename, valuelen);

setlength(data, datalen);

errcode := regenumvalue(

keyhandle,

index,

pchar(valuename),

cardinal(valuelen),

valuelen,

nil,

@valuetype,

pbyte(pchar(data)),

@datalen);

if errcode = error_success then

begin

setlength(data, datalen - 1);

tmpports.add(data);

inc(index);

endelse

if errcode <> error_no_more_items then break;

//raise ecomport.create(cerror_regerror, errcode);

until (errcode <> error_success) ;

tmpports.sort;

ports.assign(tmpports);

finally

regclosekey(keyhandle);

tmpports.free;

end;

end;

原來是用delphi7一直正常,現在用xe2,出了小問題。

當把列舉出來的ports分配到combobox時,一切顯示正常

但是,當把串口號變更值儲存到登錄檔或ini檔案後,下次啟動程式時,沒有儲存變更的串口號,這是怎麼回事呢?排除了各種錯誤後,檢測這個函式檢出的串列埠,發現串口號名稱竟然變長了,比如com1本來為4,在ports中儲存的這個值長度為10,但是在combobox中顯示時,顯示是正常的,杯具的是,我在程式啟動時,是要檢測電腦串列埠,然後根據儲存登錄檔中的串號和ports比較,如果有這個串口號,剛不變,否則就設定預設值。這樣每次啟動程式時,串列埠都恢復到預設值,因為"com1" <> "  com1  ",而且可能"

com1  "多餘的字元不僅有空格,可能還有不可顯示字元。用trim解決不了問題。應當是在這個地方修正

tmpports.add(data);
修改成:

tmpports.add(pchar(data));
ok,我想這個主要是字串的問題,ansistring和uncodestring

關於Jsoup的乙個小問題

利用jsoup可以實現對網頁資訊進行有效解析和提取,例如有網頁內容如下 hello,jsoup jsoup的官方 利用jsoup提取標籤的內容,如下 document doc null trycatch ioexception ioe 提取標籤的內容 string strtitle doc.sele...

乙個關於選擇的小問題

以前看過這樣乙個問題 乙個人參加有獎答題,主持人給出了a b c三個選項。這個不知道問題的答案,就隨便選了乙個選項。然後主持人排除了剩下兩個答案中的乙個,告訴這個人有一次改變自己選項的機會。請問 這時候這個人該不該改變自己的選項?剛看到這個問題,我的第一反映是完全沒必要,因為既然排除了乙個錯誤選項,...

關於指標的乙個小問題

任務 c primer 4th 習題5.18 編寫程式定義乙個vector物件,其每個元素都是指向string型別的指標,讀取該vector物件,輸出每個string的內容及其相應的長度。自己的方法 string s string sarr 10 vector內的每個元素都是指向string型別的指...