Показать полную графическую версию : WinXP & Borland Pascal 7.0
Вобщем обьснять не буду зачем мне это понадобилось... а трабл такой при компиляци объекта(попытке запустить прогу ctrl+F9) паскаль ругаетсяся типо дивижн бу зеро... любая прога... даже 1+1... все равно!
вот логи
C:\PASCAL>turbo
Turbo Pascal *Version 7.0 *Copyright (c) 1983,92 Borland International
Runtime error 200 at 0999:0091.
C:\PASCAL>ver
Microsoft Windows XP [Версия 5.1.2600]
может что посоветуете... уж ооочень не хочется вин9Х опять стваить...:)
Добавлено:
эээ! глюк изза строчки Uses CRT... что делать и кто виноват? ЗЫ: без нее никак... сами понимаете!
ilusha sh
18-03-2003, 23:43
Такая проблема бывает связана со следующим.
Как я помню, в CRT лежит процедура delay, которая
(по крайней мере, во многих компиляторах) реализуется
как пустой цикл. Можно предположить, что количество
итераций N необходимых на единицу задержки определяется
так: во время инициализации модуля запускается достаточно
большой цикл и далее получаем
N=число итераций большого цикла /T, где T - время его исполнения.
Если T=0, то имеем runtime error 200.
ilusha sh
И что, delay вырезать надо?
Ork Yason
19-03-2003, 09:46
ыыыыыыы...
такое было, но даже под досом... но давно ;)
попробуй там в параметрах орболочки поковырять сопроцессор...
Я как-то тоже столкнулся с этой проблемой, и единственное, что придумал - переписать на асме все жизненно необходимые функции. Т.к. прога была небольшой - меня на них хватило :) Вот чуть-чуть:
procedure cls;assembler; {clear screen}
asm
mov AH,06
mov AL,0
mov CX,0
mov DH,50
mov DL,80
mov BH,07
int 10h
mov DH,0
mov DL,0
mov AH,02
xor BH,BH
int 10h
end;
procedure gtxy(x, y : byte);assembler; {gotoxy}
asm
mov DH,byte ptr y { coords x}
mov DL,byte ptr x { y}
mov AH,02
int 10h
end;
function getkey:char;assembler; {аналог readkey}
asm
mov AH,10h
int 16h
end;
function getextkey:integer;assembler;
{аналог readkey- только дает расширенный код символа}
asm
mov AH,10h
int 16h
procedure wait(time:longint); assembler; {эту я откуда-то сдул}
asm
mov AH,86h
mov DX,word ptr time
mov CX,word ptr time+2
int 15h
end;
noname00.pas
19-03-2003, 11:01
Проблема решается двумя способами:
1) Положить в соответствующий каталог пропатченный файл crt.tpu (он у меня где-то был - могу поискать)
2) Взять любой дизассемблер и в программе, выдающей ошибку найти примерно следующее:
not ax
not dx
mov cx,00037
div cx
И в этом месте забить div cx nop-ами.
П.С. Только что проверил - у меня есть пропатченный crt.tpu
П.П.С. В любом случае процедура delay работать уже не будет - нужно делать его своими силами. Я бы например повесил свою процедуру на тик таймера и замерил бы, сколько операций делается за тик.
Olga Pashkevitch
07-10-2003, 17:29
>Может, кому-нибудь не жалко пропатченный crt.tpu прислать, про который тут выше говорили?
Спасибо добрым людям за модуль. Просьба снимается.
Исправлено: Olga Pashkevitch, 18:14 8-10-2003
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.