Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Версии ОС Windows [D7, WinXP]


Бук ©   (2003-01-13 08:28:00) 

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

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


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

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

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)


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

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


Delirium^.Tremens   (2003-01-13 09:20:00) [3]

Сказали же уже, что это только при компиляции, вот пример узнавания в 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 08:55:00) [4]

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


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

Для того чтобы программно узнать версию 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 при помощи директив условной компиляции Вы не сможете.

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


MBo   (2003-01-13 08:35:00) [6]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо