программа для DOS

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

программа для DOS

Сообщение Velial »

Доброго времени суток.
Нужно написать программу для выполнения в dos, а точнее freedos.
Создаю в Lazarus проект "Программа"
пишу код:

Код: Выделить всё

program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

{$R *.res}
var i          : integer;
    f, f1      : File;
    st, st1    : string;
    s          : byte;
begin
//..................................................
end.

В винде запускаю - работает, а при запуске из чистого dos получаю сообщение "This program cannot be run in DOS mode".
Как ее заставить работать?
P.S. поиском пользовался но не нашел решения
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

DOS - это 16-разрядная система,а fpc - 32-х разрядный компилятор.

P.S. про freedos не увидел
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

то есть решения нет?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

смена компилятора
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Во FreeDOS будут работать 32-ух разрядные программы совместно с со специальным расширителем - DOS\4GW или DOS\32. Только программу надо компилировать именно досовским компилятором. Во FreePascal он называется GO32V2.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

Уже качаю.
Надо только поменять путь до компилятора? Или еще что-то нужно?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Надо его засунуть в тот же каталог, где стоит Ваш виндовый FPC и потом проверить, что в каьалогах bin и units находятся два подкаталога - i386-win32 и go32v2. В Lazarus'e потом останется только выбрать ОС для компиляции у установить кодировку исходников в cp866.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

в каьалогах bin и units находятся два подкаталога - i386-win32 и go32v2

сделано
В Lazarus'e потом останется только выбрать ОС для компиляции

это как?

разобрался. но при компиляции получаю ошибку "project1.lpr(1,1) Fatal: Can't find unit system used by project1"
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Velial
В меню "Сервис - Параметры - Путь к компилятору" посмотрите, к какому компилятору указан путь - виндовому или досовскому?
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

к виндовому...
попробовал досовский прописать - получаю ошибку "Failed to execute C:\lazarus\fpc\2.4.2\bin\go32v2\fpc.exe -B -MObjFPC -Scghi -O1 -Tgo32v2 -gl -vewnhi -l -FiD:\Lazarus\zaglushka\lib\i386-win32 -FuD:\Lazarus\zaglushka\ -Fu. -FUD:\Lazarus\zaglushka\lib\i386-win32\ -oproject1 project1.lpr : 87"
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Velial
А что там у Вас за таинственная "zaglushka"? Вы уверены, что это правильный путь к модулям?
-FUD:\Lazarus\zaglushka\lib\i386-win32\

Путь не указывает на правильные модули, должно быть что-то вроде:
-FUD:\Lazarus\zaglushka\lib\go32v2\

Найдите у себя файл fpc.cfg и посмотрите там ключи:
-Fu
-Fi
Ещё один момент. Компилятор и поиск модулей происходит совершенно в разных местах:
C:\lazarus\fpc\2.4.2\bin\go32v2\fpc.exe

и
-FuD:\Lazarus\zaglushka\

Даже невооружённым глазом видно, что там диски разные.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

zaglushka это каталог в котором сохранен проект.
win компилятор - C:\lazarus\fpc\2.4.2\bin\i386-win32\fpc.exe
dos компилятор - C:\lazarus\fpc\2.4.2\bin\go32v2\fpc.exe

C:\lazarus\fpc\2.4.2\bin\i386-win32\fpc.cfg
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/*
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/rtl
-fi - нет в fpc.cfg


C:\lazarus\fpc\2.4.2\bin\go32v2\fpc.cfg
-Fuc:\lazarus\fpc\2.4.2/units/$FPCOS
-Fuc:\lazarus\fpc\2.4.2/units/$FPCOS/*
-Fuc:\lazarus\fpc\2.4.2/units/$FPCOS/rtl
#-Fic:\lazarus\fpc\2.4.2/source/rtl/inc;c:\lazarus\fpc\2.4.2/source/rtl/i386

сам я никаких путей не прописывал

что нужно исправить? cfg файлы создавались при установке автоматически

Всё работало, пока я не поставил go32v2. После установки в параметрах проекта выбрал go32v2, а в "Сервис - Параметры - Путь к компилятору" прописал компилятор - C:\lazarus\fpc\2.4.2\bin\go32v2\fpc.exe и Make - C:\lazarus\fpc\2.4.2\bin\go32v2\make.exe
Больше ничего не правил.
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

http://www.japheth.de/HX.html - позволяет запускать консольные или OpenGL приложения для Win32 в среде DOS.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

v-t-l писал(а):http://www.japheth.de/HX.html - позволяет запускать консольные или OpenGL приложения для Win32 в среде DOS.

Это конечно интересно, но хотелось бы решить проблему с компиляцией.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

Подскажите как решить проблему с компиляцией. Или выложите свой fpc.cfg от go32v2
Ответить