Delphi取系统版本

本来以为是个很简单的函数,发现对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;

 

posted on 2013-07-14 02:18  shellcode  阅读(244)  评论(0)    收藏  举报

导航