Главная страница
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.019 c
8-72413
neodiX
2002-10-08 16:45
2003.01.23
Как правильно и быстро сравнить два bitmap a?


7-72549
Yr2
2002-11-09 21:17
2003.01.23
login, password при входе в Windows 2000. Где хранит, как?


4-72598
Novichek
2002-11-05 19:15
2003.01.23
блокирование набора


14-72496
sancho
2003-01-05 19:23
2003.01.23
RTL порт


1-72351
TTCustomDelphiMaster
2003-01-12 16:08
2003.01.23
Variant Conversion