<?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>&#34;Клуб программистов&#34; – материалы по Delphi и С++ &#187; Delphi</title>
	<atom:link href="http://www.programmersclub.ru/category/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.programmersclub.ru</link>
	<description>Сайт клуба программистов</description>
	<lastBuildDate>Tue, 07 Feb 2012 18:42:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Чтение из Excel и валидация. Можно ли как-то ускорить данный процесс?</title>
		<link>http://www.programmersclub.ru/%d0%a7%d1%82%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b8%d0%b7-excel-%d0%b8-%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b0%d1%86%d0%b8%d1%8f-%d0%9c%d0%be%d0%b6%d0%bd%d0%be-%d0%bb%d0%b8-%d0%ba%d0%b0%d0%ba-%d1%82%d0%be/</link>
		<comments>http://www.programmersclub.ru/%d0%a7%d1%82%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b8%d0%b7-excel-%d0%b8-%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b0%d1%86%d0%b8%d1%8f-%d0%9c%d0%be%d0%b6%d0%bd%d0%be-%d0%bb%d0%b8-%d0%ba%d0%b0%d0%ba-%d1%82%d0%be/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 12:53:49 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[чтение данных]]></category>
		<category><![CDATA[чтение из excel]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4601</guid>
		<description><![CDATA[Перейду сразу к вопросу. Есть Excel-файл с 9 колонками и 1000 строк, т.е. 9000 ячеек. Читаю данные из файла. Результат: Чтение из Excel и валидация = 00:00:06:805. Это очень долго: 9000 ячеек прочесть за ~7 секунд. Можно ли как-то ускорить данный процесс? ReportCube Заполняем вариантный массив из файла FileXLS, что очень быстро, а с массивом [...]]]></description>
			<content:encoded><![CDATA[<p>Перейду сразу к вопросу. Есть Excel-файл с 9 колонками и 1000 строк, т.е. 9000 ячеек. Читаю данные из файла. Результат: Чтение из Excel и валидация = 00:00:06:805. Это очень долго: 9000 ячеек прочесть за ~7 секунд. Можно ли как-то ускорить данный процесс?<span id="more-4601"></span></p>
<p><strong>ReportCube</strong><br />
Заполняем вариантный массив из файла FileXLS, что очень быстро, а с массивом делаем всё, что угодно<br />
<pre><code>var<br />
XLWork, XLApp,VarArrFromExcel: Variant;<br />
begin<br />
XLApp:= CreateOleObject('Excel.Application' );<br />
try<br />
XLApp.DisplayAlerts := false;<br />
XLApp.WorkBooks.Open(FileXLS);<br />
XLWork := XLApp.Workbooks[1].WorkSheets[1];<br />
//Всё в вариантный массив<br />
VarArrFromExcel := XLWork.UsedRange.Value2;<br />
finally<br />
XLApp.ActiveWorkBook.Close;<br />
XLApp.Quit;<br />
XLApp := Unassigned;<br />
end;<br />
end;</code></pre></p>
<p><a href="http://programmersforum.ru/showthread.php?t=179290">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%a7%d1%82%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b8%d0%b7-excel-%d0%b8-%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b0%d1%86%d0%b8%d1%8f-%d0%9c%d0%be%d0%b6%d0%bd%d0%be-%d0%bb%d0%b8-%d0%ba%d0%b0%d0%ba-%d1%82%d0%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Загрузить файл из папки с программой</title>
		<link>http://www.programmersclub.ru/%d0%97%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%b8%d1%82%d1%8c-%d1%84%d0%b0%d0%b9%d0%bb-%d0%b8%d0%b7-%d0%bf%d0%b0%d0%bf%d0%ba%d0%b8-%d1%81-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%be%d0%b9/</link>
		<comments>http://www.programmersclub.ru/%d0%97%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%b8%d1%82%d1%8c-%d1%84%d0%b0%d0%b9%d0%bb-%d0%b8%d0%b7-%d0%bf%d0%b0%d0%bf%d0%ba%d0%b8-%d1%81-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%be%d0%b9/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 12:46:38 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4599</guid>
		<description><![CDATA[Данный файл не найден. Проверьте,что путь и имя файла указаны верно. Также у тех у кого Delphi установлен. Все файлы на месте! У файлов полный путь. Shouldercannon Проще везде, где обращаешься к файлам писать тема на форуме]]></description>
			<content:encoded><![CDATA[<p>Данный файл не найден. Проверьте,что путь и имя файла указаны верно. Также у тех у кого Delphi установлен. Все файлы на месте! У файлов полный путь.<span id="more-4599"></span></p>
<p><strong>Shouldercannon</strong><br />
Проще везде, где обращаешься к файлам писать<br />
<pre><code>ExtractfilePath(Application.ExeName) + 'твой файл'</code></pre></p>
<p><a href="http://programmersforum.ru/showthread.php?t=179036">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%97%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%b8%d1%82%d1%8c-%d1%84%d0%b0%d0%b9%d0%bb-%d0%b8%d0%b7-%d0%bf%d0%b0%d0%bf%d0%ba%d0%b8-%d1%81-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%be%d0%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Удалить все повторения в строке</title>
		<link>http://www.programmersclub.ru/%d0%a3%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d0%b2%d1%81%d0%b5-%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-%d1%81%d1%82%d1%80%d0%be%d0%ba%d0%b5/</link>
		<comments>http://www.programmersclub.ru/%d0%a3%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d0%b2%d1%81%d0%b5-%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-%d1%81%d1%82%d1%80%d0%be%d0%ba%d0%b5/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 12:27:24 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[повторения в строке]]></category>
		<category><![CDATA[поиск]]></category>
		<category><![CDATA[строки]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4587</guid>
		<description><![CDATA[Нужен рабочий алгоритм для оболочки PascalABC.Net нахождения подстроки в строке. Mister.V Решил проблему следующим способом, вот код: Функции AnsiReplaceStr в PascalABC.NET нет, как и нет библиотеки StrUtils, но зато в нём оказался класс для работы со строками. Аналог выглядит как тема на форуме]]></description>
			<content:encoded><![CDATA[<p>Нужен рабочий алгоритм для оболочки PascalABC.Net нахождения подстроки в строке.<span id="more-4587"></span></p>
<p><strong>Mister.V</strong><br />
Решил проблему следующим способом, вот код:<br />
<pre><code>constructor WordsOUT.Create(BD:spisok; var s:string);<br />
var<br />
   o:link;<br />
   i:byte := 1;<br />
begin<br />
   while i < 30 do<br />
   begin<br />
   o:=BD.begr;<br />
   while  o^.b do<br />
   begin<br />
      if o^.data <> '' then<br />
      s:= s.Replace(o^.data,' ');<br />
      o:=o^.next;<br />
   end;<br />
   inc(i)<br />
   end;<br />
end;</code></pre></p>
<p>Функции AnsiReplaceStr в PascalABC.NET нет, как и нет библиотеки StrUtils, но зато в нём оказался класс для работы со строками.<br />
Аналог<br />
<pre><code>StrPage := AnsiReplaceStr(StrPage, 'подстрока', '#');</code></pre></p>
<p>выглядит как<br />
<pre><code>StrPage:= StrPage.Replace('подстрока', '#');</code></pre></p>
<p><a href="http://programmersforum.ru/showthread.php?t=178764&#038;page=2">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%a3%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d0%b2%d1%81%d0%b5-%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-%d1%81%d1%82%d1%80%d0%be%d0%ba%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как в treeview узнать индекс узла по которому был click?</title>
		<link>http://www.programmersclub.ru/%d0%9a%d0%b0%d0%ba-%d0%b2-treeview-%d1%83%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d0%b8%d0%bd%d0%b4%d0%b5%d0%ba%d1%81-%d1%83%d0%b7%d0%bb%d0%b0/</link>
		<comments>http://www.programmersclub.ru/%d0%9a%d0%b0%d0%ba-%d0%b2-treeview-%d1%83%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d0%b8%d0%bd%d0%b4%d0%b5%d0%ba%d1%81-%d1%83%d0%b7%d0%bb%d0%b0/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 12:19:59 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[TreeView]]></category>
		<category><![CDATA[событие]]></category>
		<category><![CDATA[узел]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4585</guid>
		<description><![CDATA[Есть поля в treeview c каталогами и подкаталогами, нада при нажатии подкаталог выполнять какое нить действие ( к пирмеру присвоить переменной значение). Stilet тема на форуме]]></description>
			<content:encoded><![CDATA[<p>Есть поля в treeview c каталогами и подкаталогами, нада при нажатии подкаталог выполнять какое нить действие ( к пирмеру присвоить переменной значение).<span id="more-4585"></span></p>
<p><strong>Stilet</strong><br />
<pre><code>procedure TForm1.TreeView1Click(Sender: TObject);<br />
begin<br />
..:=TTreeView(sender).Selected.Index;<br />
end;</code></pre></p>
<p><a href="http://programmersforum.ru/showthread.php?t=178116">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%9a%d0%b0%d0%ba-%d0%b2-treeview-%d1%83%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d0%b8%d0%bd%d0%b4%d0%b5%d0%ba%d1%81-%d1%83%d0%b7%d0%bb%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Исходник программы &#171;азбука Морзе&#187;</title>
		<link>http://www.programmersclub.ru/%d0%98%d1%81%d1%85%d0%be%d0%b4%d0%bd%d0%b8%d0%ba-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d1%8b-%d0%b0%d0%b7%d0%b1%d1%83%d0%ba%d0%b0-%d0%9c%d0%be%d1%80%d0%b7%d0%b5/</link>
		<comments>http://www.programmersclub.ru/%d0%98%d1%81%d1%85%d0%be%d0%b4%d0%bd%d0%b8%d0%ba-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d1%8b-%d0%b0%d0%b7%d0%b1%d1%83%d0%ba%d0%b0-%d0%9c%d0%be%d1%80%d0%b7%d0%b5/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 14:24:21 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Исходники]]></category>
		<category><![CDATA[азбука Морзе]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4582</guid>
		<description><![CDATA[Азбука Морзе В азбуке Морзе (код Морзе) каждой букве соответствует комбинация из длинных посылок (тире) и коротких посылок (точек). За единицу длительности в телеграфной азбуке принимается длительность точки. Длительность тире равняется длительности трех точек. Пауза между знаками в букве &#8211; одна точка, а между буквами в слове 3 точки. Пауза между словами 7 точек. Код [...]]]></description>
			<content:encoded><![CDATA[<p>Азбука Морзе 	 </p>
<p>В азбуке Морзе (код Морзе) каждой букве соответствует комбинация из длинных посылок (тире) и коротких посылок (точек). За единицу длительности в телеграфной азбуке принимается длительность точки. Длительность тире равняется длительности трех точек. Пауза между знаками в букве &#8211; одна точка, а между буквами в слове 3 точки. Пауза между словами 7 точек. </p>
<p><span id="more-4582"></span></p>
<p>Код Морзе используется для передачи сигналов в радиосвязи, гидроакустической, световой и звуковой сигнализациях. </p>
<p><strong>raxp</strong><br />
метод воспроизведения:</p>
<pre><code>var i: integer = 0;</p>
<p>procedure TForm1.Image1Click(Sender: TObject);<br />
begin<br />
 TIMER1.Enabled:= TRUE<br />
end;</p>
<p>procedure TForm1.Timer1Timer(Sender: TObject);<br />
begin<br />
 gen1.ResetAM;<br />
 gen1.Prepare;<br />
 gen1.Frequency:= 500;</p>
<p> INC(I); if i> length(slovo) then begin<br />
   timer1.Enabled:= false;<br />
   i:= 0<br />
 end;</p>
<p> if slovo<em></em>= '.' then begin gen1.Duration:=100;  gen1.Play end;<br />
 if slovo<em></em>= '-' then begin gen1.Duration:= timer1.Interval; gen1.Play end<br />
end;</code></pre>
<legend>Вложения</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td><img class="inlineimg" src="http://programmersforum.ru/images/1070/attach/zip.gif" alt="Тип файла: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="http://programmersforum.ru/attachment.php?attachmentid=45404&amp;d=1323974287" target="_blank">mz_res.zip</a> (236.5 Кб)</td>
</tr>
<tr>
<td><img class="inlineimg" src="http://programmersforum.ru/images/1070/attach/pdf.gif" alt="Тип файла: pdf" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="http://programmersforum.ru/attachment.php?attachmentid=45405&amp;d=1323974287" target="_blank">Виртуальные приборы. Синтезатор азбуки Морзе (Минск).pdf</a> (264.8 Кб)</td>
</tr>
</table>
<p><strong>“Кодировка” транспорта на таможне	</strong><br />
 С 1 июня 2010 для временно ввозимого и вывозимого через границу Российской Федерации транспорта утверждена технология штрихового кодирования. Начиная с первого дня этого нововведения, на декларации будет крепиться наклейка со специальным кодом, по которому в дальнейшем в базе данных таможенники смогут узнать об автотранспортном средстве всю необходимую информацию.</p>
<p>Приказ “Об утверждении Технологии штрихового кодирования при проведении таможенного контроля транспортных средств” от 1 июня был опубликован Федеральной таможенной службой. </p>
<p>Согласно данному документу, на временно ввозимые и вывозимые через границу Российской Федерации автотранспортные средства будет наноситься штрихкод. </p>
<p>Такой процедуре подлежат автомобили, мотоциклы, самоходная техника, полуприцепы и прицепы. Для этого не имеет никакого значения, кто и в каких целях будет использовать свое транспортное средство – физические или юридические лица, совершающие обычную поездку, пассажирскую или грузоперевозки. </p>
<p>При пересечении границы штрихкод будет наклеиваться на въездную и выездную декларации о транспортном средстве, копии стандартных документов перевозчика, транзитные декларации и пассажирские таможенные декларации. </p>
<p>Информация о вышеупомянутых транспортных средствах будет собираться ведомством в единую базу данных. </p>
<p>Историческая справка. При попытке разработать технологию считывания информации о продукте, американец Норман Джозеф Вудленд начертил первый штрихкод на песке. Для использования в работе таможни, <a href="http://www.logipark.ru/">таможенных брокеров</a>, он расширил точки и тире из Азбуки Морзе и сделал из них вертикальные линии. Далее для прочтения штрихкодов он приспособил технологию оптического саундтрека, которую используют в кино.</p>
<p><a href="http://programmersforum.ru/showthread.php?t=178924">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%98%d1%81%d1%85%d0%be%d0%b4%d0%bd%d0%b8%d0%ba-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d1%8b-%d0%b0%d0%b7%d0%b1%d1%83%d0%ba%d0%b0-%d0%9c%d0%be%d1%80%d0%b7%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как в коснольном приложении открыть диалог сохранения?</title>
		<link>http://www.programmersclub.ru/%d0%9a%d0%b0%d0%ba-%d0%b2-%d0%ba%d0%be%d1%81%d0%bd%d0%be%d0%bb%d1%8c%d0%bd%d0%be%d0%bc-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b8-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d1%82%d1%8c-%d0%b4/</link>
		<comments>http://www.programmersclub.ru/%d0%9a%d0%b0%d0%ba-%d0%b2-%d0%ba%d0%be%d1%81%d0%bd%d0%be%d0%bb%d1%8c%d0%bd%d0%be%d0%bc-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b8-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d1%82%d1%8c-%d0%b4/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 12:25:49 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[TopenDialog]]></category>
		<category><![CDATA[TSaveDialog]]></category>
		<category><![CDATA[диалог]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4577</guid>
		<description><![CDATA[Диалог сохранения или открытия тоже? 3D Hunter по теме: используй класс TOpenDialog/TSaveDialog. С TSaveDialog работать аналогично. тема на форуме]]></description>
			<content:encoded><![CDATA[<p>Диалог сохранения или открытия тоже?<span id="more-4577"></span></p>
<p><strong>3D Hunter</strong><br />
по теме: используй класс TOpenDialog/TSaveDialog.</p>
<pre><code>program Project1;</p>
<p>{$APPTYPE CONSOLE}</p>
<p>uses<br />
  SysUtils, dialogs;</p>
<p>var<br />
  od:TOpenDialog;<br />
begin<br />
  try<br />
    try<br />
      od:=TOpenDialog.Create(nil);<br />
      if od.Execute(0) then ShowMessage(od.FileName);<br />
    finally<br />
      FreeAndNil(od);<br />
    end;<br />
  except<br />
    on E: Exception do<br />
      Writeln(E.ClassName, ': ', E.Message);<br />
  end;<br />
end.</code></pre>
<p>С TSaveDialog работать аналогично.</p>
<p><a href="http://programmersforum.ru/showthread.php?t=179504">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%9a%d0%b0%d0%ba-%d0%b2-%d0%ba%d0%be%d1%81%d0%bd%d0%be%d0%bb%d1%8c%d0%bd%d0%be%d0%bc-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b8-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d1%82%d1%8c-%d0%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Поддержка drag and drop для Tlistview?</title>
		<link>http://www.programmersclub.ru/%d0%9f%d0%be%d0%b4%d0%b4%d0%b5%d1%80%d0%b6%d0%ba%d0%b0-drag-and-drop-%d0%b4%d0%bb%d1%8f-tlistview/</link>
		<comments>http://www.programmersclub.ru/%d0%9f%d0%be%d0%b4%d0%b4%d0%b5%d1%80%d0%b6%d0%ba%d0%b0-drag-and-drop-%d0%b4%d0%bb%d1%8f-tlistview/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 12:19:14 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[drag and drop]]></category>
		<category><![CDATA[tlistview]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4575</guid>
		<description><![CDATA[пишу маленькую программу с использованием Tlistview не подскажете как обработать сообщение WM_DROPFILES только для Tlistview ,а не для всей формы или как сделать поддержку drag and drop для Tlistview? вот пример grafgrial тема на форуме]]></description>
			<content:encoded><![CDATA[<p>пишу маленькую программу с использованием Tlistview не подскажете как обработать сообщение WM_DROPFILES только для Tlistview ,а не для всей формы или как сделать поддержку drag and drop для Tlistview?<span id="more-4575"></span></p>
<p>вот пример<br />
<strong>grafgrial</strong><br />
<pre><code>procedure TForm1.DropFiles(var msg: TMessage);<br />
var<br />
  i, count  : integer;<br />
  dropFileName : array [0..511] of Char;<br />
  MAXFILENAME: integer;<br />
begin<br />
  MAXFILENAME := 511;<br />
  count := DragQueryFile(msg.WParam, $FFFFFFFF, dropFileName, MAXFILENAME);<br />
  for i := 0 to count - 1 do<br />
  begin<br />
    DragQueryFile(msg.WParam, i, dropFileName, MAXFILENAME);<br />
    Memo1.Lines.Add(dropFileName);<br />
  end;<br />
  DragFinish(msg.WParam);<br />
end;</p>
<p>procedure TForm1.FormCreate(Sender: TObject);<br />
begin<br />
DragAcceptFiles(ListView1.Handle, True);<br />
end;</code></pre></p>
<p><a href="http://programmersforum.ru/showthread.php?t=179742">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%9f%d0%be%d0%b4%d0%b4%d0%b5%d1%80%d0%b6%d0%ba%d0%b0-drag-and-drop-%d0%b4%d0%bb%d1%8f-tlistview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание структуры бд для рерайтера</title>
		<link>http://www.programmersclub.ru/%d0%a1%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d1%8b-%d0%b1%d0%b4-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b5%d1%80%d0%b0%d0%b9%d1%82%d0%b5%d1%80%d0%b0/</link>
		<comments>http://www.programmersclub.ru/%d0%a1%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d1%8b-%d0%b1%d0%b4-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b5%d1%80%d0%b0%d0%b9%d1%82%d0%b5%d1%80%d0%b0/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 12:16:25 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[рерайт]]></category>
		<category><![CDATA[рерайтер]]></category>
		<category><![CDATA[синонимайзер]]></category>
		<category><![CDATA[синонимы]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4573</guid>
		<description><![CDATA[Neeter Гораздо лучше использовать файл базы со своей структурой. У меня структура такая: Если рерайтер (я создаю именно рерайтер, а не простой синонимайзер) найдет в тексте слово &#171;чуток&#187;, то он его заменит на &#171;немного&#187;, &#171;чуточку&#187;, &#171;чуть-чуть&#187;, &#171;малость&#187; или &#171;слегка&#187;. И не надо для каждого слова писать отдельную строчку, а тем более группу. Главная сложность &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><span id="more-4573"></span><strong>Neeter</strong><br />
Гораздо лучше использовать файл базы со своей структурой. У меня структура такая:<br />
<pre><code>%<br />
немного|чуточку|чуток|чуть-чуть|малость|слегка<br />
поправить|отредактировать|изменить</code></pre></p>
<p>Если рерайтер (я создаю именно рерайтер, а не простой синонимайзер) найдет в тексте слово &laquo;чуток&raquo;, то он его заменит на &laquo;немного&raquo;, &laquo;чуточку&raquo;, &laquo;чуть-чуть&raquo;, &laquo;малость&raquo; или &laquo;слегка&raquo;. И не надо для каждого слова писать отдельную строчку, а тем более группу.</p>
<p>Главная сложность &#8211; создать интерпретатор для такой структуры файлов. Ведь рерайтер &#8211; это не просто замена одиночных слов на их синонимы. Вот, например, я создал и обработку конструкций &laquo;который&raquo;:</p>
<pre><code>$noun:subject , котор@ -- Эт@ $noun:derivative<br />
* $noun:object , котор@ $verb -- * $noun , $participle:derivative-verb</code></pre>
<p>Не буду объяснять, что значат эти строчки, могу только сказать, что здесь происходит замена конструкции &laquo;который&raquo; на причастный оборот. Например, предложение: &laquo;Человек, который любит подумать&raquo;, заменится на: &laquo;Человек, любящий подумать&raquo;.</p>
<p>Но вы уж тут сами разбирайтесь с такими сложными обработками. Я приведу код только синонимизации (потому что код рерайтера я никому не отдам&#8230;  ).</p>
<p>После вырезки некоторых строчек кода, управляющих обработкой формул типа &laquo;который&raquo;, получилось вот это:</p>
<pre><code>//Анализ формулы -- это вы можете спокойно убрать, так же как и знак "%" из базы синонимов<br />
function TFormMain.FormulaAnalyse(Formula: string): TVarStr;<br />
var i: integer;<br />
begin<br />
 SetLength(Result, 0);<br />
 SetLength(Result, 1);</p>
<p> for i := 1 to Length(Formula) do<br />
 begin<br />
  if Formula<em></em> = ' ' then<br />
  begin<br />
   SetLength(Result, Length(Result) + 1);<br />
   Continue;<br />
  end;</p>
<p>  Result[Length(Result)-1] := Result[Length(Result)-1] + Formula<em></em>;<br />
 end;<br />
end;</p>
<p>//Это просто проверка символа на причастность к алфавиту <img src='http://www.programmersclub.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  т.е. буква ли это<br />
function TFormMain.InAlphabet(Symbol: char; upper: boolean): boolean;<br />
var i: integer;<br />
begin<br />
 Result := false;<br />
 for i := 0 to 32 do<br />
  if upper then<br />
  begin<br />
   if AnsiUpperCase(Alphabet<em></em>) = Symbol then<br />
   begin<br />
    Result := true; Exit;<br />
   end;<br />
  end else<br />
  begin<br />
   if Alphabet<em></em> = Symbol then //На всякий случай: Alphabet - это массив из литер<br />
   begin<br />
    Result := true; Exit;<br />
   end;<br />
  end;<br />
end;</p>
<p>//Сама процедура генерации синонимизированного текста<br />
procedure TFormMain.SentencesGenerate;<br />
var<br />
 i, j, o, y, u: integer;<br />
 AnalyseFile: TStrings;<br />
 Formula: string;<br />
 FormComp: TVarStr;<br />
 SentComp: TVarStr;<br />
 Synonims: TVarStr;<br />
 s: string;<br />
 c: char;<br />
 n: integer;<br />
 check_f: boolean;<br />
label l;<br />
begin<br />
 AnalyseFile := TStringList.Create;<br />
 try<br />
  AnalyseFile.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Data\Syn_Words.txt');<br />
  Formula := AnalyseFile[0];</p>
<p>  FormComp := FormulaAnalyse(Formula);</p>
<p>  for i := 0 to Length(Sentences) - 1 do<br />
  begin<br />
   SentComp := SentenceAnalyse(Sentences<em></em>);</p>
<p>   for j := 0 to Length(FormComp) - 1 do<br />
   begin<br />
    if FormComp[j] = '%' then<br />
    begin<br />
     for o := 0 to Length(SentComp) - 1 do<br />
     begin<br />
      s := '';</p>
<p>      for y := 1 to AnalyseFile.Count - 1 do<br />
      begin<br />
       Synonims := SynonimsAnalyse(AnalyseFile[y]);<br />
       for u := 0 to Length(Synonims) - 1 do<br />
       begin<br />
        if Synonims<span style="text-decoration:underline"></span> = SentComp[o] then<br />
        begin<br />
         l: n := Random(Length(Synonims));</p>
<p>         if Synonims[n] = SentComp[o] then goto l<br />
         else s := Synonims[n];<br />
         Break;<br />
        end;<br />
       end;<br />
      end;</p>
<p>      if s <> '' then memGen.Text := memGen.Text + ' ' + s<br />
      else begin<br />
       if Length(SentComp[o]) = 1 then<br />
       begin<br />
        c := SentComp[o][1];<br />
        if (not InAlphabet(c, False)) and (not InAlphabet(c, true)) then<br />
         memGen.Text := memGen.Text + SentComp[o]<br />
        else memGen.Text := memGen.Text + ' ' + SentComp[o];<br />
       end<br />
       else memGen.Text := memGen.Text + ' ' + SentComp[o];<br />
      end;<br />
     end;<br />
    end;<br />
   end;<br />
  end;</p>
<p>  memGen.Text := Trim(memGen.Text);<br />
 finally<br />
  AnalyseFile.Free;<br />
  SetLength(FormComp, 0);<br />
  SetLength(SentComp, 0);<br />
  SetLength(Synonims, 0);<br />
 end;<br />
end;</p>
<p>//Анализ предложения; идет разбивка на слова и пунктуационные знаки<br />
function TFormMain.SentenceAnalyse(Sentence: string): TVarStr;<br />
var i: integer;<br />
begin<br />
 SetLength(Result, 0);<br />
 SetLength(Result, 1);</p>
<p> for i := 1 to Length(Sentence) do<br />
 begin<br />
  if Sentence<em></em> = ' ' then<br />
  begin<br />
   SetLength(Result, Length(Result) + 1);<br />
   Continue;<br />
  end;</p>
<p>  if (not InAlphabet(Sentence<em></em>, false)) and (not InAlphabet(Sentence<em></em>, true)) then<br />
  begin<br />
   SetLength(Result, Length(Result) + 1);<br />
   Result[Length(Result)-1] := Sentence<em></em>;<br />
   SetLength(Result, Length(Result) + 1);<br />
   Continue;<br />
  end;</p>
<p>  Result[Length(Result)-1] := Result[Length(Result)-1] + Sentence<em></em>;<br />
 end;<br />
end;</p>
<p>//Анализ базы синонимов; идет разбивка на слова-синонимы<br />
function TFormMain.SynonimsAnalyse(Synonims: string): TVarStr;<br />
var i: integer;<br />
begin<br />
 SetLength(Result, 0);<br />
 SetLength(Result, 1);<br />
 for i := 1 to Length(Synonims) do<br />
 begin<br />
  if Synonims<em></em> = '|' then<br />
  begin<br />
   SetLength(Result, Length(Result) + 1);<br />
   Continue;<br />
  end;</p>
<p>  Result[Length(Result)-1] := Result[Length(Result)-1] + Synonims<em></em>;<br />
 end;<br />
end;</p>
<p>//Анализ текста; идет разбивка на предложения<br />
procedure TFormMain.TextAnalysis;<br />
var<br />
 i: integer;<br />
 NewSentence: boolean;<br />
begin<br />
 memText.Text := Trim(memText.Text);</p>
<p> NewSentence := true;<br />
 SetLength(Sentences, 0);<br />
 for i := 1 to Length(memText.Text) do<br />
 begin<br />
  if NewSentence then SetLength(Sentences, Length(Sentences) + 1);<br />
  Sentences[Length(Sentences)-1] := Sentences[Length(Sentences)-1] + memText.Text<em></em>;<br />
  if (memText.Text<em></em> = '.') and ((i = Length(memText.Text)) or (InAlphabet(memText.Text<em></em>, true))) then<br />
   NewSentence := true<br />
  else NewSentence := false;<br />
 end;<br />
end;</p>
<p>//При нажатии на кнопку генерации синонимизированного текста.<br />
procedure TFormMain.bt_GenerateClick(Sender: TObject);<br />
begin<br />
 memGen.Clear;</p>
<p> TextAnalysis;<br />
 SentencesGenerate;<br />
end;</code></pre>
<p>Код меняйте под свои нужды. Но вопросов по его работе задавать не стоит. Отвечать не буду. Во всем можете разобраться сами.</p>
<p>Прикреплю вам испытательный полигон для опытов.</p>
<p>P.S. Генерация происходит при нажатии второй &laquo;безкартиночной&raquo; кнопки на toolbar&#8217;е</p>
<legend>Вложения</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td><img class="inlineimg" src="http://programmersforum.ru/images/1070/attach/rar.gif" alt="Тип файла: rar" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="http://programmersforum.ru/attachment.php?attachmentid=28288&amp;d=1280568737">Syn.rar</a> (219.2 Кб)</td>
</tr>
</table>
<p><a href="http://programmersforum.ru/showthread.php?t=108844&#038;page=2">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%a1%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d1%8b-%d0%b1%d0%b4-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b5%d1%80%d0%b0%d0%b9%d1%82%d0%b5%d1%80%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Получить набираемое слово в memo</title>
		<link>http://www.programmersclub.ru/%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d0%bd%d0%b0%d0%b1%d0%b8%d1%80%d0%b0%d0%b5%d0%bc%d0%be%d0%b5-%d1%81%d0%bb%d0%be%d0%b2%d0%be-%d0%b2-memo/</link>
		<comments>http://www.programmersclub.ru/%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d0%bd%d0%b0%d0%b1%d0%b8%d1%80%d0%b0%d0%b5%d0%bc%d0%be%d0%b5-%d1%81%d0%bb%d0%be%d0%b2%d0%be-%d0%b2-memo/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 12:12:22 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[получить слово]]></category>
		<category><![CDATA[слово]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4571</guid>
		<description><![CDATA[psycho-coder Вложения imlist.rar (169.5 Кб) тема на форуме]]></description>
			<content:encoded><![CDATA[<p><span id="more-4571"></span><strong>psycho-coder</strong><br />
<pre><code>procedure TForm1.Memo1Change(Sender: TObject);<br />
begin<br />
  if Tag > 0 then<br />
  begin<br />
    Memo1.SelStart := Tag;<br />
    Memo1.SelLength := Abs(Length(Memo1.Text) - Tag);<br />
    Label2.Caption := Memo1.SelText;<br />
    Memo1.SelStart := Length(Memo1.Text);<br />
  end;<br />
end;</p>
<p>procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);<br />
begin<br />
  if Key = #32 then Tag := Memo1.SelStart;<br />
end;</code></pre></p>
<legend>Вложения</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td><img class="inlineimg" src="http://programmersforum.ru/images/1070/attach/rar.gif" alt="Тип файла: rar" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="http://programmersforum.ru/attachment.php?attachmentid=28274&amp;d=1280520947">imlist.rar</a> (169.5 Кб)</td>
</tr>
</table>
<p><a href="http://programmersforum.ru/showthread.php?t=108844">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d0%bd%d0%b0%d0%b1%d0%b8%d1%80%d0%b0%d0%b5%d0%bc%d0%be%d0%b5-%d1%81%d0%bb%d0%be%d0%b2%d0%be-%d0%b2-memo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Записать StringGrid1 в двумерный массив</title>
		<link>http://www.programmersclub.ru/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-stringgrid1-%d0%b2-%d0%b4%d0%b2%d1%83%d0%bc%d0%b5%d1%80%d0%bd%d1%8b%d0%b9-%d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2/</link>
		<comments>http://www.programmersclub.ru/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-stringgrid1-%d0%b2-%d0%b4%d0%b2%d1%83%d0%bc%d0%b5%d1%80%d0%bd%d1%8b%d0%b9-%d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 21:49:59 +0000</pubDate>
		<dc:creator>Chas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[StringGrid]]></category>
		<category><![CDATA[заполнить массив]]></category>
		<category><![CDATA[массив]]></category>

		<guid isPermaLink="false">http://www.programmersclub.ru/?p=4564</guid>
		<description><![CDATA[Serge_Bliznykov ну, если с заполнением StringGrida проблем нет (все ячейки корректно заполнены) и нет зафиксированных столбцов/строк (с заголовками), то так: тема на форуме]]></description>
			<content:encoded><![CDATA[<p><span id="more-4564"></span><strong>Serge_Bliznykov</strong><br />
ну, если с заполнением StringGrida проблем нет (все ячейки корректно заполнены)<br />
и нет зафиксированных столбцов/строк (с заголовками), то так:</p>
<pre><code>for i:=0 to StringGrid1.RowCount - 1 do<br />
   for j:=0 to StringGrid1.ColCount - 1 do<br />
      A<em></em> := StrToFloat( StringGrid1.Cells[ j, i ];</code></pre>
<p><a href="http://programmersforum.ru/showthread.php?t=164203">тема на форуме</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersclub.ru/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-stringgrid1-%d0%b2-%d0%b4%d0%b2%d1%83%d0%bc%d0%b5%d1%80%d0%bd%d1%8b%d0%b9-%d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

