<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2624160</guid>
        <pubDate>Fri, 18 Jun 2010 14:15:20 +0000</pubDate>
        <title>ДЕление на 0 в DELPHI 2007</title>
        <link>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2624160</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=306527&view=findpost&p=2624132'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SPrograMMer &#064; <time class="tag-quote__quoted-time" datetime="2010-06-18T17:41:40+04:00">18.06.10, 13:41</time></span><div class='quote '>все гораздо проще... </div></div><br>
А что проще то ? По любому при наличии в константном выражении деления на 0 компилятор заменяет все выражение на Infinity, которое для процессора является вполне легальным значением и соотв-но ни его загрузка в FPU, ни умножения&#092;деления и т.п. на конечные значения не вызывают никаких исключений. Поэтому независимо от того соптимизирует компилятор вычисления или нет, ошибка тут будет не EZeroDivide, а EInvalidOp при попытке преобразовать Infinity к целому числу через Trunc]]></description>
        <author>leo</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2624132</guid>
        <pubDate>Fri, 18 Jun 2010 13:41:40 +0000</pubDate>
        <title>ДЕление на 0 в DELPHI 2007</title>
        <link>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2624132</link>
        <description><![CDATA[SPrograMMer: все гораздо проще... компилятор оптимизирует строчки:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">d := 12/0;</div><div class="code_line">&nbsp;d:=d*2;</div><div class="code_line">&nbsp;Self.Tag := Trunc(D*2);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> в <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Self.Tag := Trunc((12/0)*2*2);</div></ol></div></div></div></div><br>
может даже быть так, что переменная в опертивной памяти не наблюдается]]></description>
        <author>SPrograMMer</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2623894</guid>
        <pubDate>Fri, 18 Jun 2010 09:12:20 +0000</pubDate>
        <title>ДЕление на 0 в DELPHI 2007</title>
        <link>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2623894</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=306527&view=findpost&p=2623692'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Marriage &#064; <time class="tag-quote__quoted-time" datetime="2010-06-18T05:51:14+00:00">18.06.10, 05:51</time></span><div class='quote '> МОжно ли в настройках дельфи сделать так, чтобы ошибку выдавало без переменной С сразу при делении 12 на 0? </div></div><br>
Видимо нет, т.к. компилятор воспринимает константное выражение d:=12/0 как &quot;осознанное&quot; присвоение переменной d значения Infinity, вполне допустимое для вещественных чисел. Соотв-но встречая 12/0 компилятор ничего не делит, а просто заменяет деление присвоением d:=Infinity<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=306527&view=findpost&p=2623779'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2010-06-18T07:24:28+00:00">18.06.10, 07:24</time></span><div class='quote '>Ошибка деления на 0 возникает только для целых типов.<br>
У вас же - Double. Там никаких ошибок быть не может т.к. результат деления на 0 - Inf </div></div><br>
С поправкой, что это относится только к константам, т.к. при явном делении в рантайме d:=c/0 ошибка EZeroDivide ес-но возникает (если ее специально не маскировать вызовом SetExceptionMask)]]></description>
        <author>leo</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2623779</guid>
        <pubDate>Fri, 18 Jun 2010 07:24:28 +0000</pubDate>
        <title>ДЕление на 0 в DELPHI 2007</title>
        <link>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2623779</link>
        <description><![CDATA[Chow: Гм, может я не прав, но при чем тут Делфи вообще?<br>Ошибка деления на 0 возникает только для целых типов.<br>У вас же - Double. Там никаких ошибок быть не может т.к. результат деления на 0 - Inf (специальное значение для форматов с плавающей запятой. Еще есть NaN).]]></description>
        <author>Chow</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2623692</guid>
        <pubDate>Fri, 18 Jun 2010 05:51:14 +0000</pubDate>
        <title>ДЕление на 0 в DELPHI 2007</title>
        <link>https://forum.sources.ru/index.php?showtopic=306527&amp;view=findpost&amp;p=2623692</link>
        <description><![CDATA[Marriage: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure TForm8.FormCreate(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">d:Double;</div><div class="code_line">begin</div><div class="code_line">&nbsp;d := 12/0;</div><div class="code_line">&nbsp;d:=d*2;</div><div class="code_line">&nbsp;Self.Tag := Trunc(D*2);//Ошибка вылетает только здесь, но по идее должна же вылетать на делении</div><div class="code_line">end;</div></ol></div></div></div></div><br>
В инете находил инфу только по констатации факта, что для того, чтобы было корректно и вылетала ошибка, шужно делать через переменную.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure TForm8.FormCreate(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">d,с:Double;</div><div class="code_line">begin</div><div class="code_line">&nbsp;с := 12;</div><div class="code_line">&nbsp;d := c/0;</div><div class="code_line">&nbsp;d:=d*2;</div><div class="code_line">&nbsp;Self.Tag := Trunc(D*2);//Ошибка вылетает только здесь, но по идее должна же вылетать на делении</div><div class="code_line">end;</div></ol></div></div></div></div><br>
Вот так ошибка уже не вылетает. ВОпрос. МОжно ли в настройках дельфи сделать так, чтобы ошибку выдавалобез переменной С сразу при делении 12 на 0?]]></description>
        <author>Marriage</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	