![]() |
Вобщем обьснять не буду зачем мне это понадобилось... а трабл такой при компиляци объекта(попытке запустить прогу ctrl+F9) паскаль ругаетсяся типо дивижн бу зеро... любая прога... даже 1+1... все равно!
вот логи Цитата:
Добавлено: эээ! глюк изза строчки Uses CRT... что делать и кто виноват? ЗЫ: без нее никак... сами понимаете! |
Такая проблема бывает связана со следующим.
Как я помню, в CRT лежит процедура delay, которая (по крайней мере, во многих компиляторах) реализуется как пустой цикл. Можно предположить, что количество итераций N необходимых на единицу задержки определяется так: во время инициализации модуля запускается достаточно большой цикл и далее получаем N=число итераций большого цикла /T, где T - время его исполнения. Если T=0, то имеем runtime error 200. |
ilusha sh
И что, delay вырезать надо? |
ыыыыыыы...
такое было, но даже под досом... но давно ;) попробуй там в параметрах орболочки поковырять сопроцессор... |
Я как-то тоже столкнулся с этой проблемой, и единственное, что придумал - переписать на асме все жизненно необходимые функции. Т.к. прога была небольшой - меня на них хватило :) Вот чуть-чуть:
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; |
Проблема решается двумя способами:
1) Положить в соответствующий каталог пропатченный файл crt.tpu (он у меня где-то был - могу поискать) 2) Взять любой дизассемблер и в программе, выдающей ошибку найти примерно следующее: not ax not dx mov cx,00037 div cx И в этом месте забить div cx nop-ами. П.С. Только что проверил - у меня есть пропатченный crt.tpu П.П.С. В любом случае процедура delay работать уже не будет - нужно делать его своими силами. Я бы например повесил свою процедуру на тик таймера и замерил бы, сколько операций делается за тик. |
>Может, кому-нибудь не жалко пропатченный crt.tpu прислать, про который тут выше говорили?
Спасибо добрым людям за модуль. Просьба снимается. [s]Исправлено: Olga Pashkevitch, 18:14 8-10-2003[/s] |
Время: 15:18. |
Время: 15:18.
© OSzone.net 2001-