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

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

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

 
 Ответить  Открыть новую тему 
> 16-разрядная подсистема MS-DOS
сообщение
Сообщение #1


Бывалый
***

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

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


Пытаюсь скомпилировать:
Програма должна выяснить если существует путь в лабиринте от точки А к Б.
COD (Показать/Скрыть)

Пишет что NTVDM нашла недопустимую инструкцию. Погуглил, поискал на форуме, способа решение нашел два : перейти на 32-бит компилятор или сменить ОСь.
Но ошибка только в этой програме, пробовал запустить ранее сохраненые, и быстро понаписал "Hello World" и другие мини-програмы, всё работает, тогда причем тут MS-DOS?


Сообщение отредактировано: DarkWishmaster -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


ДОС ни при чём.
Ошибка в твоей программе.
Нажми Options->Compiler и поставь там контроль переполнения стека и контроль выхода за пределы массива.

Просто у тебя программа из-за ошибки затирает код, и на месте кода получается та самая недопустимая инструкция. Да, в защищённой оси (в том числе в винде) программа не будет молча затирать код, она выдаст ошибку записи (защита памяти на уровне процессора). Но работать всё равно не будет. Так что сначала отладь программу.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

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

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


Цитата(TarasBer @ 7.04.2011 17:01) *

ДОС ни при чём.
Ошибка в твоей программе.
Нажми Options->Compiler и поставь там контроль переполнения стека и контроль выхода за пределы массива.

Просто у тебя программа из-за ошибки затирает код, и на месте кода получается та самая недопустимая инструкция. Да, в защищённой оси (в том числе в винде) программа не будет молча затирать код, она выдаст ошибку записи (защита памяти на уровне процессора). Но работать всё равно не будет. Так что сначала отладь программу.


Спасибо!
Ошибка было в том что у меня array[1..maxn, 1..maxn] а барьер я заполняю с for i:=0 ... как я этого не заметил...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
а барьер я заполняю с for i:=0 ... как я этого не заметил...
Если программа компилируется с включенной опцией Range Checking (я уже устал говорить об этом /в самом низу поста/... Не хотите слушать - ловите ошибки дальше), то все, что произойдет - это вылет с указанием места ошибки.
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 23.12.2024 17:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name