SetLenght 和 Range check error 的问题 |
答題得分者是:smallfox
|
Delhpi
一般會員 發表:9 回覆:14 積分:4 註冊:2008-07-05 發送簡訊給我 |
function GetBIOSVersion:string; var Reg: TRegistry; b: array of Char; s, i: Integer; Bstr: string; begin reg := TRegistry.Create; try reg.RootKey := HKEY_LOCAL_MACHINE; if reg.OpenKey('HARDWARE\DESCRIPTION\System', false) then begin s := reg.GetDataSize('SystemBiosVersion'); setlength(b, s);//第7行 这句会显示 Range check error 错误,系统是windows 2000 sp4 reg.ReadBinaryData('SystemBiosVersion', b[0], s); for i:=low(b) to high(b) do if b[i] <>#0 then bstr:=bstr b[i]; result:=bstr; reg.CloseKey; end; finally reg.Free; end; end; Call Stack Information: ----------------------------------------------------------------------------- |Address |Module |Unit |Class |Procedure/Method |Line | ----------------------------------------------------------------------------- |*Exception Thread: ID=2948; Priority=0; Class=; [Main] | |---------------------------------------------------------------------------| |00407231|P.exe|system.pas | |DynArraySetLength |16828[8]| |0040313E|P.exe|system.pas | |ErrorAt |3291[3] | |00403174|P.exe|system.pas | |Error |3301[1] | |00407231|P.exe|system.pas | |DynArraySetLength |16828[8]| |0040720C|P.exe|system.pas | |DynArraySetLength |16820[0]| |0040739D|P.exe|system.pas | |_DynArraySetLength|16907[3]| |00407398|P.exe|system.pas | |_DynArraySetLength|16905[1]| |005EDE3B|P.exe|HardWare.pas| |GetBIOSVersion |393[7] |//这里 |005EDDC0|P.exe|HardWare.pas| |GetBIOSVersion |386[0] | |
Delhpi
一般會員 發表:9 回覆:14 積分:4 註冊:2008-07-05 發送簡訊給我 |
|
smallfox
高階會員 發表:2 回覆:113 積分:128 註冊:2003-02-19 發送簡訊給我 |
|
Delhpi
一般會員 發表:9 回覆:14 積分:4 註冊:2008-07-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |