Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Версии ОС Windows   Найти похожие ветки 

 
Бук   (2003-01-13 08:28) [0]

Как программно узнать версию Windows, из-под которой запускается программа?
Предполагаю, что надо писать
{$IFDEF}
а что должно быть тут?

Я просто не знаю обозначения всех осей. 95-й, NT, 98-й и. т. д
Выручайте!


 
MBo ©   (2003-01-13 08:35) [1]

GetVersionEx
а {$IFDEF} - только при компиляции влияет


 
Сергей Бушин ©   (2003-01-13 08:51) [2]

Для того чтобы программно узнать версию Windows под которой запускается Ваше приложение есть несколько способов.
1. Win API - GetVersion, GetVersionEx
2. В Delphi есть переменная Win32Platform. Нажмите F1 и узнаете.
Есть наверно и еще, не знаю, но все это можно найти простым нажатием F1.
А то что предлагает Вы, то это называется директивы условной компиляции. Например начиная с Delphi 6 имеются такая директива как MSWINDOWS, а в Kylux есть LINUX, если Вы в своем коде напишите:

{$IFDEF MSWINDOWS}
MyWinodwsProc;
{Данный участок будет компилироваться только в Windows, т.к. в Delphi определен MSWINDOWS, а в Kylux это компилятор воспринимать не будет, т.к. ему не известно MSWINDOWS}
{$ENDIF}
...
{$IFDEF LINUX}
MyLinusProc;//тоже самое только наоборот
{$ENDIF}


Имеется способ определить под какой версией Delphi происходит компиляция при помощи директив условной компиляции, но узнать версию Windows при помощи директив условной компиляции Вы не сможете.

Извините, но иногда надо читать книги. Данный момент, очень хорошо описан в любой начинающей книге.


 
Бук   (2003-01-13 08:55) [3]

ок... Спасибо


 
Delirium^.Tremens ©   (2003-01-13 09:20) [4]

Сказали же уже, что это только при компиляции, вот пример узнавания в run-time:

var osInfo: OSVERSIONINFO;
...
osInfo.dwOSVersionInfoSize := sizeof(OSVERSIONINFO);
GetVersionEx(osInfo);
if osInfo.dwPlatformId = VER_PLATFORM_WIN32_NT
then sysName := "Windows NT "+ IntToStr(osInfo.dwMajorVersion)
else if osInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS
then sysName := "Windows "+ IntToStr(osInfo.dwMajorVersion);


 
Юрий Зотов ©   (2003-01-13 09:50) [5]

Не нужно писать свой код. Есть уже готовая информация: Win32Platform, Win32MajorVersion, Win32MinorVersion, Win32BuildNumber. Остается только проверить.


 
GrayWolf   (2003-01-13 21:05) [6]

Я бы добавил еще такую информацию (но идея Ю. Зотова верна!):

function GetOperatingSystem : integer;
var

osVerInfo : TOSVersionInfo;
majorVer, minorVer : Integer;
begin

result := cOsUnknown;
{ set operating system type flag }
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
begin
majorVer := osVerInfo.dwMajorVersion;
minorVer := osVerInfo.dwMinorVersion;
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
begin
if majorVer <= 4 then
result := cOsWinNT
else if (majorVer = 5) AND (minorVer= 0) then
result := cOsWin2000
else if (majorVer = 5) AND (minorVer = 1) then
result := cOsWhistler
else
result := cOsUnknown;
end;
VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
begin
if (majorVer = 4) AND (minorVer = 0) then
result := cOsWin95
else if (majorVer = 4) AND (minorVer = 10) then
begin
if osVerInfo.szCSDVersion[1] = "A" then
result := cOsWin98SE
else
result := cOsWin98;
end
else if (majorVer = 4) AND (minorVer = 90) then
result := cOsWinME
else
result := cOsUnknown;
end;
else
result := cOsUnknown;
end;
end
else
result := cOsUnknown;
end;


(Взято из справочника Kuliba)



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-72087
TTCustomDelphiMaster
2002-12-28 19:44
2003.01.23
Как обмануть DBGrid


14-72502
ION T
2003-01-06 17:32
2003.01.23
Kylix 3 под Red Hat 8.0


3-72085
Yrtimd
2002-12-28 21:36
2003.01.23
как в SQL-запросе задать условие отбора формата


3-72127
ZiLot
2002-12-30 22:04
2003.01.23
Помогите примерчиком...


3-72047
Sectey
2003-01-05 11:22
2003.01.23
SQL запросы и индексы у локальной таблици