Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

Паскаль не работает   Найти похожие ветки 

 
CAMOBAP   (2003-03-14 08:52) [0]

Компилирует а запускать не хочет
Error 200: Division by zero.
В чем проблемма?


 
Юрий Зотов   (2003-03-14 08:54) [1]

Деление на ноль в 17-й строке.
Виноват, конечно, Паскаль. Вы здесь ни при чем.


 
Graphick   (2003-03-14 08:55) [2]

Причем Блез.


 
Anatoly Podgoretsky   (2003-03-14 08:58) [3]

Нет Франк и его ребята, не глубоко смотрели


 
CAMOBAP   (2003-03-14 09:03) [4]

Вот переместили.
Ну, вопрос не совсем корректно задал, а издаваться то зачем?


 
Vlad V. Oshin   (2003-03-14 09:11) [5]

я слышал патч какой-то нужен, вроде что-то с быстрыми процами связанное, поискать надо. (если конечно не ошибка алгоритма :))


 
Ihor Osov'yak   (2003-03-14 09:12) [6]

2 CAMOBAP © (14.03.03 09:03)

Дык Самовар, по заслугам....


Единственный случай, когда причина не в тебе - это когда ты сел почти первй раз за паскаль, подключил оригинальный модуль crt, а машина быстрее pIII/400 (ориентировочно). Но и в этом случае мог-бы сказать, что ошибка возникает до первого оператора...

... Не телепаты здесь бегают по-утрам. Впрочем, и вечером с этим проблематично...


 
CAMOBAP   (2003-03-14 09:15) [7]

Спасибо Ihor Osov"yak
Убрал из uses crt - заработало!!!


 
MBo   (2003-03-14 09:21) [8]

>CAMOBAP
Существуют патчи, исправляющие эту беду. Все равно же CRT когда-нибудь понадобится


 
Anatoly Podgoretsky   (2003-03-14 09:22) [9]

Ну тогда еще, это будет относиться и к Дельфи, всегда убирай все неиспользуемые модули из uses, шерстка будет пушистая


 
CAMOBAP   (2003-03-14 09:35) [10]

Дык, он был используемый...
MBo а где можно взять такой патч, ссылку можно


 
Ihor Osov'yak   (2003-03-14 09:48) [11]

2 CAMOBAP © (14.03.03 09:15)

Ну, блин, ты даеш...

Если все же нужно будет crt - поищи по гуглю, в инете кучу заплаток на сию тему есть...

Да, справедливост ради - вместо когда причина не в тебе читай - когда причина не только в тебе


 
MBo   (2003-03-14 09:48) [12]

aport.ru
crt patch


 
Wind2000   (2003-03-14 09:54) [13]

Не буду издеваться, скажу по существу - сообщение о такой ошибке суть наличие факта деления на ноль. Деление на ноль не регистрируется во время компиляции и всегда появляется только во время выполнения. В чем причина? Смотри в какой строке, проанализируй код - тогда и узнаешь, почему у тебя возникает такая операция. А вообще правилами классической математики деление на ноль ЗАПРЕЩЕНО. Это объясняют еще в школе, так что не стоит бросаться фразами "Паскаль не работает". Этот язык вытерпел множество таких незаслуженных нападок, вытерпит и тебя


 
Danilka   (2003-03-14 09:56) [14]

класс!
как интересно читать посты тех, кто не удосужился прочесть, если уж и не все, то хотя-бы пару-тройку последних постов...


 
Ihor Osov'yak   (2003-03-14 10:04) [15]

2 Wind2000 (14.03.03 09:54)

Переполнение деления на нуль возникает не только при делении на нуль, а при ледении очень большого на оч маленькое...

Что и есть в данном случае. Авторы unit crc не предугадали роста быстродействия процессоров в будущем. В коде инициализации упомянутого выше модуля есть фрагмент, оценивающий быстродействие процессора для использования этой величины в прцедуре pause.. Вот в этом фрагменте ошибка и возникает (вследствие деления оч. большого на оч. маленькое).

То есть в общем случае трасировка собственного кода ничего не дает - ибо эта ошибка будет еще до первого оператора...

Зы к Самрвару - а подумай, очень ли тебе crt надо - если с него только всякие readkey, keypressed - так они за минуту самостоятельно пишутся.. Pause - та же история (почти)...
Если работать с текстовыми окошками - так TV есть... И тд и тп


 
Anatoly Podgoretsky   (2003-03-14 10:14) [16]

Wind2000 (14.03.03 09:54)
1. Не буду издеваться, скажу по существу - сообщение о такой ошибке не есть суть наличие факта деления на ноль.
В данном конкретном случае есть суть деления на 55

2. А вообще правилами классической математики деление на ноль НЕ ЗАПРЕЩЕНО - результатЪ бесконечность!


 
АлександрИзПерми   (2003-03-14 10:16) [17]

Вот что у меня сохранилось
--
[ Runtime error 200 ]
Ошибка расчета сонстанты для функции Delay() на процессорах Pentium II
Поблема находится в модуле CRT.
Для тех у кого есть Runtime Library CRT.ASM (строка 105)
CALL DelayLoop
NOT AX
NOT DX
MOV CX,55
DIV CX << Ошибка здесь!
MOV DelayCnt,AX

Чтоб ее исправить надо
MOV CX,55
заменить на:
MOV CX,0DCh


Вот вам всем ПАТЧ, исправляет ВСЕ:
и *.EXE, и *.TPU, и *.TPP, и *.TPL
Ловите, и не говорите, что не видели!

Для особо подозрительных даю исходник.

С уважением
Александр Гайдук (gav@lesobank.ru), ICQ UIN 23479598
Программист отдела информатики АКБ Лесобанк
Home page: http://www.lesobank.ru/ru/home/gav/index.html
Welcome to the Lesobank Web Site: http://www.lesobank.ru
--
uses
TpDos,
TpClone;

const
ID : array[1..5] of Byte =3D ($F7, $D0, $F7, $D2, $B9);
fixID : array[1..6] of Byte =3D ($F7, $D0, $F7, $D2, $B9, $DC);

var
gID : array[1..6] of Byte;
FName : String;
L : LongInt;
CP : ClonePack;

procedure Help;
begin
WriteLn("FIX for Borland Pascal 7.X programs on Pentium II.");
WriteLn("Copyright (C) 1998 by G.A.V.");
WriteLn;
WriteLn("USAGE:");
WriteLn;
WriteLn(#9"P2FIX PROGRAM.EXE");
WriteLn(#9"or");
WriteLn(#9"P2FIX TURBO.TPL");
Halt;
end;

begin
if ParamCount <> 1 then Help;
FName :=3D ParamStr(1);
if not ExistFile(FName) then Help;

FillChar(gID, 6, 0);
OpenForCloning(FName, CP);
L :=3D FindDefaultsStart(CP, ID, SizeOf(ID), 0);
LoadDefaults(CP, L, gID, 6);

if L =3D 0 then
begin
WriteLn("Not need for fixing...");
end
else
begin
if gID[6] < $37 then WriteLn("Invalid BP7 program...");
if gID[6] =3D $37 then WriteLn("Not fixed... Fixing!");
if (gID[6] > $37) and (gID[6] < $DC) then WriteLn("Bad =
fix(",gID[6],")... Fixing!");
if gID[6] >=3D $DC then WriteLn("Already fixed!");
if (gID[6] >=3D $37) and (gID[6] < $DC) then StoreDefaults(CP, L, =
fixID, 6);
end;

CloseForCloning(CP);
end.




 
Anatoly Podgoretsky   (2003-03-14 10:27) [18]

АлександрИзПерми (14.03.03 10:16)
И все функции связанные со временем будут ошибаться в 4 раза, кроме того это сути не меняет, ошибка начнет возникать теперь на частоте 800 мгц
Надо искать те решение, где сделан переход от 16 битной математики на 32 битную. Среди существующих заплаток такие есть.


 
Mitechka   (2003-03-14 12:23) [19]

Нашел вот ссылку по теме
http://www.brain.uni-freiburg.de/~klaus/pascal/runerr200/
Хотя Александр из Перми уже все сказал


 
SergoMasky   (2003-03-14 12:26) [20]

Могу выслать маленькую прогу которая переделывает exe файл, после чего такая ошибка не появляется, это при условии, что твоя ошибка связана все-таки с быстрым процом, а не твоя личная. Я ею всегда пользуюсь, правда проверял только до 400 Celerona, на более мощных не пробовал. Если програ заинтерисует пиши.


 
Tor Odinssen   (2003-03-14 13:32) [21]

Есть такой модуль - maxcrt (замена стандартному crt). Там эта ошибка Борландовских программеров исправлена. Валяется вроде на ListSoft.ru или на Download.ru


 
les   (2003-03-14 16:03) [22]


> Anatoly Podgoretsky © (14.03.03 10:14)
> 2. А вообще правилами классической математики деление на
> ноль НЕ ЗАПРЕЩЕНО - результатЪ бесконечность!


Почему же ето? Именно в том то и дело что запрещено - делить на ноль НЕЛЬЗЯ. Невозможно определить результат етой операции.

Бесконечность? Так что же если бесконечность умножить на ноль ми получим наше (произвольное!) делимое? Уви Анатолий при всех ваших заслугах...


 
Anatoly Podgoretsky   (2003-03-14 16:07) [23]

если бесконечность умножить на ноль мы получим беконечность


 
Manulo   (2003-03-14 16:11) [24]


> les © (14.03.03 16:03)

Говорю, как человек, почти закончивший ПриМат (Прикладная Математика то бишь).
При делении на ноль результат = БЕСКОНЕЧНОСТЬ!
При делении на бесконечность результат = НОЛЬ!

Не доверяешь, впоймай люього более-менее не гулявшего МатАнализ, он тебе скажет то же самое


 
Anatoly Podgoretsky   (2003-03-14 16:31) [25]

Вроде бы как выполнять математические операции с бесконечность нельзя, но пусть лучше ответят те кто получше знает математику.


 
Переяслов Григорий   (2003-03-14 17:15) [26]

А я сам писал в свое время юнит. Он назывался GrigCRT и выполнял всето-же, что и CRT (то, что мне было нужно). Если хочешь, я его тебе вышлю по мылу.


 
Tony Taylor   (2003-03-14 17:18) [27]

Я балдею мужики. Откуда же вас взяли? По ходу все МатАн пропускали в институте, если у кого и был вообще такой курс. Не помните ли вы пределы? Ни кто не когда не делил в математике на ноль, и бесконечность при этом ни кто не получал. Рассматривали, например, ПРЕДЕЛ отношения Y/X если, например X->0 (для вас, стремится к нулю), а Y - какая то константа, тогда предел (Lim) действительно - бесконечность. Но например, Lim(Sin(X)/X), при X->0, равен 1! ,то математика... Хочу заметить ещё то что даже 0! (ноль факториал), по определению равен 1. И всё это сделанно ради того чтобы случайно на ноль не разделить в разложении Тейлора. Кто помнит его - поймёт меня про что я.


 
nikkie   (2003-03-14 17:31) [28]

0! = 1 из соображений, что n! = n * (n-1)!. ряд Тейлора тут не причем.

можно ли делить на 0 или нельзя - вопрос темный :)
надо начинать с аксоматики, определения того, с какими числами мы работает и каким аксиомам должна удовлетворять операция деления.

кстати, почему-то никто не вспоминает, что нельзя 0 на 0 поделить :)


 
Tony Taylor   (2003-03-14 17:32) [29]

И ещё хочется сказать Примату Manulo. Вот именно по этому ты так ПМ и не закончил.


 
alxx   (2003-03-14 17:33) [30]

Вот пример:

Любое число в нулевой степени 1.
Ноль в любой степени 0.

теперь скажите, чему равно ноль в нулевой степени?


 
Tony Taylor   (2003-03-14 17:36) [31]

Кстати есть ещё и стандарт плавающей арифметики IEEE754, где всё чётко определенно, в этот стандарт включенны не только плавающие числа и бесконечности(+inf/-inf), но и ещё NaN`ы, т.е. Not A Number, например получаемое при делении 0 на 0.


 
Tony Taylor   (2003-03-14 17:37) [32]

Сам же написал что: Ноль в любой степени 0.
Вот и исходи из своего определения...


 
alxx   (2003-03-14 17:42) [33]

А из первого определения?


 
nikkie   (2003-03-14 17:50) [34]

>но и ещё NaN
я ж говорю - вопрос аксиоматики :)

>чему равно ноль в нулевой степени?
принято считать, что результат не определен. про частично определенные функции и области определения еще в школе рассказывают...


 
alxx   (2003-03-14 17:55) [35]

Хм. Верно.


 
Tony Taylor   (2003-03-14 18:05) [36]

вот вот, аксиоматика ваще вопрос тонкий, скажи что у тебя скалярное произведение через синус, и всё молодец можешь свою геометрию строить :)


 
AZ   (2003-03-14 18:44) [37]

>Tony Taylor (14.03.03 17:18)
>Manulo © (14.03.03 16:11)
А что, разрешение неопределенностей вида 0/~, ~/0, 0/0, ~/~ матан уже не рассматривает? (~ - бесконечность)


 
AZ   (2003-03-14 18:48) [38]

Прошу прощения, изучал матан в 1966г. Может, с тех пор что-то изменилось?


 
drpass   (2003-03-14 19:00) [39]

Во дают - из вопроса по древней и всем известной ошибки в TP (делов-то в crt.asm заменить DelayCnt DB на DelayCnt DW и перекомпилировать) развели флейм до проблем матанализа!


 
AZ   (2003-03-14 19:12) [40]

>drpass © (14.03.03 19:00)
Еще раз прошу прощения за дубовый юмор :)))



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.009 c
3-6389
ava
2003-03-15 13:14
2003.04.03
Формат данных


8-6616
Yanval
2002-12-30 17:54
2003.04.03
gif


3-6407
Kent1
2003-03-16 01:24
2003.04.03
связать таблицы через КомбоБоксы


9-6289
Driverrr
2002-11-02 13:08
2003.04.03
Че мне делать?


1-6508
besenok
2003-03-24 17:34
2003.04.03
Как в DLL добавить свои процедуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский