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

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

Гребаный MSDOS [D3, D6, Win95/98, WinME]


Vitaliy Jungle ©   (2001-10-13 05:42:00) 

Мужики, ну в конце-то концов, помогите определить версию MS-DOS! Уже опух конкретно от всякого рода экспериментаторства. Все эти ваши 16-битные алгоритмы ну не работают они, не работают под 32-битными Дельфи! Сами попробуйте и убедитесь:

procedure TForm1.Button1Click(Sender: TObject);
var
dwVersion : longint;
wDosVer : WORD;
begin
dwVersion := GetVersion;
wDosVer := HiWord(dwVersion);
Edit2.Text := IntToStr(HiByte(wDosVer)) + "." + IntToStr(LoByte(wDosVer));
end;

Какие-то лохи растиражировали этот алгоритм по всему Интернету, даже не понимая того, что он нерабочий (например версия MSDOS 8.0 определена как 192.0) и такие же лохи его используют: «А какую ж тебе версию надо?» - ответил как-то один из «таких» в дельфи-конференции:)))) Лох – одним словом!
В хелпе Дельфов сказано, что типа, определять нужно с использованием ассемблера, вот цитата:

If you need to know that the system is running MS-DOS version 7.0, you must use Interrupt 2Fh Function 4A33h. This function returns zero in the AX register for MS-DOS version 7.0 or higher and returns a nonzero value in AX for any other versions of the disk operating system. In addition to the AX register, this function uses the DS, SI, DX, and BX registers.

Так может возьмется кто помочь? Дело-то всего в пару строчках ассемблера!


Ketmar   (2001-10-27 21:56:00) [1]

искренне подозреваю, что для определения версии дос вполне достаточно узнать версию виндов. почему? подумайте...

Satanas Nobiscum! 27-Oct-XXXVI A.S.


IgorK   (2001-10-25 17:13:00) [2]


This function does not return the current version number of MS-DOS.

// Из описания в Win32API HElp Функции GetVersion.


dymon   (2001-10-25 15:19:00) [3]

УФФ ЕЛЕ НАШЕЛ. ЛОВИ

Нужно воспользоваться функцией GetVersion(). Она в старшем слове возвращает версию Dos"a, а в младшем - Windows.
Например, по нажатию кнопки, в двух метках выведем версии:

procedure TForm1.Button1Click(Sender: TObject);
var
WinVersion, DosVersion: Word;
begin
WinVersion := GetVersion and $0000FFFF;
DosVersion := GetVersion shr 16;
Label1.Caption:=IntToStr(Hi(DosVersion))+"."+IntToStr(Lo(DosVersion));
Label2.Caption:=IntToStr(Lo(WinVersion))+"."+IntToStr(Hi(WinVersion));
end;


dymon   (2001-10-19 07:29:00) [4]

var aa,aaa:byte;
begin
asm
mov ah,30h
int 21h
mov aa,ah
mov aaa,al
end;
writeln("version:",aaa,".",aa);
end.


Fredy314   (2001-10-19 05:38:00) [5]

Прога MSD.ехе среди прочей интересной информации и версию доса
msd=>MicroSoft Diagnostic


Иван Шихалев   (2001-10-17 19:43:00) [6]

SetupAPI.dll

int GetDOSMajorVersion(void)
int GetDOSMinorVersion(void)


PVOzerski   (2001-10-17 18:41:00) [7]

Не знаю, поможет ли совет, но зацепку дать может. Есть в DOS API функции
какого-то прерывания для эмуляции в защищенном режиме прерываний реального.
Вот через это имеет смысл попробовать и сделать. Только не помню деталей.
Суть такая: в какой-то регистр кладется номер прерывания real mode, в какой-то - адрес структуры с "псевдорегистрами реального режима"


Вася Пупкин   (2001-10-15 09:28:00) [8]

2 Slava
Угу... и прочитаем что-то вроде
Windows 98 [Версия 4.10.1998]


Slava   (2001-10-15 07:07:00) [9]

А без assembler"а можно?

ver > 1.txt
Читаем, что в 1.txt


Наверх

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