<?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=168196&amp;view=findpost&amp;p=1416942</guid>
        <pubDate>Wed, 17 Jan 2007 11:06:57 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416942</link>
        <description><![CDATA[Romtek: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=168196&view=findpost&p=1416682'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2007-01-17T11:52:52+03:00">17.01.07, 08:52</time></span><div class='quote '>А чего ты не воспользуешься MemAlloc для того случая, который привел?</div></div>Да вот, только сейчас дошло.  :ph34r:]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416938</guid>
        <pubDate>Wed, 17 Jan 2007 11:05:15 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416938</link>
        <description><![CDATA[volvo877: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=168196&view=findpost&p=1416839'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Romtek &#064; <time class="tag-quote__quoted-time" datetime="2007-01-17T10:14:48+00:00">17.01.07, 10:14</time></span><div class='quote '>компилятор сообщает о незнакомой SafetyPoolSize...<br>
</div></div>Само собой, эта переменная описана в секции Implementation модуля Memory...<br>
<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">constructor TMyObj.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;if LowMemory then fail</div><div class="code_line">&nbsp;&nbsp;else New(R);</div><div class="code_line">end;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TTutorApp.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;list := New(PCollection, Init(10, 5));</div><div class="code_line">&nbsp;&nbsp;LowMemSize := 1024;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Все остальное - без изменений от программы в сообщении №13...]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416839</guid>
        <pubDate>Wed, 17 Jan 2007 10:14:48 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416839</link>
        <description><![CDATA[Romtek: В таком случае стоит перекрыть constructor Init.  :) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-17T10:47:03+00:00">17.01.07, 10:47</time></span></span><br>
Чёрт. Никак не получается.<br>
Пробовал переопределить constructor TTutorApp.init:<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">constructor TTutorApp.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;InitMemory;</div><div class="code_line">&nbsp;&nbsp;HeapError := @HeapFunc;</div><div class="code_line">&nbsp;&nbsp;InitVideo;</div><div class="code_line">&nbsp;&nbsp;InitEvents;</div><div class="code_line">&nbsp;&nbsp;InitSysError;</div><div class="code_line">&nbsp;&nbsp;InitHistory;</div><div class="code_line">&nbsp;&nbsp;TProgram.Init;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;list := New(PCollection, Init(10, 5));</div><div class="code_line">end;</div></ol></div></div></div></div><br>
даёт тот же результат (что неудивительно).<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">constructor TTutorApp.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;HeapError := @HeapFunc;</div><div class="code_line">&nbsp;&nbsp;SafetyPoolSize := LowMemSize*16;</div><div class="code_line">&nbsp;&nbsp;LowMemory;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;InitVideo;</div><div class="code_line">&nbsp;&nbsp;InitEvents;</div><div class="code_line">&nbsp;&nbsp;InitSysError;</div><div class="code_line">&nbsp;&nbsp;InitHistory;</div><div class="code_line">&nbsp;&nbsp;TProgram.Init;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;list := New(PCollection, Init(10, 5));</div><div class="code_line">end;</div></ol></div></div></div></div><br>
компилятор сообщает о незнакомой SafetyPoolSize... <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-17T11:02:35+00:00">17.01.07, 11:02</time></span></span><br>
Кстати, когда зыпускаю не из IDE, a EXE, прога вообще зависает при 1-м способе. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-17T11:04:26+00:00">17.01.07, 11:04</time></span></span><br>
Ладно, оставлю экс<s class='tag-s'>кре</s>перименты и сделаю с помощью MemAlloc.  :)]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416830</guid>
        <pubDate>Wed, 17 Jan 2007 10:10:58 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416830</link>
        <description><![CDATA[volvo877: <strong class='tag-b'>Romtek</strong>, странно... У меня ничего на экран не добавляется, чистое сообщение, при вызове тестов в любом порядке, хотя перемешивать менеджеры куч, конечно, не очень хорошо...]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416819</guid>
        <pubDate>Wed, 17 Jan 2007 10:04:57 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416819</link>
        <description><![CDATA[Romtek: <strong class='tag-b'>volvo877</strong><br>
немного доработал оттачиваемый пример:<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">uses</div><div class="code_line">&nbsp;&nbsp;App, Memory, MsgBox, Objects, Menus, Drivers, Views;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;cmTest1 = 251;</div><div class="code_line">&nbsp;&nbsp;cmTest2 = 252;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;PRec = ^Rec;</div><div class="code_line">&nbsp;&nbsp;Rec = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;name: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;surname: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;data: array[1 .. 1000] of char;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;PMyObj = ^TMyObj;</div><div class="code_line">&nbsp;&nbsp;TMyObj = object(TObject)</div><div class="code_line">&nbsp;&nbsp; &nbsp;R: PRec;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor init;</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor create;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TMyObj.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;New(R);</div><div class="code_line">&nbsp;&nbsp;if R = nil then Fail;</div><div class="code_line">end;</div><div class="code_line">constructor TMyObj.create;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;R := MemAlloc(sizeof(Rec));</div><div class="code_line">&nbsp;&nbsp;if R = nil then Fail;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TTutorApp = object(TApplication)</div><div class="code_line">&nbsp;&nbsp; &nbsp;list: PCollection;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor init;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure InitStatusLine; virtual;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure HandleEvent(var Event: TEvent); virtual;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure OutOfMemory; virtual;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Test1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Test2;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">function HeapFunc (size: word): integer; far;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;HeapFunc := 1</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TTutorApp.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;list := New(PCollection, Init(10, 5));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.OutOfMemory;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;MessageBox(&#39;No enough memory to complete operation!&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;nil, mfError + mfOKButton);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.InitStatusLine;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;R: TRect;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;GetExtent(R);</div><div class="code_line">&nbsp;&nbsp;R.A.Y := R.B.Y - 1;</div><div class="code_line">&nbsp;&nbsp;New(StatusLine, Init(R,</div><div class="code_line">&nbsp;&nbsp; &nbsp;NewStatusDef(0, $EFFF,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewStatusKey(&#39;~F3~ Test #1&#39;, kbF3, cmTest1,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewStatusKey(&#39;~F4~ Test #2&#39;, kbF4, cmTest2,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewStatusKey(&#39;~Alt+F3~ Close&#39;, kbAltF3, cmClose,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdStatusKeys(nil)))),</div><div class="code_line">&nbsp;&nbsp; &nbsp;NewStatusDef($F000, $FFFF,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdStatusKeys(nil), nil))));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.HandleEvent(var Event: TEvent);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;R: TRect;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited HandleEvent(Event);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;if Event.What = evCommand then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;case Event.Command of</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmTest1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Test1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClearEvent(Event);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmTest2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Test2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClearEvent(Event);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.Test1;</div><div class="code_line">var i: integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ToBeAdded: PMyObj;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 1 to 10000 do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;ToBeAdded := new(PMyObj, init);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ToBeAdded = nil then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;OutOfMemory; break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;else list^.insert(ToBeAdded);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.Test2;</div><div class="code_line">var ToBeAdded: PMyObj;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;while true do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;ToBeAdded := new(PMyObj, create);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ToBeAdded = nil then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;OutOfMemory; break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;else list^.insert(ToBeAdded);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;TutorApp: TTutorApp;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;TutorApp.Init;</div><div class="code_line">&nbsp;&nbsp;HeapError := @HeapFunc; { &#60;== добавляем обработчик ПОСЛЕ инициализации менеджера памяти, переопределяя результат }</div><div class="code_line">&nbsp;&nbsp;TutorApp.Run;</div><div class="code_line">&nbsp;&nbsp;TutorApp.Done;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
Получаю и в первом случае сообщение о нехватке памяти, но на экране вот такая фигня:]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416682</guid>
        <pubDate>Wed, 17 Jan 2007 08:52:52 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416682</link>
        <description><![CDATA[volvo877: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=168196&view=findpost&p=1416296'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Romtek &#064; <time class="tag-quote__quoted-time" datetime="2007-01-16T22:41:51+00:00">16.01.07, 22:41</time></span><div class='quote '>Тут другой подход нужен.</div></div><br>
А чего ты не воспользуешься MemAlloc для того случая, который привел? Это как раз то, что нужно... Вот я тут набросал небольшую программку, Test #1 - это с <strong class='tag-b'>new</strong>, Test #2 - с <strong class='tag-b'>MemAlloc</strong>, посмотри...  :whistle: <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">uses</div><div class="code_line">&nbsp;&nbsp;App, Memory, MsgBox, Objects, Menus, Drivers, Views;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;cmTest1 = 251;</div><div class="code_line">&nbsp;&nbsp;cmTest2 = 252;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;PRec = ^Rec;</div><div class="code_line">&nbsp;&nbsp;Rec = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;name: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;surname: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;data: array[1 .. 1000] of char;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;PMyObj = ^TMyObj;</div><div class="code_line">&nbsp;&nbsp;TMyObj = object(TObject)</div><div class="code_line">&nbsp;&nbsp; &nbsp;R: PRec;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor init;</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor create;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TMyObj.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;New(R);</div><div class="code_line">end;</div><div class="code_line">constructor TMyObj.create;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;R := MemAlloc(sizeof(Rec));</div><div class="code_line">&nbsp;&nbsp;if R = nil then Fail;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TTutorApp = object(TApplication)</div><div class="code_line">&nbsp;&nbsp; &nbsp;list: PCollection;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor init;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure InitStatusLine; virtual;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure HandleEvent(var Event: TEvent); virtual;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure OutOfMemory; virtual;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Test1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Test2;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TTutorApp.init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited init;</div><div class="code_line">&nbsp;&nbsp;list := New(PCollection, Init(10, 5));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.OutOfMemory;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;MessageBox(&#39;Not enough memory to complete operation.&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;nil, mfError + mfOKButton);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.InitStatusLine;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;R: TRect;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;GetExtent(R);</div><div class="code_line">&nbsp;&nbsp;R.A.Y := R.B.Y - 1;</div><div class="code_line">&nbsp;&nbsp;New(StatusLine, Init(R,</div><div class="code_line">&nbsp;&nbsp; &nbsp;NewStatusDef(0, $EFFF,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewStatusKey(&#39;~F3~ Test #1&#39;, kbF3, cmTest1,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewStatusKey(&#39;~F4~ Test #2&#39;, kbF4, cmTest2,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewStatusKey(&#39;~Alt+F3~ Close&#39;, kbAltF3, cmClose,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdStatusKeys(nil)))),</div><div class="code_line">&nbsp;&nbsp; &nbsp;NewStatusDef($F000, $FFFF,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdStatusKeys(nil), nil))));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.HandleEvent(var Event: TEvent);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;R: TRect;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited HandleEvent(Event);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;if Event.What = evCommand then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;case Event.Command of</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmTest1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Test1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClearEvent(Event);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmTest2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Test2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClearEvent(Event);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.Test1;</div><div class="code_line">var i: integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 1 to 10000 do</div><div class="code_line">&nbsp;&nbsp; &nbsp;list^.insert(new(PMyObj, init));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TTutorApp.Test2;</div><div class="code_line">var ToBeAdded: PMyObj;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;while true do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;ToBeAdded := new(PMyObj, create);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ToBeAdded = nil then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;OutOfMemory; break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;else list^.insert(ToBeAdded);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;TutorApp: TTutorApp;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;TutorApp.Init;</div><div class="code_line">&nbsp;&nbsp;TutorApp.Run;</div><div class="code_line">&nbsp;&nbsp;TutorApp.Done;</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416296</guid>
        <pubDate>Tue, 16 Jan 2007 22:41:51 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416296</link>
        <description><![CDATA[Romtek: Также трудность проверки на наличие памяти ещё из-за неизвестного кол-ва считываемых записей.<br>
<br>
Размер = 107 байт. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:43:25+00:00">16.01.07, 22:43</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=168196&view=findpost&p=1416292'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2007-01-16T22:36:41+00:00">16.01.07, 22:36</time></span><div class='quote '>http://citforum.ru/programming/tv_doc/tvdoc_06.shtml</div></div><br>
Читал уже  ;) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:44:15+00:00">16.01.07, 22:44</time></span></span><br>
Пул надёжности работает с элементами TView, но не коллекциями. Тут другой подход нужен.]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416292</guid>
        <pubDate>Tue, 16 Jan 2007 22:36:41 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416292</link>
        <description><![CDATA[volvo877: http://citforum.ru/programming/tv_doc/tvdoc_06.shtml<br>
<br>
Прочти про &quot;пул надежности&quot;... <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:37:59+00:00">16.01.07, 22:37</time></span></span><br>
P.S. Размер у TransferRecord какой?]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416288</guid>
        <pubDate>Tue, 16 Jan 2007 22:28:19 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416288</link>
        <description><![CDATA[Romtek: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=168196&view=findpost&p=1416285'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2007-01-16T22:26:16+00:00">16.01.07, 22:26</time></span><div class='quote '>Кроме этого, можно вызовы GetMem заменить на MemAlloc</div></div>Я использую готовые коллекции из Objects.tpu, так что этот вариант отпадает. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:31:09+00:00">16.01.07, 22:31</time></span></span><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">function HeapNotify(Size: Word): Integer; far;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;if FreeCache then HeapNotify := 2 else</div><div class="code_line">&nbsp;&nbsp; &nbsp;if DisablePool then HeapNotify := 1 else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if FreeSafetyPool then HeapNotify := 2 else HeapNotify := 0;</div><div class="code_line">end;</div><div class="code_line">procedure InitMemory;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;HeapError := @HeapNotify;</div><div class="code_line">&nbsp;&nbsp;SafetyPoolSize := LowMemSize * 16;</div><div class="code_line">&nbsp;&nbsp;LowMemory;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
Это и есть менеджер памяти TV. Но я что-то неврубаюсь как мне это может помочь выдать сообщение о нехватке памяти. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:36:09+00:00">16.01.07, 22:36</time></span></span><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">constructor TCSVinfo.Init;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; Inherited Init;</div><div class="code_line">&nbsp;&nbsp; &nbsp; New (TransferRecord); { в некоторый момент выдаёт ошибку 203 }</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416285</guid>
        <pubDate>Tue, 16 Jan 2007 22:26:16 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416285</link>
        <description><![CDATA[volvo877: Кроме этого, можно вызовы GetMem заменить на MemAlloc, что опять же вернет тебе nil в случае невозможности выделения запрошенного блока памяти, и это можно будет обработать (фрагменты, выделенные через MemAlloc могут освобождаться обычным FreeMem)]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416279</guid>
        <pubDate>Tue, 16 Jan 2007 22:20:26 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416279</link>
        <description><![CDATA[Romtek: Использую многие модули TV.<br>
Для конструктора есть процедура Fail, но она мне не подходит.<br>
<br>
Мне нужно сделать так, чтобы при нахватке памяти я прерывал процесс считывания записей из файла в коллекцию и выдавал сообщение о нехватке памяти (MessageBox). <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:21:17+00:00">16.01.07, 22:21</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=168196&view=findpost&p=1416274'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2007-01-16T22:14:31+00:00">16.01.07, 22:14</time></span><div class='quote '>Тогда смотри хелп по InitMemory + LowMemory...</div></div>Ok...]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416274</guid>
        <pubDate>Tue, 16 Jan 2007 22:14:31 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416274</link>
        <description><![CDATA[volvo877: Какие модули используешь? Не TVision, часом? У него, по-моему, свой менеджер кучи... <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:20:05+00:00">16.01.07, 22:20</time></span></span><br>
Ага... Значит, все-таки, TV... Тогда смотри хелп по InitMemory + LowMemory... Я бы копал в этом направлении...]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416251</guid>
        <pubDate>Tue, 16 Jan 2007 21:53:49 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416251</link>
        <description><![CDATA[Romtek: Спасибо, уже сам нашёл. Ушёл экспериментировать.. :rolleyes: <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:07:15+00:00">16.01.07, 22:07</time></span></span><br>
Дело такое: когда я в основной программе, использующей разные модули, написал HeapError := @HeapFunc;<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">function HeapFunc(Size: word): Integer; far;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp; HeapFunc:=1;</div><div class="code_line">End;</div></ol></div></div></div></div><br>
ничего не изменилось. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T22:14:16+00:00">16.01.07, 22:14</time></span></span><br>
Испытываю программу в жёстких условиях, когда мало памяти (&lt; 60 KB) с интерфейсом Turbo Vision, Real Mode.]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416250</guid>
        <pubDate>Tue, 16 Jan 2007 21:51:43 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416250</link>
        <description><![CDATA[volvo877: Help по слову HeapError... Вот небольшая цитата оттуда:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> The HeapError function returns<br>
   &#9632; 0 to indicate failure, and causes a run-time error to occur immediately.<br>
   &#9632; 1 to indicate failure, and causes New or GetMem to return a nil pointer.<br>
   &#9632; 2 to indicate success, and causes a retry (which could also cause<br>
     another call to the heap error function).</div></div>]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416248</guid>
        <pubDate>Tue, 16 Jan 2007 21:50:38 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416248</link>
        <description><![CDATA[Romtek: Я такой не встречал никогда. Где можно об этом почитать?]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416244</guid>
        <pubDate>Tue, 16 Jan 2007 21:47:20 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416244</link>
        <description><![CDATA[volvo877: HeapFunc переопределить не пробовал?<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">{$F+}</div><div class="code_line">Function HeapFunc(Size: Word): Integer;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp;HeapFunc := 1;</div><div class="code_line">End;</div><div class="code_line">{$F-}</div></ol></div></div></div></div><br>
И подставить в монитор кучи... Теперь при запросе очередной порции памяти, если ее мало - не будет #203, а указатель будет равен nil-у... Можно попробовать что-то ненужное убрать и повторить запрос...]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416233</guid>
        <pubDate>Tue, 16 Jan 2007 21:36:12 +0000</pubDate>
        <title>ошибка 203 (переполнение кучи)</title>
        <link>https://forum.sources.ru/index.php?showtopic=168196&amp;view=findpost&amp;p=1416233</link>
        <description><![CDATA[Romtek: Как избавиться (предотвратить) от ошибки<strong class='tag-b'> 203 </strong>(переполнение кучи) при вызове <em class='tag-i'>GetMem</em> ?<br>
<br>
Программа работает с коллекциями (TCollection) и требует немало памяти, поэтому её в некоторый момент просто нехватает.<br>
<br>
Нужен механизм предотвращения вылетания программы с ошибкой 203, чтобы я мог перехватить и что-то предпринять. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T21:42:29+00:00">16.01.07, 21:42</time></span></span><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Справка</span><div class='quote '>If there is not enough free space in the heap to allocate the new variable,<br>
a run-time error occurs.</div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-01-16T21:44:28+00:00">16.01.07, 21:44</time></span></span><br>
Кроме как каждый раз вызывать MaxAvail переда запросом памяти пока не вижу выхода.]]></description>
        <author>Romtek</author>
        <category>Pascal</category>
      </item>
	
      </channel>
      </rss>
	