Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
4-7754
il
2003-04-29 17:01
2003.07.03
Как узнать, есть ли в трее иконка чужого приложения?


1-7484
Evil_forever
2003-06-19 23:52
2003.07.03
---|Ветка была без названия|---


3-7334
Cranium
2003-06-09 14:29
2003.07.03
Интерфейс клиента...


14-7636
Schummi
2003-06-14 18:02
2003.07.03
Как заработать деньги?


1-7408
АлеКо
2003-06-23 08:16
2003.07.03
QReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский