Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
ВнизВерсии ОС 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c