Форум: "Потрепаться";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизКак сделать, чтобы программа работала под DOS? Найти похожие ветки
← →
Шишкин Илья (2003-06-10 13:38) [0]Как сделать программу, которая могла бы работать под DOS?
← →
Digitman (2003-06-10 13:40) [1]в среде Делфи - никак
← →
Михайлов Антон (2003-06-10 13:56) [2]Запускаешь Borland Pascal и пишишь программу... она будет работать под Dos :)
← →
Apok (2003-06-15 16:48) [3]Borland Pascal и пиши программу.
← →
Anatoly Podgoretsky (2003-06-15 17:08) [4]В соответсвии со спецификацией ДОС и соответствующим компилятором.
← →
Shluz (2003-06-15 20:39) [5]:)))))))
я здесь не один начинающий :))) рад!!
← →
Knight (2003-06-16 00:07) [6]>> Digitman © (10.06.03 13:40)
> в среде Делфи - никак
А в чём можно? Как ScanDisk, например... что-то, где-то, слышал... но может кто по-подробнее знает или пошлёт куда конкретно... :)
← →
Palladin (2003-06-16 00:30) [7]два раза уже сказали чем можно, все равно не вьезжает народ
← →
DrPass (2003-06-16 00:38) [8]Круче всего набивать СОМ-файл в Блокноте
← →
Knight (2003-06-16 01:16) [9]А как объединить Дос код с Вин?
← →
Palladin (2003-06-16 01:25) [10]Knight, вот тут ты сморозил фразу явно для орешника...
← →
Knight (2003-06-16 01:32) [11]И ешё раз сморожу... Ж)
Как сделать, чтобы под Досом выполнялась Дос0составляющая програамы, а под Виндами бало нормальное Вин-Приложение? :)
← →
Andrews (2003-06-16 01:38) [12]> Шишкин Илья ©, Knight ©
А вы случайно не консольное приложение имеете ввиду?
← →
Knight (2003-06-16 01:44) [13]>> Andrews © (16.06.03 01:38)
нет... консольное под голым Досом не пойдёт.
← →
Palladin (2003-06-16 01:51) [14]ну вот, если подробней то все стало ясно, имхо могу только сказать что такое возможно, но как это сделать точно не уверен...
в делфях точно не получится, на сях может быть...
← →
Andrews (2003-06-16 01:55) [15]>> Knight © (16.06.03 01:44)
Зато досовское под w9x пойдет в 99% случаев :o)
← →
Knight (2003-06-16 02:04) [16]>> Palladin © (16.06.03 01:51)
А я и первый раз довольно ясно сказал :)
← →
Andrews (2003-06-16 02:14) [17]Через ..., можно сделать так
programa.bat
@echo off
win_prg.exe > nil
if errorlevel goto label1 //если конечно вин программа возвращает код завершения
dos_prg.exe
label1:
В написании команд мог напутать, давненько я "батники" не писал :o), но идея думаю понятна, хотя решение далеко не "элегантное", да и мелькане черных прямоугольников на экране под win, не добавит эстетики... :o)
← →
Knight (2003-06-16 03:20) [18]>> Andrews © (16.06.03 02:14)
Еще предложи разместить в одном каталоге:
dos_prg.exe, win31_prg.exe, win9x_prg.exe, winXP_prg.exe и др.
типа, пользователь не дурак, сам разберётся по названию, что ему запустить... :)
>> All
Подробных объяснений можно не давать все-равно едва ли пригодиться, просто теоретически интересно... :)
Я понимаю так, что там где программа обычно адресуется на вывод строки типа: "This program requires Microsoft Windows", "This program cannot be run in DOS mode" и т.п. идет переадресация на участок кода ориентированного на DOS.
← →
(зашита от спама, кто надо узнает) (2003-06-16 08:29) [19]Knight © (16.06.03 03:20)
>... идет переадресация на участок кода ориентированного на DOS.
так и есть только наоборот, переадресация идет с доса на виндовый участок. достаточно почитать как устроен заголовок exe файла под винды, чтобы стало понятно. заголовок сложный (гораздо сложнее чем DOS) и включает в себя программу под дос (она первой стоит).
так что теоретически чтобы и под DOS и под Win-дами работало нужно самому слинковать 2 программы, на место досовского заголовка вставить свою. естественно придется мудрить с переадресацией и свою дос прогу "учить" переадресовыватся на виндовый модуль.
все чисто теоретически... и со скидкой на то что уже забыл, интересовался этим очень давно еще когда на асме писал по дос и виндовс только только появилась.
p.s. возможно у дос проги должен быть ограничен размер. точно не скажу, но там помоему короткий джамп (в пределах одного сегмента, что накладывает ограничения) возможно и программа должна быть в формате COM. (все надо проверять и читать об этом по новой)
← →
KSergey (2003-06-16 09:02) [20]Не знаю как это сделать в дельфи, в Borland C++ 3.1 при написании def (вроде) файла проекта можно указывать какую программу (буквально exe-файл) пихать в упомянутую тов. (зашита от спама, кто надо узнает) (16.06.03 08:29) DOS-часть.
Можно попробовать поискать какой файл ложит Delphi при линковке (вероятно, он где-то лежит) и его подменить. (Я сомневаюсь что это программа вшита как данные в линкер).
← →
PVOzerski (2003-06-16 11:29) [21]1) Если не стоит задача dual-mode - ищите бесплатный экстендер wdosx - он "переделывает" win32-приложения под DOS (на самом деле, пришивает свой загрузчик+эмулятор WinAPI. Либо берите DOS-овский компилятор (из 32-разрядных приходят на ум FreePascal и TMT).
2) Если dual-mode - можно попробовать поиздеваться над приложением иначе. Найти какую-нибудь утилиту для замены DOS-stub"а в PECOFF и пришить загрузчик экстендера 32RTM.EXE/dpmi32vm.ovl (имеются в некоторых Борландовских продуктах).
Естественно, набор WinAPI-функций, эмулируемых экстендерами, весьма ограничен, о GUI, реализованном с их помощью, забудьте.
Еще вариант - через прерывания DOS выяснять из DOS-программы наличие Windows и, при необходимости, запускать Win-программу (этот путь мало пригоден для NT). А вот если загрузчик DOS-программы сделать DOS-stub"ом для win-программы... Главное - найти или сделать утилиту для замены stub"а.
← →
DrPass (2003-06-16 11:55) [22]>Knigth
> Я понимаю так, что там где программа обычно адресуется на
> вывод строки типа: "This program requires Microsoft Windows",
> "This program cannot be run in DOS mode" и т.п. идет переадресация
> на участок кода ориентированного на DOS
Просто РЕ-файлу полагается иметь два заголовка, обычный MZ и виндовый PE. DOS обращается к первому, не подозревая о существовании второго, и видит только программку, которая выдает оное сообщение, тут же завершая работу. А винда находит РЕ-заголовок, и работает, как с РЕ-файлом.
Так что теоретически можно создать и кроссплатформенную программу, включающую как Windows, так и DOS-версии в одном файле. Но кому нужен этот гемор? Разве что для науки...
← →
Knight (2003-06-16 12:38) [23]Спасибо всем, этот принцип понятен :)
Если можно использую эту тему ещё для одного вопроса...
Можно ли работать из под ДОС с длинными именами, или хотя бы копировать, переименовывать без их "укорачивания"?
← →
DrPass (2003-06-16 13:49) [24]Можно. Но только через прямое обращение к диску или драйвер. Длинные имена хранятся в тех же дисковых структурах, только DOS их игнорирует
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.013 c