DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sy1012
今日帖子: 0
在线用户: 3
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 beginer (初学者) ★☆☆☆☆ -
盒子活跃会员
2003/7/20 14:39:28
标题:
哪个函数可以得到操作系统的类型? 浏览:2258
加入我的收藏
楼主: 我想知道当前的操作系统是98还是2000还是XP,用哪个涵数可以??
----------------------------------------------
新手,想得到您的帮助!
作者:
男 playapple (长发飘飘--冷酷到底) ★☆☆☆☆ -
盒子活跃会员
2003/7/20 16:19:48
1楼: 如果要得到操作系统的信息,如下即可:

case Win32Platform of

VER_PLATFORM_WIN32_WINDOWS:ShowMessage ('Windows 9x');

VER_PLATFORM_WIN32_NT:ShowMessage ('Windows NT');

end;

ShowMessage ('Running on Windows:'+IntToStr (Win32MajorVersion)+'.'

+ IntToStr (Win32MinorVersion)+

' ((Build '+IntToStr (Win32BuildNumber)+

')'+#10#13 +'Update:'+Win32CSDVersion);

没有理由再调用GetVersion或者GetVersionEx了。



Delphi 6中的SysUtils增加了几个比较有用的Bool/Str conversion函数,声明如下:

function StrToBool(const S: string): Boolean;

function StrToBoolDef(const S: string; const Default: Boolean): Boolean;

function TryStrToBool(const S: string; out Value: Boolean): Boolean;

function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;

  不用看帮助,你也应该明白这几个函数如何使用了。其中BoolToStr可能是比较常用的一个,如果不指定UseBoolStrs参数,那么返回的将会是B的Ord形式,例如,BoolToStr(True)将返回’-1’。而BoolToStr(True,True)则返回’True’。返回值取决于SysUtils单元中声明的TrueBoolStrs /FalseBoolStrs /DefaultTrueBoolStr /DefaultFalseBoolStr这几个值。遗憾的是DefaultTrueBoolStr是常量,不能够用一般的方法改变。
----------------------------------------------
将编程进行到底!
作者:
男 cjsh (cjsh) ★☆☆☆☆ -
盒子活跃会员
2003/7/20 21:52:27
2楼: type 
  TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME,osXP); 

  Function  IsNT(var OS:string): boolean;//判断是否是NT系统 
  Function  GetOS :TOSVersion;           //获得操作系统 

//获取操作系统 
function GetOS; 
var 
  OS :TOSVersionInfo; 
begin 
  ZeroMemory(@OS,SizeOf(OS)); 
  OS.dwOSVersionInfoSize:=SizeOf(OS); 
  GetVersionEx(OS); 
  Result:=osUnknown; 
  if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then 
    begin 
      case OS.dwMajorVersion of 
        3: Result:=osNT3; 
        4: Result:=osNT4; 
        5: begin 
             if OS.dwMinorVersion>=1 then 
               Result:=osXP 
             else 
               Result:=os2K; 
           end; 
      end; 
    end 
  else 
    begin 
      if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then 
        begin 
          Result:=os95; 
          if (Trim(OS.szCSDVersion)='B') then 
            Result:=os95OSR2; 
        end 
      else 
        if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then 
          begin 
            Result:=os98; 
            if (Trim(OS.szCSDVersion)='A') then 
              Result:=os98SE; 
          end 
        else 
          if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then 
            Result:=osME; 
    end; 
end; 

//判断是否时NT系统 
function IsNT(var OS:string): boolean; 
var 
  OSVI :TOSVersion; 
begin 
  OS:='不知道'; 
  OSVI:=GetOs; 
  if OSVI=osNT3 
    then OS:='Window NT3'; 
  if OSVI=OSNT4 
    then OS:='Window NT4'; 
  if OSVI=os2K 
    then OS:='Winodw 2000'; 
  if OSVI=os95 
    then OS:='Window 95'; 
  if OSVI=os95OSR2 
    then OS:='Window 97'; 
  if OSVI=os98 
    then OS:='Winodw 98'; 
  if OSVI=os98SE 
    then OS:='Winodw 98SE'; 
  if OSVI=osME 
    then OS:='Winodw ME'; 
  Result:=GetOS in [osNT3,osNT4,os2K,osXP]; 
end; 




/获得操作系统 
function GetOS(Var OSVersion:TOSVersion):String; 
var 
  OS :TOSVersionInfo; 
begin 
  ZeroMemory(@OS,SizeOf(OS)); 
  OS.dwOSVersionInfoSize:=SizeOf(OS); 
  GetVersionEx(OS); 
  OSVersion:=osUnknown; 
  if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then 
    begin 
      case OS.dwMajorVersion of 
        3: OSVersion:=osNT3; 
        4: OSVersion:=osNT4; 
        5: OSVersion:=os2K; 
      end; 
    end 
  else 
    begin 
      if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then 
        begin 
          OSVersion:=os95; 
          if (Trim(OS.szCSDVersion)='B') then 
            OSVersion:=os95OSR2; 
        end 
      else 
        if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then 
          begin 
            OSVersion:=os98; 
            if (Trim(OS.szCSDVersion)='A') then 
              OSVersion:=os98SE; 
          end 
        else 
          if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then 
            OSVersion:=osME; 
    end; 
  if OSVersion=osNT3 
    then Result:='Window NT3'; 
  if OSVersion=OSNT4 
    then Result:='Window NT4'; 
  if OSVersion=os2K 
    then Result:='Winodw 2000'; 
  if OSVersion=os95 
    then Result:='Window 95'; 
  if OSVersion=os95OSR2 
    then Result:='Window 97'; 
  if OSVersion=os98 
    then Result:='Winodw 98'; 
  if OSVersion=os98SE 
    then Result:='Winodw 98SE'; 
  if OSVersion=osME 
    then Result:='Winodw ME'; 
end; 

再定义一个这个 
type 
  TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME); 



正确的写法
TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME,osXP); 
{ *获得操作系统}
function TNet.GetOS :String;
var
  OS :TOSVersionInfo;
  OSVersion:TOSVersion;
begin
  ZeroMemory(@OS,SizeOf(OS));
  OS.dwOSVersionInfoSize:=SizeOf(OS);
  GetVersionEx(OS);
  OSVersion:=osUnknown;
  if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then
    begin
      case OS.dwMajorVersion of
        3: OSVersion:=osNT3;
        4: OSVersion:=osNT4;
        5: begin
             if OS.dwMinorVersion>=1 then
               OSVersion:=osXP
             else
               OSVersion:=os2K;
           end;
      end;
    end
  else
    begin
      if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then
        begin
          OSVersion:=os95;
          if (Trim(OS.szCSDVersion)='B') then 
            OSVersion:=os95OSR2; 
        end 
      else 
        if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then
          begin 
            OSVersion:=os98;
            if (Trim(OS.szCSDVersion)='A') then
              OSVersion:=os98SE;
          end 
        else 
          if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then
            OSVersion:=osME;
    end; 
  if OSVersion=osNT3 
    then Result:='Window NT3'; 
  if OSVersion=OSNT4 
    then Result:='Window NT4'; 
  if OSVersion=os2K
    then Result:='Winodw 2000';
  if OSVersion=osXp
    then Result:='Winodw Xp';
  if OSVersion=os95 
    then Result:='Window 95';
  if OSVersion=os95OSR2
    then Result:='Window 97';
  if OSVersion=os98
    then Result:='Winodw 98';
  if OSVersion=os98SE 
    then Result:='Winodw 98SE';
  if OSVersion=osME 
    then Result:='Winodw ME'; 
end;

----------------------------------------------
Borland公司的广告语:
We don''t want to own the world, We just want to make it work better!
请记住:帮助那些需要帮助的人是对帮助你的人的最好的感谢!勿以善小而不为!!
作者:
男 beginer (初学者) ★☆☆☆☆ -
盒子活跃会员
2003/7/21 10:13:07
3楼: 哇,不用这么复杂吧,
难道DELPHI中没有内部的函数吗?不能直接调用吗??
----------------------------------------------
新手,想得到您的帮助!
作者:
男 babyluoyi (赵子龙) ★☆☆☆☆ -
盒子活跃会员
2003/7/21 15:37:50
4楼: 用API函数:getversion()就可以了!不用这么复杂
----------------------------------------------
好好学习,天天向上!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行80.07813毫秒 RSS