Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Вниз

Гребаный MSDOS 


Vitaliy Jungle   (2001-10-13 05:42) [0]

Мужики, ну в конце-то концов, помогите определить версию 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.

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



Slava   (2001-10-15 07:07) [1]

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

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



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

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



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

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



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

SetupAPI.dll

int GetDOSMajorVersion(void)
int GetDOSMinorVersion(void)



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

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



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

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



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

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

Нужно воспользоваться функцией 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;



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


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

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



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

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

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




Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.025 c
3-8798            Antoniz               2002-01-08 14:27  2002.02.04  
Как программно создать БД Interbase


1-8813            daos                  2002-01-19 10:33  2002.02.04  
Дочерняя форма в dll


1-8903            MystiX                2002-01-15 17:55  2002.02.04  
Help!!!


1-8945            kserg@ukr.net         2002-01-18 13:12  2002.02.04  
Как программно перевести фокус в ячейку StringGrid.Cells


1-8913            Cyber                 2002-01-17 05:24  2002.02.04  
Как сделать TMemo прозрачным?