<?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=142049&amp;view=findpost&amp;p=3518428</guid>
        <pubDate>Thu, 28 Aug 2014 08:07:44 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3518428</link>
        <description><![CDATA[jack128: Хотя нет, напрямую прям дин массив нельзя использовать. Нужно просто IValueData не через наследование от TINtefacedObject реализовывать, а напрямую VMT интерфейса задавать, как они в System.Generics.Defaults компараторы реализовывали. Одно выделение дин памяти для любого managed типа необходимо.]]></description>
        <author>jack128</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3517557</guid>
        <pubDate>Tue, 26 Aug 2014 12:21:46 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3517557</link>
        <description><![CDATA[jack128: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3517499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-08-26T10:08:03+00:00">26.08.14, 10:08</time></span><div class='quote '>Или 8. Абракадабра ж осилила x64?</div></div><br>
ну да. SizeOf(Pointer).<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3517499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-08-26T10:08:03+00:00">26.08.14, 10:08</time></span><div class='quote '>Т.е. указатель на структуру.</div></div><br>
указатель на структуру указателем быть не перестает.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3517499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-08-26T10:08:03+00:00">26.08.14, 10:08</time></span><div class='quote '>Как минимум TValue должен хранить идентификатор типа, допустим он int32</div></div><br>
SizeOf(Pointer)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3517499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-08-26T10:08:03+00:00">26.08.14, 10:08</time></span><div class='quote '>возможно под указатель просто единообразно выделяется 8 байт независимо от платформы.</div></div><br>
Нет.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3517499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-08-26T10:08:03+00:00">26.08.14, 10:08</time></span><div class='quote '>Т.о. получаем 12 байт на указатель + id типа.</div></div><br>
нет, нет. Вообще в этом TValue small buffer optimization даже кой какая есть. Но она не работает для managed типов(для строк в частности).<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3517499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-08-26T10:08:03+00:00">26.08.14, 10:08</time></span><div class='quote '>Но это лишь гипотеза.</div></div><br>
абсолютно неверна.<br>
<br>
-----<br>
<br>
Вообще вот что они сделали, и как оно должно было быть сделано:<br>
<br>
1) Понятно что для каких то типов нам по любому понадобится дин память. При этом хочется чтобы пользователю при работе с эти TValue не пришлось эту память освобождать ручками. Значит нам нужно поле интерфейсного типа. <br>
2) Хоцца small buffer optimization. Чтоб всякие инты не требовали дин память. Желание похвальное.<br>
3) Должно поддерживаться хранение managed типов (строк, интерфейсов, дин массивов и тд. Все типы, память за которыми компилятор убивает).<br>
<br>
OK, ребята сделали так (код схематичный и сильно упрощен) :<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">TValue = record</div><div class="code_line">private</div><div class="code_line">&nbsp;&nbsp;FTypeInfo: PTypeInfo; // &quot;id&quot; типа, как ты выразился. </div><div class="code_line">&nbsp;&nbsp;FValueData: IValueData; // тут сидят данные, которые только в дин память влазят</div><div class="code_line">&nbsp;&nbsp;FSmallBuff: array[0..12] of byte; </div><div class="code_line">public</div><div class="code_line">&nbsp;&nbsp; ...</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Ну вроде все нормально, как и должно быть. Но реализация - это швах.<br>
1) SBO не работает для managed типов. Варианты, строки, интерфейсы и даже рекорды без managed полей - все в пролете.  С чего такое ограничение - непонятно. <br>
2) IValueData наделен лишней функциональностью, которая требует PTypeInfo. В результате хранятся две копии этого поля: первая в самом TValue, вторая в реализации IValueData. Хотя по идее это должен быть тупо кусок дин памяти, который освобождается при обнулении счетчика ссылок.<br>
3) Вообще реализация IValueData. <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">type</div><div class="code_line">&nbsp;&nbsp;TValueDataImpl = class(TInterfacedObject, IValueData)</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;FTypeInfo: PTypeInfo;</div><div class="code_line">&nbsp;&nbsp; &nbsp;FData: TArray&#60;Byte&#62;; // тут хранятся дин данные. </div><div class="code_line">&nbsp;&nbsp;public</div></ol></div></div></div></div><br>
<br>
FData - это дин. массив. Он сидит в дин памяти. TValueDataImpl - тоже в дин памяти. Зачем нужно два выделения памяти??<br>
Наследование от TInterfacedObject: вообще не нужно. Объекты в дельфи держат 2 указателя(один под VMT, второй под монитор, который вообще нафиг никому не сдался). + каждая реализация интерфейса добавляет еще по SizeOf(Pointer) на инстанс объекта. Зачем все это в данном случае ??<br>
<br>
Нужно то всего лишь заменить IValueData на самый обычный динамический массив. Который там и так содержит счетчик ссылок, сам освобождается когда надо.<br>
<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">TValue2 = record</div><div class="code_line">private</div><div class="code_line">&nbsp;&nbsp;FTypeInfo: PTypeInfo; // &quot;id&quot; типа, как ты выразился. </div><div class="code_line">&nbsp;&nbsp;FHeapData: TArray&#60;byte&#62;; // тут сидят данные, которые только в дин память влазят</div><div class="code_line">&nbsp;&nbsp;FSmallBuff: array[0..12] of byte; </div><div class="code_line">public</div><div class="code_line">&nbsp;&nbsp; ...</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>jack128</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3517499</guid>
        <pubDate>Tue, 26 Aug 2014 10:08:03 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3517499</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3517488'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>jack128 &#064; <time class="tag-quote__quoted-time" datetime="2014-08-26T09:32:34+00:00">26.08.14, 09:32</time></span><div class='quote '>(в дельфе это указатель, 4 байта)</div></div><br>
Или 8. Абракадабра ж осилила x64?<br>
<br>
Кроме того, я так понимаю, что строки в делфи все-же посложней (они разве длину не таскают с собой)? Т.е. указатель на структуру.<br>
Как минимум TValue должен хранить идентификатор типа, допустим он int32, возможно под указатель просто единообразно выделяется 8 байт независимо от платформы. Т.о. получаем 12 байт на указатель + id типа.<br>
<br>
Вторые 28 байт возможно сами данные типа string. Именно значения, хранящего размер строки, возможно еще какую-то служебную информацию (ведь под string&#39;ом может скрываться и AnsiString, и WideString вроде) + указатель уже на сам массив байтов строки.<br>
<br>
Но это лишь гипотеза.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3517488</guid>
        <pubDate>Tue, 26 Aug 2014 09:32:34 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3517488</link>
        <description><![CDATA[jack128: Блин. Есть в дельфе такой тип TValue. Что то типа boost::any, тип позволяющий хранить в себе значения любого типа.<br>Так вот, для того что сохранить строчку (в дельфе это указатель, 4 байта) этот тип выделяет 2 блока  дин памяти, один в 28 байт, другой в 12. Вот скажите, это нормально???]]></description>
        <author>jack128</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3505667</guid>
        <pubDate>Sun, 27 Jul 2014 09:15:30 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3505667</link>
        <description><![CDATA[trainer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501848'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:32:27+00:00">16.07.14, 15:32</time></span><div class='quote '>Имелось в виду: какой язык? </div></div>Васик. Но сами сервера COM первоначально написаны преимущественно на C.]]></description>
        <author>trainer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3502005</guid>
        <pubDate>Thu, 17 Jul 2014 09:16:09 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3502005</link>
        <description><![CDATA[Qraizer: Т.е. передача параметром. А присваивание? Или метод есть для этого?<br>
<strong class='tag-b'>D_KEY</strong>, как думаешь, в ссылочной семантике ещё что-нибудь нужно? Вот к примеру в массив если такие положить.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501873</guid>
        <pubDate>Wed, 16 Jul 2014 17:47:46 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501873</link>
        <description><![CDATA[jack128: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501862'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:54:11+00:00">16.07.14, 16:54</time></span><div class='quote '>jack128, получается .Value. -- это аналог -&gt;, да?</div></div><br>
да.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501862'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:54:11+00:00">16.07.14, 16:54</time></span><div class='quote '>А счётчики по каким правилам будут меняться? В смысле, что их меняет?</div></div><br>
там внутри сидит интерфейс. Его реализация и считает ссылки.]]></description>
        <author>jack128</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501870</guid>
        <pubDate>Wed, 16 Jul 2014 17:14:19 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501870</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501856'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>jack128 &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:31:31+00:00">16.07.14, 16:31</time></span><div class='quote '>Не, в дельфе вполне можно реализовать подсчет ссылок внешним по отношению в объекту способом. Будет не так удобно, как shared_ptr (в первую очередь из-за невозможности переопределить оператор вызова метода), но жить можно.</div></div><br>
Это, понятное дело что можно. Другое дело, что нельзя отвязаться от существующего.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501857'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:35:14+00:00">16.07.14, 16:35</time></span><div class='quote '>ну вот microsoft не постеснялась &quot;подменить понятия&quot;</div></div><br>
А они редко этого стесняются. Это показатель? Впрочем у MS так весьма существенная доля рынка, &quot;можно&quot; выпендриваться. У Эмбаркадеро ничтожная доля рынка, им нужно ее завоевывать.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501857'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:35:14+00:00">16.07.14, 16:35</time></span><div class='quote '>как ты правильно заметил в С++ интерфейсов нет, по крайней мере в языке это не зафиксировано</div></div><br>
А C++ нынче единственный язык? Да и на момент создания COM уже был Objective-C и NextStep с его PDO, с которого этот самый COM частично слизали. И, угадай, как реализованы интерфейс и подсчет ссылок в Objective-C?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501857'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:35:14+00:00">16.07.14, 16:35</time></span><div class='quote '>а ещё это что-то используют в качестве namespace/modules, нас должно смущать наличие у нас unit&#39;ов?</div></div><br>
Как бы модули (и интерфейсы модулей) есть много где, тут у делфи никакой уникальности.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501857'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:35:14+00:00">16.07.14, 16:35</time></span><div class='quote '>я не по этому примеру, а вообще(он просто в качестве иллюстрации) <br>
на момент использования ссылки переменная может уже не существовать, в отличие от объекта</div></div><br>
И к чему это? Ссылка (грубо) ссылается на некоторое место в памяти (объект), какое ей дело до переменной? Ей важно, чтобы это место было доступно (объект существовал). В чем проблема-то?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501858'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:43:22+00:00">16.07.14, 16:43</time></span><div class='quote '>Короче, korvin, я поясняю.</div></div><br>
Не, я понял как оно работает и почему. Мне непонятно собственно зачем оно так сделано и как с этим нормально жить. Скажем, почему нельзя было IInterface оставить совсем пустым, а для COM сделать что-то отдельное, ну там директиву какую-нибудь, их и так полно в Делфи, одной меньше, одной больше или хотя бы тот самый пресловутый IUnknown, который предоставляет нужные методы? Один хрен в компиляторе специальная магия для интерфейсов, думаю ограничить ее сверху конкретным интерфейсом было бы не сложно.<br>
<br>
Но видимо ты прав, похоже этот вопрос <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501858'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:43:22+00:00">16.07.14, 16:43</time></span><div class='quote '> можно повторять и повторять многократно</div></div>.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501862</guid>
        <pubDate>Wed, 16 Jul 2014 16:54:11 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501862</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501860'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:46:31+00:00">16.07.14, 16:46</time></span><div class='quote '>Они ничем не отличались бы от абстрактных классов.</div></div>Не совсем. Интерфейсы аналогичны частному виду абстрактных классов (только чистые методы + только без атрибутов класса) и частному же варианту их использования (только виртуальное наследование &quot;интерфейсов&quot;). Короче если, возможности абстрактных классов включают возможности интерфейсов, но первые шире вторых. Потому интерфейсов как отдельных сущностей не требуется. При этом справедливости ради следует заметить, что абстрактные классы тоже надо уметь правильно готовить, чтобы получить интерфейсы, иначе неподготовленный программер получит на выходе такую же кашу, как получил <strong class='tag-b'>korvin</strong> с TInterfacedObject. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T16:58:38+00:00">16.07.14, 16:58</time></span></span><br>
<strong class='tag-b'>jack128</strong>, получается .Value. -- это аналог -&gt;, да? А счётчики по каким правилам будут меняться? В смысле, что их меняет?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501860</guid>
        <pubDate>Wed, 16 Jul 2014 16:46:31 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501860</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>Shaggy</strong>, в C++ есть множественное наследование, поэтому чистые интерфейсы, как сущность языка, не требуются. Они ничем не отличались бы от абстрактных классов. Но я так и не понял, при чем тут подсчет ссылок? Зачем его пихать в интерфейсы, да ещё и криво?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501858</guid>
        <pubDate>Wed, 16 Jul 2014 16:43:22 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501858</link>
        <description><![CDATA[Qraizer: Короче, <strong class='tag-b'>korvin</strong>, я поясняю. Подсчёт ссылок введён для интерфейсов и только для них. Это всего лишь средство автоматизировать COM-овские необъектные IUnknown::AddRef()/IUnknown::Release(). Необъектные потому, что COM - это объектная технология для любых, включая необъектные, ЯП, реализованная в ОС и ею же предоставляемая посредством API. Это &quot;всего лишь средство автоматизации&quot; не предназначалось больше ни для чего и не должно использоваться больше ни для чего. Ежели у тебя иная архитектурная конструкция классов, особенно если смешанная на интерфейсах/делегатах, будь добр сам её и пиши. Прикол же в том, что никогда не работать с объектами вообще OR никогда не юзать интерфейсы - а только так можно дружить с ними обоими, т.е. попеременно - на практике получается нечасто. Вопрос &quot;на кой хрен было вводить такую фичу, которая решает половину проблем и параллельно создаёт столько же новых на стыке технологий&quot; можно повторять и повторять многократно. Если б в Плюсы вносили всё, что в своё время предлагалось, он бы и 98-го года не пережил.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501857</guid>
        <pubDate>Wed, 16 Jul 2014 16:35:14 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501857</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501849'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:41:34+00:00">16.07.14, 15:41</time></span><div class='quote '>++? Еще раз: и? Как COM-интерфейсы связаны с ЯП-интерфейсами, которые существовали еще до COM, и в том же C++ ими назывались классы, имеющие только абстрактные методы (т.к. отдельное ключевое слово вводить не стали)? </div></div><br>
ну вот microsoft не постеснялась &quot;подменить понятия&quot;(они конечно не язык изменили, а библиотеку написали, но всё-таки..), и?<br>
и как можно подменить то, чего не существует? как ты правильно заметил в С++ интерфейсов нет, по крайней мере в языке это не зафиксировано<br>
что-то используют в качестве интерфейсов и всё.<br>
а ещё это что-то используют в качестве namespace/modules, нас должно смущать наличие у нас unit&#39;ов? или скорее наоборот С++ники должны смущаться от подмены понятий? <br>
<br>
и почему они обязательно должны быть с чем-то связаны? просто выбран показавшийся удачным механизм<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501795'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:38:18+00:00">16.07.14, 13:38</time></span><div class='quote '>Кстати говоря, ты можешь убрать вызов SetLink и посмотреть, что будет.</div></div><br>
я не по этому примеру, а вообще(он просто в качестве иллюстрации) <br>
на момент использования ссылки переменная может уже не существовать, в отличие от объекта]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501856</guid>
        <pubDate>Wed, 16 Jul 2014 16:31:31 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501856</link>
        <description><![CDATA[jack128: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501852'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T16:06:38+00:00">16.07.14, 16:06</time></span><div class='quote '>И про это и про привязку механизма подсчета ссылок к интерфейсам. Т.е. если я захочу использовать подсчет ссылок для объектов своего класса, мне придется 1) реализовать IInterface и либо изменить все места в коде, где ранее использовался класс (а это может быть невозможно, привет Sender: TObject), либо реализовать _AddRef/_Release таким образом, чтобы они не удаляли объект.</div></div><br>
<br>
Не, в дельфе вполне можно реализовать подсчет ссылок внешним по отношению в объекту способом. Будет не так удобно, как shared_ptr (в первую очередь из-за невозможности переопределить оператор вызова метода), но жить можно.<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">var</div><div class="code_line">&nbsp;&nbsp;MyObj: TSharedPtr&#60;TMyObject&#62;;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;MyObject := TSharedPtr.Create(TMyObject.Create(Args));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Call(MyObj.Value) ; // Value - свойство для получения сырого объекта</div><div class="code_line">&nbsp;&nbsp;MyObj.Value.MyMethod();</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">end; // счетчик ссылок обнуляется, объект уничтожается</div></ol></div></div></div></div>]]></description>
        <author>jack128</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501855</guid>
        <pubDate>Wed, 16 Jul 2014 16:27:22 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501855</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501839'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:11:26+00:00">16.07.14, 15:11</time></span><div class='quote '>Отчасти так и есть. Legacy-софт, legacy-DBFки, тоже еще одно порождение воспаленного мозга.</div></div>О, господи. Я тебе сочувствую. Сталкивался.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501841'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:23:52+00:00">16.07.14, 15:23</time></span><div class='quote '>намеренное коверканье названия компании-производителя, вероятно, является признаком деловитости<br>
как и цель этого действа</div></div>Это является признаком моего к ней отношения. Это короче, чем сыпать прилагательными. И вежливее заодно. В этом и цель. Заметь, к Борланд у меня всегда были тёплые чувства и таковыми они и остались.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501841'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:23:52+00:00">16.07.14, 15:23</time></span><div class='quote '>какая фабрика? по какому интерфейсу? что за ересь?<br>
...</div></div>Вот мы и пришли к консенсусу. Не конкретно мы с тобой, а все мы с конкретно Дельфями. Вот так вот многословно ты рассказал всё то, что до тебя рассказывали мы, разные, покороче и в разных постах. Значит мы всё правильно поняли. Вопрос &quot;а нафик такая фича нужна, если её долго понимать, в ней легко запутаться, она конфликтует с другими предоставляемыми родными же механизмами Дельфей, если это всё легко делается гораздо проще, удобнее, безопаснее и с тем же профитом&quot; остался без ответа, отличного от &quot;у нас таков устав&quot;.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501852</guid>
        <pubDate>Wed, 16 Jul 2014 16:06:38 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501852</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501851'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:48:54+00:00">16.07.14, 15:48</time></span><div class='quote '>объект может узнать количество сслылок(если реализован подсчёт) и всё</div></div><br>
При этом он ничего не знает про объектные ссылки на самого себя, т.к. сам себе реализует подсчет, а компилятор вызывает _AddRef/_Release только для интерфейсных ссылок.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501851'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:48:54+00:00">16.07.14, 15:48</time></span><div class='quote '>ты про обязательную реализацию IInterface?</div></div><br>
И про это и про привязку механизма подсчета ссылок к интерфейсам. Т.е. если я захочу использовать подсчет ссылок для объектов своего класса, мне придется 1) реализовать IInterface и либо изменить все места в коде, где ранее использовался класс (а это может быть невозможно, привет Sender: TObject), либо реализовать _AddRef/_Release таким образом, чтобы они не удаляли объект.<br>
<br>
В итоге я оказываюсь перед выбором: наткнуться на грабли, которые могут возникнуть черти где или забить на ARC. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T16:10:51+00:00">16.07.14, 16:10</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501851'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:48:54+00:00">16.07.14, 15:48</time></span><div class='quote '>так и у нас также</div></div><br>
И нет, не также. Я же говорю: в плюсах я не наследую от shared_ptr и даже не реализую его методы и уж точно мне не придется их реализовывать пустыми, чтобы он не удалил какие-то другие ссылки, я просто не буду его использовать. При этом у меня остаются и используются и классы, и интерфейсы. Захотел подсчет ссылок --- добавил shared_ptr где надо, не захотел --- не добавил. При этом иерархия моих классов/интерфейсов остается нетронутой.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501851</guid>
        <pubDate>Wed, 16 Jul 2014 15:48:54 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501851</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501839'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:11:26+00:00">16.07.14, 15:11</time></span><div class='quote '> тут непонятного? Ссылка на объект в тех же плюсах, хоть сырая (сырой указатель), хоть умная --- это отдельный от основного объект. </div></div><br>
так и у нас также<br>
объект может узнать количество сслылок(если реализован подсчёт) и всё<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501839'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:11:26+00:00">16.07.14, 15:11</time></span><div class='quote '>Ты не наследуешься от shared_ptr или любого другого *_ptr, а строишь свою иерархию как тебе удобно, хоть с интерфейсами, хоть без. А уже потом, когда дело доходит до создания, управления временем жизни объекта и использования, ты сам выбираешь где и как тебе поступить. Явным образом.</div></div><br>
если ты про объекты, то интерфейс может быть реализован на любом уровне иерархии<br>
привязки к TInterfacedObject нет(это просто готовая заготовка)<br>
<br>
или ты про обязательную реализацию IInterface?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501849</guid>
        <pubDate>Wed, 16 Jul 2014 15:41:34 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501849</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501848'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:32:27+00:00">16.07.14, 15:32</time></span><div class='quote '> фреймворк был аналогом интерфейсной ссылки, а действие в обход аналог объектной</div></div><br>
Аналогии такие аналогии. Тогда тоже пишу конкретно: ни в одном нормальном фреймворке действие в обход него не приводит ни к каким граблям. А кривые фреймворки так и называют кривыми без выдавания граблей за фичи.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501848'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:32:27+00:00">16.07.14, 15:32</time></span><div class='quote '>какой язык?</div></div><br>
C++? Еще раз: и? Как COM-интерфейсы связаны с ЯП-интерфейсами, которые существовали еще до COM, и в том же C++ ими назывались классы, имеющие только абстрактные методы (т.к. отдельное ключевое слово вводить не стали)?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501848</guid>
        <pubDate>Wed, 16 Jul 2014 15:32:27 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501848</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501839'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:11:26+00:00">16.07.14, 15:11</time></span><div class='quote '>Здрасте, приехали. Вот так сюрприз. Значит зря в той же SICP рассказывается об абстракциях? Значит зря мы используем объектно-ориентированный, обобщенный и другие подходы к программированию? Да и вообще зря программируем, ведь это ничто иное как абстрагирование деталей реального мира в компьютерную модель.</div></div><br>
ну всё, тушите свет :lol: <br>
ты подтвердил высказывание<br>
<br>
пишу конкретно( :) ): фреймворк был аналогом интерфейсной ссылки, а действие в обход аналог объектной<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501839'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T15:11:26+00:00">16.07.14, 15:11</time></span><div class='quote '>Майкрософт? И?</div></div><br>
Имелось в виду: какой язык?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501842</guid>
        <pubDate>Wed, 16 Jul 2014 15:24:23 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501842</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>для чистоты эксперимента замени writeln на OutputDebugString и смотри окно Event Log</div></div><br>
Заменил, посмотрел. Что с указателем, что без, поведение одинаковое.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501841</guid>
        <pubDate>Wed, 16 Jul 2014 15:23:52 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501841</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501802'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:54:48+00:00">16.07.14, 13:54</time></span><div class='quote '>временные объекты живут до конца statement.</div></div><br>
вот. этого я незнал. спасибо<br>
в delphi это не так(я про интерфейсы естественно)<br>
объект будет жить до конца ов<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:49:50+00:00">16.07.14, 13:49</time></span><div class='quote '>Троль не может нравится по определению.</div></div><br>
спасибо доктор<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:49:50+00:00">16.07.14, 13:49</time></span><div class='quote '>Тон у меня деловой, резкий, но не оскорбительный</div></div><br>
намеренное коверканье названия компании-производителя, вероятно, является признаком деловитости<br>
как и цель этого действа<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:49:50+00:00">16.07.14, 13:49</time></span><div class='quote '>Так что у нас разное представление определения &quot;как взрослые люди&quot;.</div></div><br>
очевидно<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:49:50+00:00">16.07.14, 13:49</time></span><div class='quote '>От же ж. Порог не определяется количественно, он определяется прилагательными</div></div><br>
т.е. объективно не измеряется, а следовательно ценность ответа стремится к 0<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:49:50+00:00">16.07.14, 13:49</time></span><div class='quote '>Мне вот интересно, ну создала фабрика мне объект по интерфейсу на него, счётчик 0, тут бац&#33; эксепшн. Никакого перехода 1→0 в принципе никогда не состоится. И как теперь? Но это ещё мелочи. Что говорят архитекторы самой COM не интересно почитать? </div></div><br>
вот об этом я и говорил, пишешь о том чего не понимаешь<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:49:50+00:00">16.07.14, 13:49</time></span><div class='quote '>Мне вот интересно, ну создала фабрика мне объект по интерфейсу на него, счётчик 0, тут бац&#33; эксепшн. Никакого перехода 1→0 в принципе никогда не состоится. И как теперь?</div></div><br>
какая фабрика? по какому интерфейсу? что за ересь?<br>
объект создаёт конструктор. всегда&#33;<br>
и не важно, реализует объект какие-либо интерфейсы или нет, есть у него счётчик или нет<br>
пока это просто объект с ручным управлением временем жизни и работать с ним можно как с обычным объектом delphi, а в конце удалить, ручками<br>
если эксепшн в конструкторе, вызовется деструктор<br>
если после, то <em class='tag-i'>может</em> быть утечка, если исключение не обработать<br>
если объект реализует интерфейсы, у него есть служебные методы<br>
если собирается вести подсчёт ссылок у него есть поле под счётчик =0(после того, как отработает конструктор), а служебные методы соответсвенно изменяют этот счётчик в ту или иную сторону<br>
можно подёргать эти методы ручками(они в public), ни к какому автоматизму это не приведёт<br>
и объекту насрать, есть переход 1-&gt;0 или нет<br>
(это нормальное поведение, так и задумано&#33;)<br>
<br>
автоматизм начинается, когда мы запрашиваем у объекта интерфейс<br>
появляется интерфейстная ссылка, а следовательно компилятор автоматически вызывает _addref, который в свою очередь увеличивает счётчик(но может делать что угодно, что напишете то и будет)<br>
после этого про объектные ссылки нужно забыть и работать только через интерфейс(ниже дополнено) <br>
т.е. по сути весь автоматизм заключается только в этом:<br>
присваивание, передача параметром(при выходе из подпрограммы _release) - вызов _addref<br>
присваивание nil, выход за ов - _release<br>
т.е. не компилятор вызывает деструктор и следит за счётчиком, а в этих методах это реализовано(повторюсь, стандартная реализация, вы можете написать любую другую)<br>
<br>
если подсчёт ссылок не реализован - &gt; объект не будет удалён автоматически -&gt; можно использовать разные ссылки<br>
если реализован и вы пользуетесь объектной ссылкой при наличии интерфейсной - вы ходите по полю с граблями(надеюсь не надо пояснять почему?) <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:49:50+00:00">16.07.14, 13:49</time></span><div class='quote '>Но это ещё мелочи. Что говорят архитекторы самой COM не интересно почитать? </div></div><br>
читал<br>
а ты? и понял? или нужны пояснения?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501839</guid>
        <pubDate>Wed, 16 Jul 2014 15:11:26 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501839</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501798'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:48:24+00:00">16.07.14, 13:48</time></span><div class='quote '>да вроде ничего криминального.</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">auto v = 1;</div><div class="code_line">auto r = &v;</div></ol></div></div></div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>???</div></div><br>
Что тут непонятного? Ссылка на объект в тех же плюсах, хоть сырая (сырой указатель), хоть умная --- это <em class='tag-i'>отдельный</em> от основного объект. Ты не наследуешься от shared_ptr или любого другого *_ptr, а строишь свою иерархию как тебе удобно, хоть с интерфейсами, хоть без. А уже потом, когда дело доходит до создания, управления временем жизни объекта и использования, ты сам выбираешь где и как тебе поступить. Явным образом.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>что может нарушить</div></div><br>
Да, таких фреймворков стоит избегать.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>слишком конкретное мышление - болезнь программистов</div></div><br>
Здрасте, приехали. Вот так сюрприз. Значит зря в той же SICP рассказывается об абстракциях? Значит зря мы используем объектно-ориентированный, обобщенный и другие подходы к программированию? Да и вообще зря программируем, ведь это ничто иное как абстрагирование деталей реального мира в компьютерную модель.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>да, конкуренция. не используй, победи в конкурентной борьбе</div></div><br>
Так практически никто и не использует, кроме ситуаций, указанных чуть ниже.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>такое впечаетление, что тебя заставляют писать на delphi</div></div><br>
Отчасти так и есть. Legacy-софт, legacy-DBFки, тоже еще одно порождение воспаленного мозга.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>пример был взят с СОМ, чъё он порождение?</div></div><br>
Майкрософт? И?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T14:08:49+00:00">16.07.14, 14:08</time></span><div class='quote '>ну и в качестве бонуса - хоть какой-то, но стандарт</div></div><br>
Стандарт чего и где? Как это все связано с ЯП?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501813</guid>
        <pubDate>Wed, 16 Jul 2014 14:08:49 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501813</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501783'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:18:12+00:00">16.07.14, 13:18</time></span><div class='quote '>Может, только обычно они являются внешними по отношению к объекту и его типу, а не встроены каким-либо образом в него. Мухи отдельно, котлеты отдельно.</div></div><br>
???<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501783'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:18:12+00:00">16.07.14, 13:18</time></span><div class='quote '>Я бы еще понял, если бы ты привел пример, когда ручной доступ к БД параллельно с фреймворком, скажем, нарушает целостность данных в БД.</div></div><br>
достаточно того, что <em class='tag-i'>может</em> нарушить<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501783'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:18:12+00:00">16.07.14, 13:18</time></span><div class='quote '>Я и не использую фреймворки.</div></div><br>
слишком конкретное мышление - болезнь программистов и юристов да  :) <br>
это была аналогия<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501783'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:18:12+00:00">16.07.14, 13:18</time></span><div class='quote '>Да и самому монастырю следовало бы понять, что он таки не один на Земле и далеко не ее пуп. Конкуренция, да.</div></div><br>
да, конкуренция. не используй, победи в конкурентной борьбе :) <br>
такое впечаетление, что тебя заставляют писать на delphi. из-за него от тебя девушка ушла и вообще, жизнь под откос покатилась :) <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501783'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:18:12+00:00">16.07.14, 13:18</time></span><div class='quote '>Большинство языков не подменяют чужие понятия своими.</div></div><br>
пример был взят с СОМ, чъё он порождение? ну и в качестве бонуса - хоть какой-то, но стандарт<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501795'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:38:18+00:00">16.07.14, 13:38</time></span><div class='quote '>Как будто со слабыми ссылками будет по-другому... </div></div><br>
код будет чище, без @ и ^<br>
а так да<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501795'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:38:18+00:00">16.07.14, 13:38</time></span><div class='quote '>Кстати говоря, ты можешь убрать вызов SetLink и посмотреть, что будет. </div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501795'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:38:18+00:00">16.07.14, 13:38</time></span><div class='quote '>Т.е. указатель тут как бы совсем не причем</div></div><br>
для чистоты эксперимента замени writeln на OutputDebugString и смотри окно Event Log]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501804</guid>
        <pubDate>Wed, 16 Jul 2014 13:58:02 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501804</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501790'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:32:14+00:00">16.07.14, 13:32</time></span><div class='quote '>а с чего вдруг он умирает? за ов он ещё не вышел...</div></div>Он временный. Безымянный. Время жизни таковых простирается (грубо говоря) до ближайшей ;.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501790'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:32:14+00:00">16.07.14, 13:32</time></span><div class='quote '>зачем нужна ещё одна прокладка(make_shared)? конструктора shared_ptr недостаточно?</div></div>Достаточно. Просто так удобнее. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T13:58:53+00:00">16.07.14, 13:58</time></span></span><br>
А, ну вот <strong class='tag-b'>MyNameIsIgor</strong> решил описать не грубо говоря.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501802</guid>
        <pubDate>Wed, 16 Jul 2014 13:54:48 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501802</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501790'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:32:14+00:00">16.07.14, 13:32</time></span><div class='quote '>ээ... а с чего вдруг он умирает? за ов он ещё не вышел...</div></div><br>
&quot;ов&quot; - это область видимости? Она тут ни при чём (точнее, при чём, но распространяется на объект x), временные объекты живут до конца statement.<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">auto x = make_shared&#60;int&#62;(42);</div></ol></div></div></div></div><br>
Для пример, есть у нас функция, возвращающая экземпляр некоего типа T<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">T foo() { return T(); }</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">foo();</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">T t = foo();</div></ol></div></div></div></div><br>
то возвращённый объект будет использован при создании объекта t, а потом так же умрёт.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501790'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:32:14+00:00">16.07.14, 13:32</time></span><div class='quote '>и ещё(просто интересно), зачем нужна ещё одна прокладка(make_shared)? конструктора shared_ptr недостаточно?</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">shared_ptr&#60;MyType&#62; p(new MyType(arg1, arg2, arg3));</div><div class="code_line">auto p = make_shared&#60;MyType&#62;(arg1, arg2, arg3);</div></ol></div></div></div></div><br>
Во-вторых, делает более лаконичными некоторые случаи при обеспечении безопасности относительно исключений.<br>
В-третьих, это небольшая оптимизация - память под счётчик и объект выделяется одним куском.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501799</guid>
        <pubDate>Wed, 16 Jul 2014 13:49:50 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501799</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '><strong class='tag-b'>Qraizer</strong>, тебе я вижу, не понравилось? так может оставишь этот снисходительный, менторский тон и поговорим нормально, как взрослые люди?</div></div>Троль не может нравится по определению. Тон у меня деловой, резкий, но не оскорбительный. Так что у нас разное представление определения &quot;как взрослые люди&quot;.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501603'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:23:34+00:00">16.07.14, 03:23</time></span><div class='quote '> На предмет порога вхождения в Дельфи ответ будет?</div></div><br>
а какого ответа ты ждёшь? в чём этот порог измеряется? %, попугаи?</div></div>От же ж. Порог не определяется количественно, он определяется прилагательными.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501603'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:23:34+00:00">16.07.14, 03:23</time></span><div class='quote '>У korvin-а пока получается лихо пороги переступать везде, кроме Дельфей</div></div><br>
ты считаешь это аргументом?</div></div>Я считаю это пояснением к вопросу о пороге. Аргументом это можно рассматривать, если относиться к нему как факту. Но один факт ещё не статистика. Собственно за неимением оной вопрос о пороге и был задан, иначе было бы утверждение, а не вопрос. А вот дельфисты утверждают, а не спрашивают о, высокий уровень порога вхождения в Плюсы, и не только я вижу тут противоречие.<br>
<strong class='tag-b'>Shaggy</strong>, мне в целом коллинеарно, что там хотел написать <strong class='tag-b'>korvin</strong>, что вместо этого написал, и где в результате словил грабли. Поднятый мною вопрос поначалу касался только счётчика ссылок с бредовым начальным значением, затем бредового факта отсутствия владельца для этого счётчика, затем бреда о нормальности подхода к ручному допиливанию функционала, для избавления от которого этот функционал вообще-то и вводился, и только наконец -- воспринятия горы проблем из-за всего этого за нормальное проектное решение уровня архитектуры языка.<br>
Мне вот интересно, ну создала фабрика мне объект по интерфейсу на него, счётчик 0, тут бац&#33; эксепшн. Никакого перехода 1→0 в принципе никогда не состоится. И как теперь? Но это ещё мелочи. Что <a class='tag-url' href='http://www.transl-gunsmoker.ru/2011/01/on-objects-with-reference-count-of-zero.html' target='_blank'>говорят архитекторы самой COM</a> не интересно почитать?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501798</guid>
        <pubDate>Wed, 16 Jul 2014 13:48:24 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501798</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>korvin</strong>, да вроде ничего криминального.<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">auto v = 1;</div><div class="code_line">auto r = new int(v);</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T13:49:06+00:00">16.07.14, 13:49</time></span></span><br>
Это я про limbo.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501795</guid>
        <pubDate>Wed, 16 Jul 2014 13:38:18 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501795</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501790'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:32:14+00:00">16.07.14, 13:32</time></span><div class='quote '>т.е. корректность работы зависит от того где вызван SetLink, в или за Main</div></div><br>
Как будто со слабыми ссылками будет по-другому... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T13:42:42+00:00">16.07.14, 13:42</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501790'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:32:14+00:00">16.07.14, 13:32</time></span><div class='quote '><br>
т.е. корректность работы зависит от того где вызван SetLink, в или за Main</div></div><br>
Кстати говоря, ты можешь убрать вызов SetLink и посмотреть, что будет. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T13:45:00+00:00">16.07.14, 13:45</time></span></span><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">function Main: ICyclic;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := TCyclic.Create(&#39;Foo&#39;);</div><div class="code_line">&nbsp;&nbsp;Result.SetLink(@Result);</div><div class="code_line">&nbsp;&nbsp;Result.PrintLn;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure RealMain;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Main;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;RealMain;</div><div class="code_line">&nbsp;&nbsp;ReadLn;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
<br>
Т.е. указатель тут как бы совсем не причем.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501790</guid>
        <pubDate>Wed, 16 Jul 2014 13:32:14 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501790</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:46:26+00:00">16.07.14, 12:46</time></span><div class='quote '>Указатели совсем вышли из моды? =)</div></div><br>
шикарное решение :lol: <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 Main:ICyclic;</div><div class="code_line">begin</div><div class="code_line">&nbsp;Result := TCyclic.Create(&#39;Foo&#39;);</div><div class="code_line">&nbsp;Result.SetLink(@Result); &nbsp;// оопс! </div><div class="code_line">&nbsp;Result.GetLink^.PrintLn;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
т.е. корректность работы зависит от того где вызван SetLink, в или за Main<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501780'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T13:13:44+00:00">16.07.14, 13:13</time></span><div class='quote '>...счётчик равен 2, но потом временный объект, созданный функцией make_shared, умирает и тем самым уменьшает счётчик на 1, и остаётся только объект x со счётчиком 1.</div></div><br>
ээ... а с чего вдруг он умирает? за ов он ещё не вышел...<br>
<br>
и ещё(просто интересно), зачем нужна ещё одна прокладка(make_shared)? конструктора shared_ptr недостаточно?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501783</guid>
        <pubDate>Wed, 16 Jul 2014 13:18:12 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501783</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501770'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:57:30+00:00">16.07.14, 12:57</time></span><div class='quote '>тогда не понял. т.е. не может существовать двух ссылок(сырая и shared), указывающих на один объект?</div></div><br>
Может, только обычно они являются внешними по отношению к объекту и его типу, а не встроены каким-либо образом в него. Мухи отдельно, котлеты отдельно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501770'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:57:30+00:00">16.07.14, 12:57</time></span><div class='quote '>разжовываю: если ты используешь фреймворк, зачем лезть в обход?</div></div><br>
Фреймворки бывают разные и зачастую недостаточно гибкие. И тебе не кажется, что вопрос &quot;зачем это делать?&quot; --- это не ответ на вопрос &quot;почему так делать --- дурной тон?&quot; и уж тем более никак не катит на &quot;разжевывание&quot;. Я бы еще понял, если бы ты привел пример, когда ручной доступ к БД параллельно с фреймворком, скажем, нарушает целостность данных в БД.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501770'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:57:30+00:00">16.07.14, 12:57</time></span><div class='quote '>а если фреймворк - моветон, зачем ты его используешь?</div></div><br>
Я и не использую фреймворки.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501770'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:57:30+00:00">16.07.14, 12:57</time></span><div class='quote '>вот про это я и говорю: со своим уставом в чужой монастырь...</div></div><br>
С этим никто не спорит, но из-за такого устава монастыря ходить в него совсем не хочется, а приходится иногда.<br>
<br>
Да и самому монастырю следовало бы понять, что он таки не один на Земле и далеко не ее пуп. Конкуренция, да.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501770'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:57:30+00:00">16.07.14, 12:57</time></span><div class='quote '>если ты учишь phyton, ты будешь возмущаться, что там не так как в С++?</div></div><br>
Большинство языков не подменяют чужие понятия своими. Если им хочется что-то сделать &quot;не как у всех&quot;, они придумывают новые понятия, дабы не создавать путаницу.<br>
<br>
Например, делфисты любят рассказывать, какое Делфи &quot;компонентно-ориентированное&quot;, вот и использовали бы вместо слова &quot;interface&quot; слово &quot;component&quot;, хотя оно не совсем точно отражало бы суть, но зато без путаницы.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501780</guid>
        <pubDate>Wed, 16 Jul 2014 13:13:44 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501780</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>мне сказали, что конструкция<br>
make_shared&lt;int&gt;(42);<br>
выдаёт объект со счётчиком=1<br>
далее следует присвоение, и следовательно...</div></div><br>
...счётчик равен 2, но потом временный объект, созданный функцией make_shared, умирает и тем самым уменьшает счётчик на 1, и остаётся только объект x со счётчиком 1.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>а без последней фразы ты не мог, это да... молодец чё</div></div><br>
Ну, вы бы тоже не смогли, если бы попрограммировали на других языках с подсчётом ссылок.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501774</guid>
        <pubDate>Wed, 16 Jul 2014 13:04:03 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501774</link>
        <description><![CDATA[korvin: <div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Давайте сделаем небольшое лирическое отступление</div><div class="body">(чтоб делфисты не чувствовали себя уникальными =)). Недавно наткнулся на еще один пример не совсем очевидного поведения в совсем другом языке.<br>
<br>
В Limbo структуры являются типами значений (как в C, Go и т.п.), например:<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">Int: adt</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;val: int;</div><div class="code_line">};</div></ol></div></div></div></div><br>
Также существует ключевое слово ref, для создания ссылочных структур (ref можно использовать только с adt-типами), например:<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">IntRef: type ref Int;</div><div class="code_line">x: IntRef;</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">x: ref Int;</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">v := Int(1);</div><div class="code_line">r := ref v;</div></ol></div></div></div></div><br>
ref v не вернет ссылку на v, как операция взятия адреса в других языках, она создаст новую ссылку на Int и скопирует туда значение v.<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">implement Command;</div><div class="code_line">&nbsp;</div><div class="code_line">include &quot;sys.m&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys: Sys;</div><div class="code_line">include &quot;draw.m&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">Command: module</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;init: fn(nil: ref Draw-&#62;Context, nil: list of string);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">init(nil: ref Draw-&#62;Context, nil: list of string)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys = load Sys Sys-&#62;PATH;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys-&#62;print(&quot;ref = %d\n&quot;, &#60;-spawnThread());</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">Int: adt</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;val: int;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">spawnThread(): chan of int</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;c := chan of int;</div><div class="code_line">&nbsp;&nbsp; &nbsp;v := Int(1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;r := ref v;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys-&#62;print(&quot;ref = %d, val = %d\n&quot;, r.val, v.val);</div><div class="code_line">&nbsp;&nbsp; &nbsp;spawn thread(c, r);</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys-&#62;sleep(1000);</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys-&#62;print(&quot;ref = %d, val = %d\n&quot;, r.val, v.val);</div><div class="code_line">&nbsp;&nbsp; &nbsp;r.val = 3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return c;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">thread(out: chan of int, r: ref Int)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys-&#62;sleep(500);</div><div class="code_line">&nbsp;&nbsp; &nbsp;r.val = 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sys-&#62;sleep(1000);</div><div class="code_line">&nbsp;&nbsp; &nbsp;out &#60;-= r.val;</div><div class="code_line">}</div></ol></div></div></div></div><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">ref = 1, val = 1</div><div class="code_line">ref = 2, val = 1</div><div class="code_line">ref = 3</div></ol></div></div></div></div></div></div>]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501770</guid>
        <pubDate>Wed, 16 Jul 2014 12:57:30 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501770</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:33:52+00:00">16.07.14, 12:33</time></span><div class='quote '>На один и тот же объект.</div></div><br>
тогда не понял. т.е. не может существовать двух ссылок(сырая и shared), указывающих на один объект?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:33:52+00:00">16.07.14, 12:33</time></span><div class='quote '>Скажи, почему нет интерфейсов для VCL-компонентов </div></div><br>
потому-что интерфейсы появились позже VCL<br>
повсеместного введения плюшек последнего стандарта C++ я тоже не наблюдаю<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:33:52+00:00">16.07.14, 12:33</time></span><div class='quote '>Кем считается? Сейчас вроде модно наоборот, фреймворки считать моветоном.</div></div><br>
разжовываю: если ты используешь фреймворк, зачем лезть в обход?<br>
а если фреймворк - моветон, зачем ты его используешь?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:33:52+00:00">16.07.14, 12:33</time></span><div class='quote '>Да, потому что тут везде всё в порядке, кроме Делфи.</div></div><br>
вот про это я и говорю: со своим уставом в чужой монастырь...<br>
где-то было обещано, что будет как &quot;везде&quot;?<br>
если ты учишь phyton, ты будешь возмущаться, что там не так как в С++?<br>
и продолжать писать код так же как в С++?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T12:33:52+00:00">16.07.14, 12:33</time></span><div class='quote '>ARC --- Automatic Reference Counting</div></div><br>
значит неправильно понипал]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501767</guid>
        <pubDate>Wed, 16 Jul 2014 12:48:34 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501767</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>напишу прямо: не используй разные ссылки на один объект, не надо...</div></div><br>
Звучит как: &quot;не используйте ООП, не надо&quot;...]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501766</guid>
        <pubDate>Wed, 16 Jul 2014 12:46:26 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501766</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>weak ref&#39;s</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">program Test;</div><div class="code_line">&nbsp;</div><div class="code_line">{$APPTYPE CONSOLE}</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;SysUtils,</div><div class="code_line">&nbsp;&nbsp;Classes;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;PICyclic = ^ICyclic;</div><div class="code_line">&nbsp;&nbsp;ICyclic = interface</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure PrintLn;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure SetLink(L: PICyclic);</div><div class="code_line">&nbsp;&nbsp; &nbsp;function &nbsp;GetLink: PICyclic;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TCyclic = class(TInterfacedObject, ICyclic)</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;FName: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;FLink: PICyclic;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor Create(Name: string);</div><div class="code_line">&nbsp;&nbsp; &nbsp;destructor &nbsp;Destroy; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function _AddRef: Integer; stdcall;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function _Release: Integer; stdcall;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure PrintLn; virtual;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure SetLink(L: PICyclic); virtual;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function &nbsp;GetLink: PICyclic; virtual;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TCyclic.Create(Name: string);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;FName := Name;</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;created&#39;);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">destructor TCyclic.Destroy;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;destroyed&#39;);</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TCyclic._AddRef: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := inherited _AddRef;</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;referenced &#39; + IntToStr(Result));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TCyclic._Release: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := inherited _Release;</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;released &#39; + IntToStr(Result));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TCyclic.PrintLn;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;WriteLn(FName);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TCyclic.SetLink(L: PICyclic);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;FLink := L;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TCyclic.GetLink: PICyclic;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := FLink;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Main;</div><div class="code_line">var c: ICyclic;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;c := TCyclic.Create(&#39;Foo&#39;);</div><div class="code_line">&nbsp;&nbsp;c.SetLink(@c);</div><div class="code_line">&nbsp;&nbsp;c.GetLink^.PrintLn;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Main;</div><div class="code_line">&nbsp;&nbsp;ReadLn;</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501763</guid>
        <pubDate>Wed, 16 Jul 2014 12:40:30 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501763</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501605'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:29:47+00:00">16.07.14, 03:29</time></span><div class='quote '>Угу, только shared_ptr -- 1) это другой объект, а не наш, 2) использование shared_ptr не ограничивает меня в способах построения иерархии своих классов.</div></div><br>
1. так и у меня ссылки разные<br>
2. интерфейсы меня тоже не ограничивают</div></div><br>
У тебя один и тот же &quot;вид&quot; ссылок. По крайней мере явно.<br>
Как же тебе не мешают интерфейсы, если ты при их использовании должен непонятно почему думать о подсчете ссылок, хотя интерфейсы не имеют никакого отношения к управлению памятью. По крайней мере не должны. Связь-то какая между понятием интерфейса в ООП и механизмами управления памятью? Зачем так в Delphi сделали?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>интерфейсы используют, как раз, чтобы это(другое) поведение получить</div></div><br>
Т.е. интерфейсы в Delphi используют не как интерфейсы, а как механизм подсчета ссылок? Тогда их следовало назвать иначе.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>помнишь споры вокруг void и pointer? ничего общего не находишь? <br>
</div></div><br>
Эм. Пока нет. Раскрой тему.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501759</guid>
        <pubDate>Wed, 16 Jul 2014 12:33:52 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501759</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>1. так и у меня ссылки разные</div></div><br>
На один и тот же объект. google: object identity.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>интерфейсы меня тоже не ограничивают</div></div><br>
Ко многому можно привыкнуть, да. Скажи, почему нет интерфейсов для VCL-компонентов и как мне создать, скажем, свою Label, не наследуясь ни от TLabel, ни от любого из его предков?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>почему-то лезть в базу, например, в обход используемого фреймворка<br>
считается моветоном</div></div><br>
Кем считается? Сейчас вроде модно наоборот, фреймворки считать моветоном.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>а тут всё в порядке?</div></div><br>
Да, потому что тут везде всё в порядке, кроме Делфи.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501744'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T11:58:52+00:00">16.07.14, 11:58</time></span><div class='quote '>насколько знаю, планируется ввести ARC(если я правильно понимаю, что это такое)</div></div><br>
ARC --- Automatic Reference Counting. И он никак не решает проблему циклических ссылок. Он ее скорее как раз создает. И у вас же уже есть ARC в интерфейсах, зачем вводить еще один какой-то?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501744</guid>
        <pubDate>Wed, 16 Jul 2014 11:58:52 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501744</link>
        <description><![CDATA[Shaggy: тут следовало бы написать: гы, сколько пуканов порвалось&#33; :crazy: <br>
<br>
а вообще,создаётся впечатление, что я разговариваю с радио<br>
объясняю, а толку - ноль<br>
всё-равно делают по-своему<br>
<br>
<strong class='tag-b'>Qraizer</strong>, тебе я вижу, не понравилось? так может оставишь этот снисходительный, менторский тон и поговорим нормально, как взрослые люди?<br>
ты вроде пишешь правильные и умные вещи... про С++<br>
и у тебя почти получается писать про delphi, <br>
но временами ты выдаёшь такой... ну кроме как бредом назвать нельзя...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501601'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T01:39:32+00:00">16.07.14, 01:39</time></span><div class='quote '>По его объяснениям (и по факту) счётчик здесь равен 1. Как и в Objective-C. Только в дельфях всё через... </div></div><br>
мне сказали, что конструкция<br>
make_shared&lt;int&gt;(42);<br>
выдаёт объект со счётчиком=1<br>
далее следует присвоение, и следовательно...<br>
<br>
в моих словах отсутствует логика?<br>
<br>
а без последней фразы ты не мог, это да... молодец чё<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501603'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:23:34+00:00">16.07.14, 03:23</time></span><div class='quote '> На предмет порога вхождения в Дельфи ответ будет?</div></div><br>
а какого ответа ты ждёшь? в чём этот порог измеряется? %, попугаи?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501603'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:23:34+00:00">16.07.14, 03:23</time></span><div class='quote '>У korvin-а пока получается лихо пороги переступать везде, кроме Дельфей</div></div><br>
ты считаешь это аргументом?<br>
у меня тоже с этим никаких проблем, и использование delphi мне никак не мешало<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501605'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:29:47+00:00">16.07.14, 03:29</time></span><div class='quote '>Угу, только shared_ptr -- 1) это другой объект, а не наш, 2) использование shared_ptr не ограничивает меня в способах построения иерархии своих классов.</div></div><br>
1. так и у меня ссылки разные<br>
2. интерфейсы меня тоже не ограничивают<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501605'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:29:47+00:00">16.07.14, 03:29</time></span><div class='quote '>Так это у вас надо спрашивать, у вас же разница есть.</div></div><br>
это было сравнение с++ и delphi подхода<br>
<br>
напишу прямо: не используй разные ссылки на один объект, не надо...<br>
это разные уровни если угодно, интерфейсы - более высокий уровень(совсем немного)<br>
да в delphi сделано так, в отдичие от других языков<br>
<br>
почему-то лезть в базу, например, в обход используемого фреймворка<br>
считается моветоном<br>
а тут всё в порядке?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501605'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:29:47+00:00">16.07.14, 03:29</time></span><div class='quote '>Просто, как обычно, у Делфи свой путь. Куда-то далеко. </div></div><br>
это ты куда-то далеко идёшь<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T10:44:34+00:00">16.07.14, 10:44</time></span><div class='quote '>Работаешь через ссылку на интерфейс - получаешь одно поведение, работаешь через ссылку на объект - другое.</div></div><br>
интерфейсы используют, как раз, чтобы это(другое) поведение получить<br>
<br>
помнишь споры вокруг void и pointer? ничего общего не находишь? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T12:02:07+00:00">16.07.14, 12:02</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501605'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:29:47+00:00">16.07.14, 03:29</time></span><div class='quote '>Я так понимаю, решение проблемы циклических ссылок тоже отдан на откуп программисту:</div></div><br>
да<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T10:44:34+00:00">16.07.14, 10:44</time></span><div class='quote '>Кстати да, есть ли безопасный способ разруливать циклияеские ссылки? </div></div><br>
насколько знаю, планируется ввести ARC(если я правильно понимаю, что это такое)<br>
и weak ref&#39;s<br>
<br>
может в ХЕ6 уже и есть, я не в курсе]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501708</guid>
        <pubDate>Wed, 16 Jul 2014 10:44:34 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501708</link>
        <description><![CDATA[D_KEY: Кстати да, есть ли безопасный способ разруливать циклияеские ссылки? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T10:48:58+00:00">16.07.14, 10:48</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501055'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T20:21:31+00:00">14.07.14, 20:21</time></span><div class='quote '>что ссылка с подсчетом ссылок и без зависит от места в иерархии. </div></div><br>
ничего не понял. что за иерархия?</div></div><br>
Работаешь через ссылку на интерфейс - получаешь одно поведение, работаешь через ссылку на объект - другое. И совершенно непонятно, зачем мне это нужно... Я так понимаю, что везде, кроме Delphi, подсчет ссылок ортогонален интерфейсам, наследованию и пр. механизмам ООП.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501605</guid>
        <pubDate>Wed, 16 Jul 2014 03:29:47 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501605</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>(видимо сценарий действительно редкий и стандартной заготовки нет. пришлось изобретать TNoRefObject)</div></div><br>
Потому и редкий, что &quot;всё через...&quot;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>из shared_ptr можно получить сырой указатель?</div></div><br>
Угу, только shared_ptr -- 1) это <em class='tag-i'>другой</em> объект, а не наш, 2) использование shared_ptr не ограничивает меня в способах построения иерархии своих классов.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>ссылка на объект(весь интерфейс объекта) vs часть этого интерфейса. и какая разница?</div></div><br>
Так это у вас надо спрашивать, у вас же разница есть.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>уничтожается при переходе 1-&gt;0</div></div><br>
Об этом и речь.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>просто ты захотел выстрелить себе в ногу<br>
у тебя получилось...</div></div><br>
Просто, как обычно, у Делфи свой путь. Куда-то далеко. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T03:34:06+00:00">16.07.14, 03:34</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501603'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T03:23:34+00:00">16.07.14, 03:23</time></span><div class='quote '>растущее из Абракадеро</div></div><br>
Так это наверное еще со времен Борланда тянется. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T03:38:45+00:00">16.07.14, 03:38</time></span></span><br>
BTW, почему было изначально не сделать управление жизнью объектов только через ARC, не было бы путаницы и это снизило бы порог вхождения. У меня два живых примера &quot;перед глазами&quot;, оба пишут на Делфи, но оба понятия не имеют про классы/объекты/динамическую память/время жизни. Потому и пишут фактически процедурный код. Слишком сложно в объекты для формошлеперов. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-16T03:58:04+00:00">16.07.14, 03:58</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>тут два варианта</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">program Test;</div><div class="code_line">&nbsp;</div><div class="code_line">{$APPTYPE CONSOLE}</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.res}</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;SysUtils,</div><div class="code_line">&nbsp;&nbsp;Classes;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;ICyclic = interface</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure SetLink(L: ICyclic);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TCyclic = class(TInterfacedObject, ICyclic)</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;FLink: ICyclic;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor Create;</div><div class="code_line">&nbsp;&nbsp; &nbsp;destructor &nbsp;Destroy; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function _AddRef: Integer; stdcall;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function _Release: Integer; stdcall;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure SetLink(L: ICyclic); virtual;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TCyclic.Create;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;created&#39;);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">destructor TCyclic.Destroy;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;destroyed&#39;);</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TCyclic._AddRef: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := inherited _AddRef;</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;referenced &#39; + IntToStr(Result));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TCyclic._Release: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := inherited _Release;</div><div class="code_line">&nbsp;&nbsp;WriteLn(&#39;released &#39; + IntToStr(Result));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TCyclic.SetLink(L: ICyclic);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;FLink := L;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Main;</div><div class="code_line">var c: ICyclic;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;c := TCyclic.Create;</div><div class="code_line">&nbsp;&nbsp;c.SetLink(c);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Main;</div><div class="code_line">&nbsp;&nbsp;ReadLn;</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">created</div><div class="code_line">referenced 1</div><div class="code_line">referenced 2</div><div class="code_line">referenced 3</div><div class="code_line">released 2</div><div class="code_line">released 1</div></ol></div></div></div></div><br>
<br>
Хотя во всех (или почти всех) языках, где используется ARC, этот вопрос так или иначе решен.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501603</guid>
        <pubDate>Wed, 16 Jul 2014 03:23:34 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501603</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>выдуманные проблемы с++шников, которые лезут со своим уставом в чужой монастырь</div></div>Ух ты ж. На предмет порога вхождения в Дельфи ответ будет? У <strong class='tag-b'>korvin</strong>-а пока получается лихо пороги переступать везде, кроме Дельфей. В Плюсы в частности. Количество переступленных порогов можно у него уточнить. И вот после ответов мы наконец-то сможем внятно поговорить о месторасположении рога изобилия проблем.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501601'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T01:39:32+00:00">16.07.14, 01:39</time></span><div class='quote '>о его объяснениям (и по факту) счётчик здесь равен 1. Как и в Objective-C. Только в дельфях всё через...</div></div><strong class='tag-b'>MyNameIsIgor</strong>, если б он читал, что ему пишут, а не искал знакомые буквы, то вот это вот<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501071'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T02:36:09+00:00">15.07.14, 02:36</time></span><div class='quote '><strong class='tag-b'>D_KEY</strong>, <strong class='tag-b'>korvin</strong>, я не понял, мы с кем разговариваем?</div></div>я б не спрашивал.<br>
И -- да, в Дельфях если не вообще всё, то уж точно всё растущее из Абракадеро, через. Ибо и вот это вот<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501180'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T11:07:27+00:00">15.07.14, 11:07</time></span><div class='quote '>Там, видимо, один в один архитектуру COM не проксили.</div></div>сказанное в адрес Objective-C, не насторожило. <strong class='tag-b'>Shaggy</strong>, вас Абракадеро очередной раз кинуло, поленившись сделать правильно и сделав, как им проще, вам втюхать как догму, а вы и рады уши развесить. Кроме Дельфей, нигде больше ссылки так не считают. Всё, что есть Дельфях, можно найти ещё где-нибудь. Любые качества, фичи, итд. Но вот ссылки на интерфейсы есть только тут. Ну ещё в COM, но это и не язык.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501601</guid>
        <pubDate>Wed, 16 Jul 2014 01:39:32 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501601</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-16T00:36:55+00:00">16.07.14, 00:36</time></span><div class='quote '>тут счётчик равен чему?<br>
судя по объяснениям Qraizer - 2</div></div><br>
По его объяснениям (и по факту) счётчик здесь равен 1. Как и в Objective-C. Только в дельфях всё через...]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501598</guid>
        <pubDate>Wed, 16 Jul 2014 00:36:55 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501598</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501055'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T20:21:31+00:00">14.07.14, 20:21</time></span><div class='quote '>что ссылка с подсчетом ссылок и без зависит от места в иерархии. </div></div><br>
ничего не понял. что за иерархия? <br>
если ту имеешь в виду то, что нужно наследоваться от TInterfacedObject<br>
то это не так<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501071'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T02:36:09+00:00">15.07.14, 02:36</time></span><div class='quote '>я не понял, мы с кем разговариваем?</div></div><br>
декларируется ручное управление временем жизни, конструктор возвращает соответствующую ссылку<br>
поведение соответствует декларируемому. что-то не так?<br>
автоматическое управление и подсчёт ссылок обеспечивается другим механизмом - интерфейсами<br>
и тут приходит Qraizer и говорит, что для реализации этого нам нужно автоматическое управление<br>
во первых, нахрена, если и так работает, работает правильно, как и задумывалось?<br>
во вторых, только я тут вижу бесконечную рекурсию?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501071'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T02:36:09+00:00">15.07.14, 02:36</time></span><div class='quote '>Никто не владеет, некому и считать ссылки. Отсюда в частности и обсуждаемые проблемы.Не надо считать? Ну ладно, а зачем тогда было вводить счётчики? Ах, всё-таки надо... тогда почему такую простейшую задачу надо выполнять руками? На кой хрен сдался этот интерфейс, который не умеет того, для чего создавался - избавить программера от рутины?</div></div><br>
raw mind?<br>
выдуманные проблемы с++шников, которые лезут со своим уставом в чужой монастырь<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501073'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T03:16:58+00:00">15.07.14, 03:16</time></span><div class='quote '>Которые мне придется переопределять, как в твоем TNoRefObject.</div></div><br>
не переопределять, а писать с нуля, этих методов нет в TObject<br>
<br>
если мы хотим автоматики<br>
стандартный шаблон:<br>
1. создаём объект<br>
2. запрашиваем интерфейс(любой из тех, что реализованы)<br>
3. и <strong class='tag-b'>далее работаем с объектом только посредством интерфейсов</strong><br>
4. если нам надо передать интерфейс в функцию/метод без увеличения счётчика, используем const(пример я уже приводил)<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">var</div><div class="code_line">&nbsp;&nbsp;O:TObj;</div><div class="code_line">&nbsp;&nbsp;I:IMyIntf;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;O:=TObj.Create;</div><div class="code_line">&nbsp;&nbsp;I:=O as IMyIntf;</div><div class="code_line">&nbsp;&nbsp;I.Work;</div><div class="code_line">&nbsp;&nbsp;doSomething(I);</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">var</div><div class="code_line">&nbsp;&nbsp;I:IMyIntf;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;I:=TObj.Create;</div><div class="code_line">&nbsp;&nbsp;I.Work;</div><div class="code_line">&nbsp;&nbsp;doSomething(I);</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
иногда возникает ситуация, когда в программе мы работаем только с объектами, а в какую-то внешнюю функцию<br>
надо передать интерфейс(т.е. писали её не мы и изменить не можем)<br>
тут два варианта<br>
а) либо в соответствии с п.3 переписываем всё на интерфейсах<br>
б) либо реализуем интерфейс только там, где нужно, без подсчёта ссылок<br>
(видимо сценарий действительно редкий и стандартной заготовки нет. пришлось изобретать TNoRefObject)<br>
(тут использование const на счётчик не повлияет т.к. его нет  :)  но уберёт ненужные вызовы служебных методов)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501073'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T03:16:58+00:00">15.07.14, 03:16</time></span><div class='quote '>Ну Делфи-то это позволяет:</div></div><br>
насколько знаю С++ - тоже<br>
из shared_ptr можно получить сырой указатель?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501073'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T03:16:58+00:00">15.07.14, 03:16</time></span><div class='quote '>Что &quot;и?&quot; Либо считайте ссылки объекта, либо не уничтожайте объект при значении счетчика == 0. Отсутствие интерфейсных ссылок на объект не означает отсутствия &quot;классовых&quot; ссылок на объект. </div></div><br>
ссылка на объект(весь интерфейс объекта) vs часть этого интерфейса. и какая разница?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501073'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T03:16:58+00:00">15.07.14, 03:16</time></span><div class='quote '>Либо считайте ссылки объекта, либо не уничтожайте объект при значении счетчика == 0.</div></div><br>
считаем, не уничтожается<br>
уничтожается при переходе 1-&gt;0<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501073'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T03:16:58+00:00">15.07.14, 03:16</time></span><div class='quote '>и даже никаких варнингов или хинтов, только Access Violation. =)</div></div><br>
хинтов по поводу?<br>
все контракты выполняются<br>
никаких неоднозначностей нет<br>
все переменные инициализированы<br>
<br>
просто ты захотел выстрелить себе в ногу<br>
у тебя получилось...<br>
<br>
<br>
<br>
<br>
кстати <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500603'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-13T12:04:19+00:00">13.07.14, 12:04</time></span><div class='quote '>auto x = make_shared&lt;int&gt;(42);</div></div><br>
тут счётчик равен чему?<br>
судя по объяснениям Qraizer - 2<br>
?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501443</guid>
        <pubDate>Tue, 15 Jul 2014 16:54:01 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501443</link>
        <description><![CDATA[Qraizer: О, блин. Долго ждал :D ?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501439</guid>
        <pubDate>Tue, 15 Jul 2014 16:50:18 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501439</link>
        <description><![CDATA[Славян: :blush: С троичным юбилеем странички&#33; 3<sup class='tag-sup'>5</sup> = 243. :blush:]]></description>
        <author>Славян</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501434</guid>
        <pubDate>Tue, 15 Jul 2014 16:39:23 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501434</link>
        <description><![CDATA[Qraizer: Я не думаю, что от него хоть какой-то прок будет, пусть даже маленький. Однако библиотеки есть, хоть и маловостребованы. Значит, кому-то нужно, а я просто не в курсе.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501427</guid>
        <pubDate>Tue, 15 Jul 2014 16:29:58 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501427</link>
        <description><![CDATA[D_KEY: Да будет ли большой толк от GC в C++? Деструкторы-то никуда не денутся. Разве что для некоторых алгоритмов удобнее будет.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501410</guid>
        <pubDate>Tue, 15 Jul 2014 15:45:19 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501410</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501399'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T15:26:43+00:00">15.07.14, 15:26</time></span><div class='quote '>Ну вот их-то я и видел. Т.е. никакой другой инфы не предлагалось до 11-го года?</div></div><br>
Ну, вроде видел предложения опционального GC от Hewlett Packard, но какие-то странные...<br>
А то, что сейчас в Стандарте, не понятно как юзать, т.к. ни одной реализации с GC нет.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501399</guid>
        <pubDate>Tue, 15 Jul 2014 15:26:43 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501399</link>
        <description><![CDATA[Qraizer: Ну вот их-то я и видел. Т.е. никакой другой инфы не предлагалось до 11-го года?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501192</guid>
        <pubDate>Tue, 15 Jul 2014 11:54:36 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501192</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501189'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T11:50:24+00:00">15.07.14, 11:50</time></span><div class='quote '>Хм, а это случаем не то, что добавили в C++11 как поддержку сборщиков? Надо полистать, что там писали, а то в Стандарте эти GC упомянуты очень скупо.</div></div><br>
Нет, не то. И там нечего описывать - просто <a class='tag-url' href='http://en.cppreference.com/w/cpp/memory' target='_blank'>функции</a> для подсказок возможному GC.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501189</guid>
        <pubDate>Tue, 15 Jul 2014 11:50:24 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501189</link>
        <description><![CDATA[Qraizer: Хм, а это случаем не то, что добавили в C++11 как поддержку сборщиков? Надо полистать, что там писали, а то в Стандарте эти GC упомянуты очень скупо.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501184</guid>
        <pubDate>Tue, 15 Jul 2014 11:24:59 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501184</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501180'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T11:07:27+00:00">15.07.14, 11:07</time></span><div class='quote '>korvin, а что такое ARC?</div></div><br>
<a class='tag-url' href='http://en.wikipedia.org/wiki/Automatic_Reference_Counting' target='_blank'>Оно</a>. Компилятор проставляет retain/release по тем же <a class='tag-url' href='http://ru.wikipedia.org/wiki/Objective-C#.D0.A3.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D0.B0.D0.BC.D1.8F.D1.82.D1.8C.D1.8E' target='_blank'>правилам</a>, по которым их люди писали руками.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501180</guid>
        <pubDate>Tue, 15 Jul 2014 11:07:27 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501180</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501073'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T03:16:58+00:00">15.07.14, 03:16</time></span><div class='quote '>Интересно, как эти их интерфейсы теперь уживаются с Objective-C фрейворками например, где ARC считает объекты, а не интерфейсы.</div></div>Не знаю. Там, видимо, один в один архитектуру COM не проксили. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-15T11:08:06+00:00">15.07.14, 11:08</time></span></span><br>
<strong class='tag-b'>korvin</strong>, а что такое ARC?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501160</guid>
        <pubDate>Tue, 15 Jul 2014 09:55:07 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501160</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501153'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T09:15:49+00:00">15.07.14, 09:15</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501115'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T07:20:12+00:00">15.07.14, 07:20</time></span><div class='quote '>Правильно сравнивать с C++, objective-c и др. языками с ручным управлением памятью и подсчётом ссылок. </div></div><br>
Rust?</div></div><br>
Ну там как и в плюсах отдельные типы ссылок.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501153</guid>
        <pubDate>Tue, 15 Jul 2014 09:15:49 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501153</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501115'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-15T07:20:12+00:00">15.07.14, 07:20</time></span><div class='quote '>Правильно сравнивать с C++, objective-c и др. языками с ручным управлением памятью и подсчётом ссылок. </div></div><br>
Rust?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501127</guid>
        <pubDate>Tue, 15 Jul 2014 08:06:33 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501127</link>
        <description><![CDATA[Мяут-Настоящий: <strong class='tag-b'>D_KEY</strong>, тут скорее всего сравнение в логике поведения ключевого слова interface. В Java и ссылки через-интерфейс и через класс приводят к одинаковым последствиям:<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">SomeClass someObject = new SomeClass();</div><div class="code_line">InterfaceThatIsImplmentedBySomeClass someInterfacedObject = someObject;</div><div class="code_line">&nbsp;</div><div class="code_line">// Количество ссылок на someObject = 2</div></ol></div></div></div></div><br>
<br>
В Delphi подсчет ссылок ведется только для интерфейсов:<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">var</div><div class="code_line">someObject: SomeClass;</div><div class="code_line">someInterfacedObject: InterfaceThatIsImplmentedBySomeClass;</div><div class="code_line">begin</div><div class="code_line">someObject := TInterfacedObject.Create;</div><div class="code_line">someInterfacedObject := someObject;</div><div class="code_line">&nbsp;</div><div class="code_line">{ Количество ссылок на someObject = 1 }</div></ol></div></div></div></div><br>
<br>
Такая вот петрушка.]]></description>
        <author>Мяут-Настоящий</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501115</guid>
        <pubDate>Tue, 15 Jul 2014 07:20:12 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501115</link>
        <description><![CDATA[D_KEY: Ну в java/c# вообще сборщик мусора. Правильно сравнивать с C++, objective-c и др. языками с ручным управлением памятью и подсчётом ссылок.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501079</guid>
        <pubDate>Tue, 15 Jul 2014 04:42:18 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501079</link>
        <description><![CDATA[Мяут-Настоящий: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501004'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:45:11+00:00">14.07.14, 16:45</time></span><div class='quote '>function TNoRefObject._AddRef: Integer;<br>
begin<br>
  Result := MAXINT;<br>
end;<br>
 <br>
function TNoRefObject._Release: Integer;<br>
begin<br>
  Result := MAXINT;<br>
end;</div></div><br>
Эти две реализации должны подставляться автоматически компилятором, а не программистом. А пока оно так , как оно есть в Delphi, люди будут пользовать Java/C# где таких граблей нет.]]></description>
        <author>Мяут-Настоящий</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501073</guid>
        <pubDate>Tue, 15 Jul 2014 03:16:58 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501073</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501034'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T19:07:22+00:00">14.07.14, 19:07</time></span><div class='quote '>Не ну Дельфи-то понять можно, korvin. Унаследовав COM к себе и приняв его вынужденные ограничения, Дельфи с COM-интерфейсами иначе никак и не поступить.</div></div><br>
Интересно, как эти их интерфейсы теперь уживаются с Objective-C фрейворками например, где ARC считает объекты, а не интерфейсы. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-15T03:34:55+00:00">15.07.14, 03:34</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501047'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T19:36:36+00:00">14.07.14, 19:36</time></span><div class='quote '>а служебные методы уже реализовали за тебя</div></div><br>
Которые мне придется переопределять, как в твоем TNoRefObject.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501047'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T19:36:36+00:00">14.07.14, 19:36</time></span><div class='quote '>а вообще, хранить и использовать две ссылки(с подсчётом ссылок и сырую) на одну сущьность, это нормально?<br>
C++way?</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">var NoCount: TInterfacedObject;</div><div class="code_line">NoCount := TInterfacedObject.Create;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Foo(Countable: IInterface);</div><div class="code_line">procedure Bar(NoCount: TInterfacedObject);</div><div class="code_line">&nbsp;</div><div class="code_line">Foo(NoCount);</div><div class="code_line">Bar(NoCount);</div></ol></div></div></div></div><br>
и даже никаких варнингов или хинтов, только Access Violation. =)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501047'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T19:36:36+00:00">14.07.14, 19:36</time></span><div class='quote '>TObject, пустее просто нет</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">TInterfaceA = class(TObject)</div><div class="code_line">&nbsp;&nbsp;... // abstract methods</div><div class="code_line">end;</div><div class="code_line">TInterfaceB = class(TObject)</div><div class="code_line">&nbsp;&nbsp;... // abstract methods</div><div class="code_line">end;</div><div class="code_line">TMyClass = class(TObject, TInterfaceA, TInterfaceB) // Oops!</div></ol></div></div></div></div><br>
У делфистов какое-то альтернативное понятие пустоты:<br>
<a class='tag-url' href='http://postimg.org/image/9aymt7oal/' target='_blank'><img class='tag-img' src='http://s30.postimg.org/9aymt7oal/TObject.jpg' alt='user posted image'></a><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501047'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T19:36:36+00:00">14.07.14, 19:36</time></span><div class='quote '>и?</div></div><br>
Что &quot;и?&quot; Либо считайте ссылки объекта, либо не уничтожайте объект при значении счетчика == 0. Отсутствие интерфейсных ссылок на объект не означает отсутствия &quot;классовых&quot; ссылок на объект.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501071</guid>
        <pubDate>Tue, 15 Jul 2014 02:36:09 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501071</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501047'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T19:36:36+00:00">14.07.14, 19:36</time></span><div class='quote '>с чего вдруг?</div></div><strong class='tag-b'>D_KEY</strong>, <strong class='tag-b'>korvin</strong>, я не понял, мы с кем разговариваем?<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501023'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:20:28+00:00">14.07.14, 18:20</time></span><div class='quote '>Никто не владеет, некому и считать ссылки. Отсюда в частности и обсуждаемые проблемы.</div></div>Не надо считать? Ну ладно, а зачем тогда было вводить счётчики? Ах, всё-таки надо... тогда почему такую простейшую задачу надо выполнять руками? На кой хрен сдался этот интерфейс, который не умеет того, для чего создавался - избавить программера от рутины?<br>
Не, это явно бред сивой Абракадеро, выдуманный специально по такому случаю взятым в аренду у MS-а системным архитектором-профессионалом по эффекту Балмера.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501055</guid>
        <pubDate>Mon, 14 Jul 2014 20:21:31 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501055</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>Shaggy</strong>, еще раз. Основная проблема, которую я тут вижу, заключается в том, что ссылка с подсчетом ссылок и без зависит от места в иерархии. Это маразм. Я хочу общаться со своим объектом в одном месте как с объектом одного класса/интерфейса, а в другом - как другого. И это нормально для ООП кода. При чем тут вообще посчет ссылок?<br>
При этом в С++:<br>
T * - невладеющий указатель<br>
unique_ptr&lt;T&gt; - уникально владеющий указатель(т.е. является единственным правомерным владельцем)<br>
shared_ptr&lt;T&gt; - множественное владение(подсчет ссылок)<br>
weak_ptr&lt;T&gt;   - не владеет объектом, но позволяет получить shared_ptr(нулевой, если объекта уже нет)<br>
<br>
Вне какой-либо зависимости от иерархий, &quot;вида&quot; типа(класс или примитив) и пр.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501047</guid>
        <pubDate>Mon, 14 Jul 2014 19:36:36 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501047</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501017'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:15:21+00:00">14.07.14, 18:15</time></span><div class='quote '>А shared_ptr лучше явным поведением, отсутствием привязки к иерархии и каким-то другим языковым конструкциям.</div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:24:17+00:00">14.07.14, 18:24</time></span><div class='quote '>Тем, что shared_ptr не навязывает моему классу и моему интерфейсу какие-либо методы и поведение и я (в моем случае) могу даже не вспоминать о его существовании. А если он мне понадобится --- не заботиться о каких-то служебных методах для его корректной работы. </div></div><br>
он лучше только тем, что &quot;прозрачный&quot;<br>
<br>
а служебные методы уже реализовали за тебя<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501023'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:20:28+00:00">14.07.14, 18:20</time></span><div class='quote '> А должен</div></div><br>
с чего вдруг?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:24:17+00:00">14.07.14, 18:24</time></span><div class='quote '>Я хотел простые интерфейсы, как везде.</div></div><br>
первый вариант<br>
<br>
а вообще, хранить и использовать две ссылки(с подсчётом ссылок и сырую) на одну сущьность, это нормально?<br>
C++way?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:24:17+00:00">14.07.14, 18:24</time></span><div class='quote '>Кроме того, если я уверен, что в процедуре, которая требует интерфейс (такая вот библиотечная процедура, множественного наследования-то нет, вот, чтобы не ограничивать пользователя на реализацию объекта, она и просит интерфейс), не сохранится ссылок, то зачем мне вообще в данном случае сталкиваться со счетчиком ссылок (но в других случаях я хочу, чтоб ссылки считались)?</div></div><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 Build(const W: IWriter; S: string);</div></ol></div></div></div></div><br>
addref и release дёргаться не будут<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:24:17+00:00">14.07.14, 18:24</time></span><div class='quote '>О чем и речь, вместо наполнения пустого ящика нужными вещами, берем ящик с хламом и предварительно его вычищаем. Delphi-way, че.</div></div><br>
TObject, пустее просто нет<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T18:24:17+00:00">14.07.14, 18:24</time></span><div class='quote '>И на кой черт нам считать ссылки на интерфейсы, если время жизни --- это характеристика объекта, лежащего за этими интерфейсами? </div></div><br>
да объекта, и?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501034</guid>
        <pubDate>Mon, 14 Jul 2014 19:07:22 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501034</link>
        <description><![CDATA[Qraizer: Не ну Дельфи-то понять можно, <strong class='tag-b'>korvin</strong>. Унаследовав COM к себе и приняв его вынужденные ограничения, Дельфи с COM-интерфейсами иначе никак и не поступить. Хочешь считать не интерфейсы, а объекты, перекрывай счётчики и реализуй сообразно. Другое дело, что COM-интерфейсы - это не те интерфейсы, которые первыми приходят на ум, когда слышишь &quot;интерфейс&quot;. И почему, кроме COM, никаких других Дельфи не даёт, вот это непонятно. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-14T19:07:56+00:00">14.07.14, 19:07</time></span></span><br>
Хотя если рассуждать здраво, наплодить ещё одну сущность в довесок к имеющимся, так Дельфи ещё тяжелее станет, а профям и так сойдёт.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501027</guid>
        <pubDate>Mon, 14 Jul 2014 18:41:43 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501027</link>
        <description><![CDATA[D_KEY: Кстати, в C++ обычно передают shared_ptr по ссылке, чтоб избежать лишней работы со счетчиками.<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">void foo(const shared_ptr&#60;IFoo&#62; &amp;ptr)</div></ol></div></div></div></div><br>
В Delphi, как я понимаю, так не сделать? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-14T18:51:17+00:00">14.07.14, 18:51</time></span></span><br>
<strong class='tag-b'>korvin</strong>, единственное что, у нас иногда приходится возиться с <a class='tag-url' href='http://en.cppreference.com/w/cpp/memory/enable_shared_from_this' target='_blank'>shared_from_this</a>. В Delphi, видимо, не придётся ничего дополнительного делать.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501024</guid>
        <pubDate>Mon, 14 Jul 2014 18:24:17 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501024</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501004'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:45:11+00:00">14.07.14, 16:45</time></span><div class='quote '>выбор варианта зависит от того, что же ты на самом деле хотел </div></div><br>
Я хотел простые интерфейсы, как везде.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501004'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:45:11+00:00">14.07.14, 16:45</time></span><div class='quote '><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">TNoRefObject = class(TObject, IInterface)</div><div class="code_line">&nbsp;</div><div class="code_line">...</div></ol></div></div></div></div></div></div><br>
О чем и речь, вместо наполнения пустого ящика нужными вещами, берем ящик с хламом и предварительно его вычищаем. Delphi-way, че.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501014'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T17:41:56+00:00">14.07.14, 17:41</time></span><div class='quote '>в чём принципиальное отличие от shared_ptr?</div></div><br>
Тем, что shared_ptr не навязывает моему классу и моему интерфейсу какие-либо методы и поведение и я (в моем случае) могу даже не вспоминать о его существовании. А если он мне понадобится --- не заботиться о каких-то служебных методах для его корректной работы. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-14T18:26:34+00:00">14.07.14, 18:26</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501004'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:45:11+00:00">14.07.14, 16:45</time></span><div class='quote '>считаем ссылки, сколько раз запросили интерфейс(любой) столько и ссылок имеется understand?</div></div><br>
И на кой черт нам считать ссылки на интерфейсы, если время жизни --- это характеристика объекта, лежащего за этими интерфейсами? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-14T18:32:06+00:00">14.07.14, 18:32</time></span></span><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">Foo(x); // -- сюда я хочу передать &quot;сырую ссылку&quot;</div><div class="code_line">Bar(x); // -- а сюда &quot;инкрементированую&quot;</div><div class="code_line">// потому что здесь я &quot;потеряю&quot; ссылку на x</div></ol></div></div></div></div><br>
Как быть?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501023</guid>
        <pubDate>Mon, 14 Jul 2014 18:20:28 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501023</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3501004'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:45:11+00:00">14.07.14, 16:45</time></span><div class='quote '>то, что ссылается, им не владеет. т.е. не контролирует время жизни</div></div>Воот. А должен. Никто не владеет, некому и считать ссылки. Отсюда в частности и обсуждаемые проблемы. Сырыми поинтерами в Сях/Плюсах тоже никто не владеет, так что знаем, каково это.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501017</guid>
        <pubDate>Mon, 14 Jul 2014 18:15:21 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501017</link>
        <description><![CDATA[D_KEY: А что мы на последних страницах обсуждаем? И вполне себе конструктивно было...<br><br>А shared_ptr лучше явным поведением, отсутствием привязки к иерархии и каким-то другим языковым конструкциям. Это вообще обычный библиотечный класс.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501014</guid>
        <pubDate>Mon, 14 Jul 2014 17:41:56 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501014</link>
        <description><![CDATA[Shaggy: конструктивненько...<br><br>в чём принципиальное отличие от shared_ptr?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501011</guid>
        <pubDate>Mon, 14 Jul 2014 17:33:40 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501011</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>Shaggy</strong>, ну идиотизм же. Зачем ты это защищаешь?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501004</guid>
        <pubDate>Mon, 14 Jul 2014 16:45:11 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3501004</link>
        <description><![CDATA[Shaggy: :lol: <br>
<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=142049&st=3560#' target='_blank'>#3566</a><br>
<br>
1. W:IWriter; а W.Free; убрать<br>
2. procedure Build(W:TWriter; S:string);<br>
3.<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">&nbsp;&nbsp;TNoRefObject = class(TObject, IInterface)</div><div class="code_line">&nbsp;&nbsp;protected</div><div class="code_line">&nbsp;&nbsp; &nbsp;function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function _AddRef: Integer; stdcall;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function _Release: Integer; stdcall;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TNoRefObject.QueryInterface(const IID: TGUID; out Obj): HResult;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;if GetInterface(IID, Obj) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := 0</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := E_NOINTERFACE;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TNoRefObject._AddRef: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := MAXINT;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TNoRefObject._Release: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := MAXINT;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
и<br>
  TWriter = class(TNoRefObject, IWriter)<br>
<br>
выбор варианта зависит от того, что же ты на самом деле хотел <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2014-07-14T17:04:01+00:00">14.07.14, 17:04</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500992'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:03:14+00:00">14.07.14, 16:03</time></span><div class='quote '>На создаваемый объект ссылается то, что в данный момент владеет его Self-ом. Не знаю, кто этим является в Дельфях, наверно неосязаемое ничто, тогда вопросов, кроме уже поднятых не мною, нет.</div></div><br>
то, что ссылается, им не владеет. т.е. не контролирует время жизни <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500992'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:03:14+00:00">14.07.14, 16:03</time></span><div class='quote '>В Дельфи что, в натуре считается нормальным, когда интерфейсы живут сами по себе безо всяких их реализующих объектов</div></div><br>
на основании чего был сделан этот вывод? это физически неозможно<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500992'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:03:14+00:00">14.07.14, 16:03</time></span><div class='quote '>Не запутались там в своих ссылках ещё, нет?</div></div><br>
а вы в своих?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500992'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T16:03:14+00:00">14.07.14, 16:03</time></span><div class='quote '>Снова вопрошаю: на кой хрен считать интерфейсы?</div></div><br>
считаем ссылки, сколько раз запросили интерфейс(любой) столько и ссылок имеется understand?]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500999</guid>
        <pubDate>Mon, 14 Jul 2014 16:18:20 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500999</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T14:32:47+00:00">14.07.14, 14:32</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500931'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T13:47:51+00:00">14.07.14, 13:47</time></span><div class='quote '>Как это никто не ссылается, если ты обращаешься к нему? 0 возможен только как промежуточное состояние внутри некоторой операции со ссылкой (в процессе создания и возможного удаления удаления объекта). Объект с 0 счётчиком не должен существовать.</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">procedure Foo(x: IInterface);</div><div class="code_line">...</div><div class="code_line">Foo(TInterfacedObject.Create);</div></ol></div></div></div></div><br>
Объект создается до вызова процедуры, счетчик = 0, передается в процедуру по интерфейсу, счетчик увеличивается до единицы. Процедура завершается, счетчик уменьшается до нуля, объект уничтожается. Все как бы хорошо.<br>
<br>
Но, как следствие, с полями (и, видимо, с переменными) это не прокатывает.<br>
<br>
Кстати, что происходит в C++-ных ARC-объектах в таких случаях (создание in-place и тут же передача в процедуру)?</div></div><br>
В C++ за то, будет у тебя подсчет или нет, отвечают ссылки. Соответственно, если принимаешь на вход shared_ptr, то утечки не будет. Если принимаешь сырой указатель и кто-то передал туда результат new, то будет утечка.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500992</guid>
        <pubDate>Mon, 14 Jul 2014 16:03:14 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500992</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500928'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T13:31:35+00:00">14.07.14, 13:31</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500880'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T10:17:48+00:00">14.07.14, 10:17</time></span><div class='quote '>И создаваемый объект уже имеет счётчик 1, что однозначно отличает его состояние &quot;только что создан&quot; от &quot;последняя ссылка освобождена&quot;. </div></div><br>
что хранит счётчик?...  количество ссылок<br>
кто ссылается на создаваемый объект?...  никто <br>
чему равен счётчик?... 0</div></div>На создаваемый объект ссылается то, что в данный момент владеет его Self-ом. Не знаю, кто этим является в Дельфях, наверно неосязаемое ничто, тогда вопросов, кроме уже поднятых не мною, нет. А вот в Плюсах этим нечто является отнюдь не ничто, а вполне осязаемый объект шаред-поинтера. Возможно временный, если речь идёт о, скажем, возврате по значению из функции, в любом случае инк при инициализации моего объекта и последующий дек в деструкторе временного не дадут счётчику упасть в нуль. Да здравствует семантика значений.<br>
В Дельфи что, в натуре считается нормальным, когда интерфейсы живут сами по себе безо всяких их реализующих объектов? Не запутались там в своих ссылках ещё, нет? Снова вопрошаю: на кой хрен считать интерфейсы?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500983</guid>
        <pubDate>Mon, 14 Jul 2014 15:23:03 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500983</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T14:52:09+00:00">14.07.14, 14:52</time></span><div class='quote '>Ну тогда вернись к моему первому примеру и объясни какого хрена там вызывается деструктор при выходе из процедуры Build.<br>
<br>
приведи свой код, который компилируется и не работает</div></div><br>
<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">program Test;</div><div class="code_line">&nbsp;</div><div class="code_line">{$APPTYPE CONSOLE}</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.res}</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;SysUtils,</div><div class="code_line">&nbsp;&nbsp;Classes;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;IWriter = interface</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Write(S: string);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Flush;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TWriter = class(TInterfacedObject, IWriter)</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;FLines: TStringList;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor Create;</div><div class="code_line">&nbsp;&nbsp; &nbsp;destructor &nbsp;Destroy; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Write(S: string); virtual;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Flush; virtual;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TWriter.Create;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">&nbsp;&nbsp;FLines := TStringList.Create;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">destructor TWriter.Destroy;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;FLines.Free;</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TWriter.Write(S: string);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;FLines.Add(S);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TWriter.Flush;</div><div class="code_line">var i: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 0 to FLines.Count - 1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp;WriteLn(FLines[i]);</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;W: TWriter;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Build(W: IWriter; S: string);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;W.Write(S);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;W := TWriter.Create;</div><div class="code_line">&nbsp;&nbsp;Build(W, &#39;Foo&#39;);</div><div class="code_line">&nbsp;&nbsp;Build(W, &#39;Bar&#39;);</div><div class="code_line">&nbsp;&nbsp;W.Flush;</div><div class="code_line">&nbsp;&nbsp;W.Free;</div><div class="code_line">&nbsp;&nbsp;ReadLn;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
<br>
Слегка перепутал объявление. Тем не менее делфизм не перестает быть делфизмом от этого. И ни от какого языка такого поведения не ожидается, т.к. не интерфейс хранит счетчик и управляет им, а объект.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500969</guid>
        <pubDate>Mon, 14 Jul 2014 14:52:09 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500969</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500965'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T14:47:56+00:00">14.07.14, 14:47</time></span><div class='quote '>Ну тогда вернись к моему первому примеру и объясни какого хрена там вызывается деструктор. </div></div><br>
твой пример не компилируется<br>
да, я могу, как ты говоришь, исправить &quot;опечатки&quot;<br>
и я это уже сделал, у меня всё работает<br>
но это уже получился мой пример<br>
<br>
приведи свой код, который компилируется и не работает]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500965</guid>
        <pubDate>Mon, 14 Jul 2014 14:47:56 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500965</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=142049&view=findpost&p=3500961'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2014-07-14T14:40:10+00:00">14.07.14, 14:40</time></span><div class='quote '>ничем</div></div><br>
Ну тогда вернись к моему первому примеру и объясни какого хрена там вызывается деструктор при выходе из процедуры Build.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500961</guid>
        <pubDate>Mon, 14 Jul 2014 14:40:10 +0000</pubDate>
        <title>Есть ли будущее у DELPHI?</title>
        <link>https://forum.sources.ru/index.php?showtopic=142049&amp;view=findpost&amp;p=3500961</link>
        <description><![CDATA[Shaggy: ничем]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      </channel>
      </rss>
	