<?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=266385&amp;view=findpost&amp;p=2226212</guid>
        <pubDate>Tue, 24 Mar 2009 05:14:44 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2226212</link>
        <description><![CDATA[Slukad: А вот и попробую&#33; =)]]></description>
        <author>Slukad</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2225459</guid>
        <pubDate>Mon, 23 Mar 2009 09:44:55 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2225459</link>
        <description><![CDATA[2005fs: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Чтобы писать меньше было</div></div><br>
Вот как раз не верно. В ArrayList нету строгой типизации, соответственно приходиться часто писать дополнительный код для контроля типов. Кроме того ArrayList значительно уступает в производительности списку List&lt;T&gt; из-за упаковки и приведения типов.<br>
<br>
По-этому настоятельно рекомендую использовать List&lt;T&gt; вместо ArrayList&#39;а]]></description>
        <author>2005fs</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2225339</guid>
        <pubDate>Mon, 23 Mar 2009 08:07:29 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2225339</link>
        <description><![CDATA[Slukad: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=266385&view=findpost&p=2222812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Miha_Dnepr &#064; <time class="tag-quote__quoted-time" datetime="2009-03-19T18:51:01+00:00">19.03.09, 18:51</time></span><div class='quote '>ArrayList? :) а зачем тогда List&lt;T&gt; придумали?</div></div><br>
Чтобы писать меньше было =)))) Шутка. Просто привык я к нему =)]]></description>
        <author>Slukad</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2224952</guid>
        <pubDate>Sun, 22 Mar 2009 15:52:23 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2224952</link>
        <description><![CDATA[beetlewar: Спасибо за советы]]></description>
        <author>beetlewar</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2222812</guid>
        <pubDate>Thu, 19 Mar 2009 18:51:01 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2222812</link>
        <description><![CDATA[Miha_Dnepr: ArrayList? :) а зачем тогда List&lt;T&gt; придумали?]]></description>
        <author>Miha_Dnepr</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2222246</guid>
        <pubDate>Thu, 19 Mar 2009 08:07:38 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2222246</link>
        <description><![CDATA[Slukad: Путем хранения в одном аррейлисте объектов с ссылками друг на друга... <br><br>Хотя можно даже еще проще - составить класс, объект которого может ссылаться на несколько других таких же объектов и строить из них дерево изменений. Ненужное удалять целыми ветками, между действиями бегать по ссылкам]]></description>
        <author>Slukad</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2221782</guid>
        <pubDate>Wed, 18 Mar 2009 16:03:03 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2221782</link>
        <description><![CDATA[2005fs: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>ArrayList-а за глаза хватит. Одного причем</div></div><br>
Как же ты собираешся &quot;помнить&quot; отмененные действия, чтобы им можно было сделать потом Redo<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Обычно Undo/Redo операции реализуются применением шаблона проектирования Kоманда (Command pattern).</div></div><br>
И я про это :yes:]]></description>
        <author>2005fs</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2221474</guid>
        <pubDate>Wed, 18 Mar 2009 10:38:40 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2221474</link>
        <description><![CDATA[MIF: Обычно Undo/Redo операции реализуются  применением шаблона проектирования Kоманда (Command pattern).]]></description>
        <author>MIF</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2221424</guid>
        <pubDate>Wed, 18 Mar 2009 09:36:06 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2221424</link>
        <description><![CDATA[Slukad: ArrayList-а за глаза хватит. Одного причем]]></description>
        <author>Slukad</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2219637</guid>
        <pubDate>Mon, 16 Mar 2009 13:30:40 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2219637</link>
        <description><![CDATA[2005fs: TerraGhost, одного списка явно недостаточно, поскольку нужно делать функциональность для 2 действий: Undo и Redo, по-этому нежны стеки, и кроме того не один а два.<br><br>В первый стек(Undo) вписуються последовательность действий. Во второй стек(Redo) вписуються из первого данные для которых была выполнена отмена(Undo). И наооборот при операции Redo данные передаються из стека Redo в стек Undo. При действиях пользователя (кроме команд Undo) стек Redo стираеться. <br>Я себе представляю именно такой механизм.<br><br>Думаю стоит объединить мое описание и паттерн Command]]></description>
        <author>2005fs</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2218686</guid>
        <pubDate>Sun, 15 Mar 2009 15:13:57 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2218686</link>
        <description><![CDATA[Miha_Dnepr: <strong class='tag-b'>beetlewar</strong>, советую почитать - юолее чем исчерпывающее руководство + примеры.<br>
<a class='tag-url' href='http://www.rsdn.ru/article/dotnet/backforward.xml' target='_blank'>http://www.rsdn.ru/article/dotnet/backforward.xml</a>]]></description>
        <author>Miha_Dnepr</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2211356</guid>
        <pubDate>Thu, 05 Mar 2009 19:01:04 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2211356</link>
        <description><![CDATA[TerraGhost: Я бы предложил не использовать стековый подход. Сдаётся мне, это очень долго будет прокручивать всю историю с конца до начала.<br>
<br>
<br>
Я бы тебе предложил простой List&lt;Action&gt;, с действиями которые сериализуются, что то типа этого:<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">&nbsp;&nbsp; &nbsp;[Serializable]</div><div class="code_line">&nbsp;&nbsp; &nbsp;public abstract class Action</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;[Serializable]</div><div class="code_line">&nbsp;&nbsp; &nbsp;public class CursorMovedLeft : Action</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public readonly int CurrentPosition;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public readonly int Offset;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;[Serializable]</div><div class="code_line">&nbsp;&nbsp; &nbsp;public class SelectedTextChanged : Action</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public readonly int StartPosition;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public readonly int Length;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Что, бы не прокручивать изменения целиком, сделай опорные состояния, которые запомнят текущие данные редактор, такие как текст, положение курсора, выделенный текст.]]></description>
        <author>TerraGhost</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2211351</guid>
        <pubDate>Thu, 05 Mar 2009 18:51:05 +0000</pubDate>
        <title>Реализация отмены действия</title>
        <link>https://forum.sources.ru/index.php?showtopic=266385&amp;view=findpost&amp;p=2211351</link>
        <description><![CDATA[beetlewar: Как осуществить отмену действий в текстовом редакторе? <br>Есть предположение, что нужно реализовать буфер, сохраняющий последовательность действий и возвращающий при необходимости тип действия на n-ом шаге и состояние редактора. В перспективе будет что-то вроде стека, отображающего последовательность действий. При переходе от одной позиции стека - к другой будет происходить переход к указанной точке в буфере и производиться последовательность действий расположенных между этими точками. По-моему как-то мутарно.<br>Как обычно такие вещи реализуются? Кто имеет опыт, поделитесь пожалуйста.]]></description>
        <author>beetlewar</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	