IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Графика при переходе к Windows
Taissie
сообщение 22.03.2015 13:05
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Здравствуйте.
У меня есть такая проблема.
Когда-то написала программы под DOS.
Теперь хотела бы воспроизвести их результаты под Windows.
Обычная программа, для расчета значений, работает.
Но программа для построения графики - нет.
Получается сообщение, что "эта система не поддерживает полноэкранный режим".
Как все же выводить на экран монитора закрашенные пиксели?

У меня в программе стоит "uses graph"
И затем выполняется процедура

begin
driver:=3;
mode:=1;
initGraph (driver,mode,' ');
for i:=0 to 639 do
for j:=0 to 349 do
begin
a:=F0(i;j);
color:=FC1(a);
putpixel (i,j,color);
end;

Раньше, когда еще не было Windows, всё работало, и даже сохранились сделанные рисунки.
Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 22.03.2015 19:38
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Возможны два варианта:
1. Можно попробовать откомпилировать в другом компиляторе FreePascal. В этом случае, возможно, придётся внести небольшие изменения в исходник.
2. Установить виртуальную машину с DOS (DOSBox, VirtualBox).

Есть вариант TurboPascal с DOSBox - называется SchoolPak.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Taissie
сообщение 22.03.2015 22:07
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Спасибо, этот последний вариант ScoolPak получился (первые два пока не пробовала, так как рисунок вроде бы устраивает).
Единственное что - программа рисует поточечно, но в конце не останавливается, и поэтому получившийся рисунок сразу пропадает. Остановила ее с помощью readln , изготовление рисунка в конце остановилось, но вот проблема - затем никак не выйти из программы, реакция на любую клавишу - просто печатает символ вместо части рисунка. Пришлось запускать Диспетчер задач и так выходить из программы.

Сообщение отредактировано: Taissie - 22.03.2015 22:09
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 23.03.2015 10:30
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Еслли readln - то ожидается Enter.
Можно, подключив CRT сделать ожидание таким
Код
  while KeyPressed do {очистка буфера клавиатуры}
    ReadKey;
  repeat  {ожидание нажатия любой клавиши}
  until KeyPressed;
  ReadKey;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Taissie
сообщение 27.03.2015 11:47
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Да, вспомнила эту процедуру остановки...
Но эти операторы нужно еще скопировать в ту программу. Столкнулась с тем, что могу скопировать только внутренние куски программы. А можно ли скопировать что-то извне?

Еще: как остановить выполнение программы в любой момент времени - через какую-то комбинацию на клавиатуре?

Сообщение отредактировано: Taissie - 27.03.2015 11:51
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 27.03.2015 22:42
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Цитата
Но эти операторы нужно еще скопировать в ту программу. Столкнулась с тем, что могу скопировать только внутренние куски программы. А можно ли скопировать что-то извне?
Средствами DOS - никак. Но на время можно открыть исходники Блокнотом или иным текстовым редактором из Windows...
Цитата
Еще: как остановить выполнение программы в любой момент времени - через какую-то комбинацию на клавиатуре?
Ctrl-C и Ctrl-Break.Не помню, или одну из них или сначала Ctrl-C, а потом Ctrl-Break. Из документации на DOS следует, что Ctrl-C - это стандартное сочетание для прерывания работы любой программы, но это прерывание произойдёт в момент ввода или вывода (с клавиатуры, на монитор, файлов) средствами ОС. Т.е. если программа зациклилась при вычислениях - ничто не поможет. Но при отладке в IDE TP добавлена комбинация Ctrl-Break.

Вот ссылка на описание отладки IDE TurboPascal7.0. Почти полностью оно подходит для IDE FreePascal.

Если есть возможность - попробуй перейти на FreePascal. Его плюсы при переходе: такая же IDE, как и у TP, компилируется под Windows, для простых программ есть режим совместимости с TP ("старая" прога сможет обрести "новую" жизнь). Плюсы над TP: более развитая штатная библиотека на многие случаи жизни, можно использовать компилятор командной строки, а это значит, что можно пользоваться Windows-подобными редакторами для работы (лично я использую SciTE - здесь на форуме есть пара-тройка тем об этом, но пришлось отказаться от отладчика), к этим редакторам можно добавлять разные инструменты (я в SciTE подключил форматтер исходного кода), для FreePascal есть надстройки похожие на Delphi (Lazarus, CodeTyphon и MSE). Не буду обманывать, я не сразу смог перейти - по сравнению с TP он кажется тормознутым, было много наработок "с хаками", которые не принимались FreePascal'ем. Но потом, потребовались утилиты для Windows, и тогда TP отошёл на второй план, а потом и забылся.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.11.2024 22:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"