<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MikeSoft &#187; Советы</title>
	<atom:link href="http://mikesoft.ws/category/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikesoft.ws</link>
	<description>Practical Software</description>
	<lastBuildDate>Sun, 15 Nov 2009 10:37:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>MDI и Windows Vista</title>
		<link>http://mikesoft.ws/2009/08/13/mdi-windows-vista/</link>
		<comments>http://mikesoft.ws/2009/08/13/mdi-windows-vista/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:53:53 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[MDI]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=202</guid>
		<description><![CDATA[В Windows Vista во многих MDI приложениях часто наблюдается баг (субъективно &#8211; в SP1/SP2 значительно реже) при максимизации дочернего окна &#8211; оно занимает не всю отведенную ему область. Справа остается небольшое пространство. Ответ был найден на MSDN форуме, но применительно к MFC. Но в Delphi эта проблема также встречается и решается аналогично. Вот исходный код, [...]]]></description>
			<content:encoded><![CDATA[<p>В Windows Vista во многих MDI приложениях часто наблюдается баг (субъективно &#8211; в SP1/SP2 значительно реже) при максимизации дочернего окна &#8211; оно занимает не всю отведенную ему область. Справа остается небольшое пространство.<span id="more-202"></span></p>
<p>Ответ был найден на MSDN форуме, но применительно к MFC. Но в Delphi эта проблема также встречается и решается аналогично. Вот исходный код, который поможет исправить проблему. Его нужно добавить к дочернему окну (FormStyle = fsMDIChild).</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">type</span>
  TMDIChild <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #000066;">&#40;</span>TForm<span style="color: #000066;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">private</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> WMGetMinMaxInfo<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> Message<span style="color: #000066;">:</span> TWMGetMinMaxInfo<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> message WM_GETMINMAXINFO<span style="color: #000066;">;</span>
  <span style="color: #000066;">...</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000066;">...</span>
<span style="color: #808080; font-style: italic;">(*
Оригинальный комментарий к решению:
--------------------------------------------------------------------------------
Заплатка на MFC версий ниже 8.0
&nbsp;
В MFC версиях 8.0 на Vista есть проблема, когда
окно дочернего MDI фрейма максимизируется при максимизированном
родительском MDI фрейме. В этом случаи максимальный размер окна ограничивается
данными структуры MINMAXINFO, которые были вычесленны ранее
системой при заданных стилях окна.
&nbsp;
Однако сам MFC в процессе ресайза этого окна любит менять ему
стили на ходу в результате система путается и MINMAXINFO содержит неправильные
данные.
&nbsp;
Это было не критично на XP и более старых системах, т.к. ошибка
была в 1 пиксель, теперь же на Vista, когда бордюр имеет занчительную ширину (4
пикселя), эта ошибка стала заметна (как раз на эту ширину - 4 пикселя).
&nbsp;
Чтобы исправить ошибу я вручную правлю структуру MINMAXINFO под
максимально возможный размер окна.
--------------------------------------------------------------------------------
&nbsp;
Smike: Похоже этот баг перенесли и в Delphi :)
*)</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TMDIChild<span style="color: #000066;">.</span><span style="color: #006600;">WMGetMinMaxInfo</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> Message<span style="color: #000066;">:</span> TWMGetMinMaxInfo<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> WindowState &lt;&gt; wsMaximized <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #000000; font-weight: bold;">inherited</span>
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #000000; font-weight: bold;">with</span> Message<span style="color: #000066;">.</span><span style="color: #006600;">MinMaxInfo</span><span style="color: #000066;">^</span> <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span> &lt; ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span> <span style="color: #000000; font-weight: bold;">then</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span> &lt; ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span> <span style="color: #000000; font-weight: bold;">then</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #808080; font-style: italic;">{ // Если не жалко пару десятков килобайт
  // в исполняемом файле - можно использовать функции модуля Math
  if WindowState &lt;&gt; wsMaximized then
    inherited
  else
    with Message.MinMaxInfo^ do
    begin
      ptMaxTrackSize.X := Max(ptMaxTrackSize.X, ptMaxSize.X);
      ptMaxTrackSize.Y := Max(ptMaxTrackSize.Y, ptMaxSize.Y);
    end;}</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2009/08/13/mdi-windows-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>И снова о пользе Windows Vista</title>
		<link>http://mikesoft.ws/2007/11/22/windows-vista-usability/</link>
		<comments>http://mikesoft.ws/2007/11/22/windows-vista-usability/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 09:58:42 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[TFileOpenDialog]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=97</guid>
		<description><![CDATA[Во время разработки своей новой программы я решил вплотную взглянуть на новый компонент Delphi 2007 — TFileOpenDialog, который инкапсулирует современный диалог открытия файлов в Windows Vista. Те функции, что я в нем увидел, меня приятно удивили. В первую очередь, я нашел в нем ту функциональность, которая как раз была мне нужна. В приложении необходимо создавать [...]]]></description>
			<content:encoded><![CDATA[<p>Во время разработки своей новой программы я решил вплотную взглянуть на новый  компонент Delphi 2007 — <span style="font-weight: bold;">TFileOpenDialog</span>,  который инкапсулирует современный диалог открытия файлов в <span style="font-weight: bold;">Windows Vista</span>. Те функции, что я в нем увидел,  меня приятно удивили.<span id="more-97"></span></p>
<p>В первую очередь, я нашел в нем ту  функциональность, которая как раз была мне нужна. В приложении необходимо  создавать и выбирать файлы в определенной папке и её подпапках. В TOpenDialog  нельзя запретить смену каталога. В TFileOpenDialog — можно! Появилось событие  <span style="font-weight: bold;">OnFolderChanging</span>, где вот таким вот  простым кодом мы можем запретить, например, переходить в папки нижнего уровня по  сравнению с начальной:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">FolderChangingEvent</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">var</span> CanChange<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  CanChange <span style="color: #000066;">:</span><span style="color: #000066;">=</span> AnsiStartsText<span style="color: #000066;">&#40;</span>FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">DefaultFolder</span><span style="color: #000066;">,</span>
                              FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">FileName</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>Это  как раз реализует нужную мне функциональность. Это одна из тех &laquo;мелочей&raquo;,  которыми наполнена Windows Vista, но которые так приятно облегчают работу и  программистов, и пользователей.</p>
<p>Какие же еще возможности приподносит нам  TFileOpenDialog? Это события <span style="font-weight: bold;">OnFileOkClick</span>, которое позволяет запретить  закрывать диалог в случае неудовлетворительного выбора, и <span style="font-weight: bold;">OnShareViolation</span>, позволяющее задавать реакцию  на выбор файлов, используемых другими приложениями.</p>
<p>Сравним также свойства <span style="font-weight: bold;">Options</span> старого и нового  диалогов. Визуальное сравнение возможных значений этих свойств дало понять, что  большинство параметров имеют аналоги и в старом диалоге (выделены жирным):</p>
<pre>TFileDialogOption = (
 <span style="font-weight: bold;">fdoOverWritePrompt</span>,
 fdoStrictFileTypes,
 <span style="font-weight: bold;">fdoNoChangeDir</span>,
 fdoPickFolders,
 fdoForceFileSystem,
 fdoAllNonStorageItems,
 <span style="font-weight: bold;">fdoNoValidate</span>,
 <span style="font-weight: bold;">fdoAllowMultiSelect</span>,
 <span style="font-weight: bold;">fdoPathMustExist</span>,
 <span style="font-weight: bold;">fdoFileMustExist</span>,
 <span style="font-weight: bold;">fdoCreatePrompt</span>,
 <span style="font-weight: bold;">fdoShareAware</span>,
 <span style="font-weight: bold;">fdoNoReadOnlyReturn</span>,
 <span style="font-weight: bold;">fdoNoTestFileCreate</span>,
 fdoHideMRUPlaces,
 fdoHidePinnedPlaces,
 <span style="font-weight: bold;">fdoNoDereferenceLinks</span>,
 <span style="font-weight: bold;">fdoDontAddToRecent</span>,
 <span style="font-weight: bold;">fdoForceShowHidden</span>,
 fdoDefaultNoMiniMode,
 fdoForcePreviewPaneOn
);</pre>
<p>Остановимся на значениях, не имеющих аналогов. Часть из  них настраивает вид самого диалога:</p>
<ul>
<li><span style="font-weight: bold;">fdoForcePreviewPaneOn</span> отображает  панель предварительного просмотра;</li>
<li><span style="font-weight: bold;">fdoDefaultNoMiniMode</span> запрещает  открытие диалога в сжатом виде (только строка ввода имени файла) — только для  диалогов сохранения;</li>
<li><span style="font-weight: bold;">fdoHidePinnedPlaces</span> убирает <span style="font-style: italic;">стандартные</span> избранные ссылки, собственные мы  по прежнему можем задавать (!);</li>
<li><span style="font-weight: bold;">fdoHideMRUPlaces</span> описывается как  &laquo;Hide places of recently opened or saved items&raquo;, но реально мне не удалось пока  понять, о чем идет речь.</li>
</ul>
<p>Значение <span style="font-weight: bold;">fdoPickFolders</span> позволяет использовать диалог  открытия файлов как диалог выбора папок, а <span style="font-weight: bold;">fdoStrictFileTypes</span> позволяет указать, что нужно  сохранять файл только с одним из предопределенных расширений.</p>
<p>А вот  свойство <span style="font-weight: bold;">fdoNoChangeDir</span> хоть и есть среди  возможных значений, но как уверяет справочная система, это значение не  используется. Это и не удивительно, ведь есть более гибкое событие OnFolderChanging.</p>
<p>В новом диалоге есть и другие полезные свойства и  методы. С помощью коллекции <span style="font-weight: bold;">FavoriteLinks</span> можно добавлять собственные избранные ссылки. Свойства <span style="font-weight: bold;">FileNameLabel</span>, <span style="font-weight: bold;">OKButtonLabel</span>, <span style="font-weight: bold;">Title</span> позволяют изменить названия отдельных  элементов интерфейса диалога (текст перед полем ввода файла, текст кнопки OK и  заголовок диалога). Старый TOpenDialog позволял изменять только собственный  заголовок. Коллекция <span style="font-weight: bold;">FileTypes</span> более  наглядно, чем свойство Filter из TOpenDialog позволяет задавать фильтры для  диалога. Особенно удобно, что это индексированный список, таким образом легко  можно проверить, какому расширению соответствует тот или иной тип, используя  свойство <span style="font-weight: bold;">FileTypeIndex</span>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/11/22/windows-vista-usability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Баги в imouse.pas</title>
		<link>http://mikesoft.ws/2007/11/10/imouse/</link>
		<comments>http://mikesoft.ws/2007/11/10/imouse/#comments</comments>
		<pubDate>Sat, 10 Nov 2007 10:30:43 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[IntelliMouse]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=109</guid>
		<description><![CDATA[С грустью только что узнал, что в imouse.pas CodeGear RAD Studio 2007 остались старые баги с неосвобождаемой памятью, что конечно не особо страшно, но неприятно и может здорово затруднить отладку при ReportMemoryLeaksOnShutdown := True. Поэтому решил выложить свой, давно уже исправленный на свой вкус, модуль imouse, который я назвал MousePan. Скачать модифицированный вариант можно здесь: [...]]]></description>
			<content:encoded><![CDATA[<p>С грустью только что узнал, что в imouse.pas CodeGear RAD Studio 2007 остались  старые баги с неосвобождаемой памятью, что конечно не особо страшно, но  неприятно и может здорово затруднить отладку при ReportMemoryLeaksOnShutdown :=  True. Поэтому решил выложить свой, давно уже исправленный на свой вкус, модуль  imouse, который я назвал MousePan.</p>
<p>Скачать модифицированный вариант можно здесь:<br />
<a href="http://mikesoft.ws/components/mousepan/">http://mikesoft.ws/components/mousepan/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/11/10/imouse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что заставляет тормозить Windows Vista Start Menu?</title>
		<link>http://mikesoft.ws/2007/09/09/windows-vista-start-menu/</link>
		<comments>http://mikesoft.ws/2007/09/09/windows-vista-start-menu/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 09:04:50 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=83</guid>
		<description><![CDATA[Как известно, в Windows Vista обычное иерархическое меню Пуск было заменено более удобным &#171;древовидным&#187;. Но данное нововведение имеет и обратную сторону: бывает, что это меню работает медленнее, чем привычное старое. И вот, оказывается, почему. Самая главная причина замедления работы меню Пуск это подсветка новых инсталлированных программ. Мной замечено, что при наличии новых ярлыков в меню [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно, в Windows Vista обычное иерархическое меню Пуск было заменено  более удобным &laquo;древовидным&raquo;. Но данное нововведение имеет и обратную сторону:  бывает, что это меню работает медленнее, чем привычное старое. И вот,  оказывается, почему.<span id="more-83"></span></p>
<p>Самая главная причина замедления работы меню Пуск  это подсветка новых инсталлированных программ. Мной замечено, что при наличии  новых ярлыков в меню <span style="font-weight: bold;">All Programs</span>, оно  начинает открываться с ощутимым замедлением, особенно если добавлена целая папка  программ с большим количеством элементов. С чем это связано, мне трудно сказать.  Может проверяется время создания у всех подэлементов новой папки с ярлыками.  Отключение этой возможности помогает сильно сэкономить начальное время открытия  меню All Programs.</p>
<p>А вот буквально только что провел интересное  наблюдение. Если в меню есть ярлык на *.url-файл и он находится в зоне  видимости, то Windows Explorer начинает сильно потреблять ресурсы процессора.  Причина этого также неведома. Хотя, как по мне, то делать такие ярлыки — дурной  тон, лучше размещать сами *.url-файлы в меню.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/09/09/windows-vista-start-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>О пользе MSBuild в Delphi</title>
		<link>http://mikesoft.ws/2007/09/01/delphi-msbuild/</link>
		<comments>http://mikesoft.ws/2007/09/01/delphi-msbuild/#comments</comments>
		<pubDate>Sat, 01 Sep 2007 08:46:34 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[MSBuild]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=81</guid>
		<description><![CDATA[Рано или поздно в любых, более или менее серьезных проектах встает необходимость в автоматической компиляции или компиляции в один шаг. Зачем? Самая элементарная причина: чтобы быстро скомпилировать проект, не открывая его в среде. Например, был разработан крупный проект, включающий не один десяток компонентов, модулей, библиотек. Среда во время разработки сильно обросла посторонними и собственными компонентами [...]]]></description>
			<content:encoded><![CDATA[<p>Рано или поздно в любых, более или менее  серьезных проектах встает необходимость в автоматической компиляции или <a href="http://russian.joelonsoftware.com/Articles/TheJoelTest.html">компиляции в  один шаг</a>. Зачем? Самая элементарная причина: чтобы быстро скомпилировать  проект, не открывая его в среде. Например, был разработан крупный проект,  включающий не один десяток компонентов, модулей, библиотек. Среда во время  разработки сильно обросла посторонними и собственными компонентами и становится  трудно различить, какой компонент используется в данном проекте, а какой — нет.  Переносимости у проекта в данном случае никакой. На другом компьютере с  установленной средой Delphi его не получится скомпилировать: придется переносить  и устанавливать все необходимые компоненты, причем вспоминать, какой из них  нужен, а какой нет. Это крайне неудобно, а если еще принять во внимание, что  данный процесс подвержен ошибкам, то становится совсем невесело.</p>
<p><span id="more-81"></span></p>
<p>Издревле  эту проблему решали с помощью <a href="http://en.wikipedia.org/wiki/Makefile">make-файлов</a>, которые были  придуманы в <a title="Bell Labs" href="http://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>, вероятно для сборки  первых юниксов. Вместе с Delphi поставлялась и поставляется консольная утилита  make.exe, которая и занимается сборкой проекта используя makefile. Но данный  подход имеет существенный недостаток: makefile нужно писать вручную, в Delphi  нет инструментов для его написания. А это значит, что придется задавать вручную  пути ко всем компонентам, описывать параметры компиляции, директории для вывода  промежуточных (DCU, OBJ) и конечных файлов (EXE, DLL) файлов.</p>
<p>К сожалению, такой подход долгое время был единственным возможным способом  автоматической компиляции проектов. Несмотря на то, что все параметры,  использующиеся средой Delphi для компиляции, всегда сохранялись вместе с  проектом. До Delphi 7 включительно это были *.cfg и *.dof-файлы. В первом  сохранялись параметры компиляции, а во втором все опции диалога Project Options.  Потом появились файлы *.bdsproj, где хранилась вся информация о проекте. Но это  не дало никаких преимуществ: компилятор DCC32 не понимает этих файлов и  соответственно автоматическая компиляция невозможна.</p>
<p>Серьезный сдвиг  произошел в Delphi 2007, где используется <a href="http://en.wikipedia.org/wiki/MSBuild"><span style="font-weight: bold;">MSBuild Engine</span></a> для компиляции проектов. Как  оказалось, это дает именно то что нужно.</p>
<p>В Delphi 2007 на смену файлам  *.bdsproj пришли файлы *.dproj (Delphi-проекты, для C++ Builder 2007 они имеют  расширение *.cbproj). Эти файлы не просто содержат параметры проекта, они заодно  и являются файлами инструкций сборки для MSBuild. &laquo;Скормив&raquo; такой файл MSBuild  мы сможем скомпилировать проект так же, как если бы мы компилировали его в среде  Delphi: с учетом всех путей, конфигураций, опций компилятора и используемых  директорий.</p>
<p>С помощью MSBuild процесс автоматической сборки проекта  становится до элементарного простым. Составляем файл Build.cmd примерно такого  содержимого:</p>
<pre>call rsvars.bat

msbuild MyProject.dproj /p:configuration=Release</pre>
<p>Первая  строчка вызывает файл rsvars.bat. Он находится в $(BDS)Bin и содержит  переменные среды для MSBuild. Затем вызывается сам MSBuild, причем указывается  конфигурация Release.</p>
<p>Таким образом мы получили простой и удобный  инструмент, который позволяет легко, в один шаг скомпилировать проект любой  сложности точно так же просто, как это делается в среде Delphi.</p>
<p>Замечание: в <strong>Delphi 2009</strong> конфигурация передается параметром config вместо configuration. Таким образом комманда компиляции будет выглядеть:</p>
<pre>call rsvars.bat

msbuild MyProject.dproj /p:config=Release</pre>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/09/01/delphi-msbuild/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
