本来以为是个很简单的函数,发现对D的双精度小数还是不了解,做判断的时候貌似有问题,所以暂时没研究清楚,用一个曲折的方法写出
function myGetVersion( ):Integer; stdcall; external 'kernel32.dll' name 'GetVersion';
function GetWindowsVersion():LongWord; var j_i:LongWord; j_i1:Double; j_ls:string; begin j_i:= (myGetVersion() shl 16) shr 16 ; //SHL 左移 ,shr 右移 j_i1:= (j_i AND 255)+((j_i AND 65280) shr 8) / 10; //j_i1:= RoundTo(j_i1,-2); j_ls:=FloatToStr(j_i1); //转换为文本 双精度小数做等于判断的时候有问题 一直等于不了 百度查询好象是D的调试时候精度显示是5.1 但是可能实际是5.09999之类 总之D的双精度做判断要注意 if j_ls = '5.1' then begin Result:=0; //0为XP系统 Exit; end; if j_ls = '6.1' then begin Result:=1; //1为W7系统 Exit; end; Result:=10; //10未知系统 end;