<?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>Delphi блог Димаса &#187; delphi</title>
	<atom:link href="http://parsers.info/cat/koding/delphi-koding/feed/" rel="self" type="application/rss+xml" />
	<link>http://parsers.info</link>
	<description>Delphi блог Димаса: программирование на delphi, парсеры, статьи, размышления</description>
	<lastBuildDate>Sun, 22 Apr 2012 09:42:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Модуль MyItems</title>
		<link>http://parsers.info/2012/04/modul-myitems/</link>
		<comments>http://parsers.info/2012/04/modul-myitems/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 09:42:08 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Исходники]]></category>
		<category><![CDATA[TListView]]></category>
		<category><![CDATA[модуль]]></category>
		<category><![CDATA[таблица]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=822</guid>
		<description><![CDATA[Писал для себя, поэтому долго не думал, как назвать :) В модуле описан класс TMyItem, упрощающий работу с TListView в режиме таблицы (ViewStyle &#8211; vsReport). type TMyItem=Class(TObject) Caption: String; SubItems: TStrings; constructor Create; destructor Destroy; override; procedure AddValueToItem(Value: String); procedure ApplyColumnWidthsToList(List: TListView); procedure AddItemToList(List: TListView); procedure ApplyColumnsToList(List: TListView); procedure ItemToMyItem(List: TListView; ItemIndex: Integer); procedure CaptionToMyItem(List: [...]]]></description>
			<content:encoded><![CDATA[<p>Писал для себя, поэтому долго не думал, как назвать :)</p>
<p>В модуле описан класс TMyItem, упрощающий работу с TListView в режиме таблицы (ViewStyle &#8211; vsReport).</p>
<pre>type
  TMyItem=Class(TObject)
    Caption: String;
    SubItems: TStrings;
    constructor Create;
    destructor Destroy; override;
    procedure AddValueToItem(Value: String);
    procedure ApplyColumnWidthsToList(List: TListView);
    procedure AddItemToList(List: TListView);
    procedure ApplyColumnsToList(List: TListView);
    procedure ItemToMyItem(List: TListView; ItemIndex: Integer);
    procedure CaptionToMyItem(List: TListView);
    procedure CaptionWidthsToMyItem(List: TListView);
    function IsNumeric: Boolean;
    procedure StrToMyItem(s: String);
    function MyItemToStr: String;
    procedure Clear;
    function Count: Integer;
  end;<span id="more-822"></span></pre>
<p>По порядку:</p>
<p><strong>Caption </strong>и <strong>SubItems </strong>– аналогично элементам у TListView, решил их не прятать.</p>
<p><strong>AddValueToItem </strong>– добавить значение. Если элемент ещё не заполнен, пойдёт в Caption, иначе в SubItems.</p>
<p><strong>AddItemToList </strong>– добавить (скопировать) созданный элемент в указанный TListView.</p>
<p><strong>ApplyColumnsToList </strong>– наш элемент содержит имена  столбцов. Присвоить их.</p>
<p><strong>ApplyColumnWidthsToList </strong>– наш элемент содержит ширину столбцов. Присвоить.</p>
<p>В последнем случае нам нужно быть уверенными, что все элементы легко преобразуются в целые числа, иначе вызывается исключение. Для этого можно воспользоваться функцией <strong>IsNumeric</strong>.</p>
<p><strong>ItemToMyItem </strong>– наоборот, берём информацию из существующего элемента TListView.</p>
<p><strong>CaptionToMyItem</strong>, <strong>CaptionWidthsToMyItem </strong>– ApplyColumnsToList и ApplyColumnWidthsToList в обратном направлении.</p>
<p><strong>StrToMyItem </strong>– преобразуем строку в TMyItem. Формат строки: Caption|SubItem1|SubItem2|&#8230;</p>
<p><strong>MyItemToStr</strong> – формируем такую строку.</p>
<p>Ещё один момент: если мы присваиваем заголовок, и где-нибудь есть знак %, то он исчезнет, а у столбца появится свойство Tag=1. И в обратную сторону знак процента появится, если стоит Tag=1.</p>
<p><a href="http://parsers.info/pub/MyItems.rar">Скачать модуль MyItems</a>.</p>
<p>И при копировании материала с блога, обязательно оставляйте прямую ссылка на <a href="http://parsers.info">http://parsers.info</a>.</p>
<p>В своё время пришлось помучиться с TListView, ибо логически не сразу понятно, как работать с элементами в режиме таблицы. С этими и другими проблемами очень помогали <a href="http://www.cyberforum.ru/">форумы программистов</a>. А сейчас этот модуль написал за две поездки в метро :)</p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://parsers.info/2009/04/modul-crt-dlya-delphi-2/" title="Модуль crt для delphi. (6 Апрель 2009)">Модуль crt для delphi.</a> (1)</li>
	<li><a href="http://parsers.info/2008/10/modul-crt-dlya-delphi/" title="Модуль crt для delphi (24 Октябрь 2008)">Модуль crt для delphi</a> (5)</li>
	<li><a href="http://parsers.info/2010/01/pagerank-dcu-modul-dlya-opredeleniya-pagerank-na-delphi/" title="pagerank.dcu &#8211; модуль для определения pagerank на delphi (30 Январь 2010)">pagerank.dcu &#8211; модуль для определения pagerank на delphi</a> (53)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2012/04/modul-myitems/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>mr.gen v0: исходники</title>
		<link>http://parsers.info/2011/11/mr-gen-v0-isxodniki/</link>
		<comments>http://parsers.info/2011/11/mr-gen-v0-isxodniki/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 10:14:57 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Исходники]]></category>
		<category><![CDATA[генератор по маске]]></category>
		<category><![CDATA[генератор строк]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=792</guid>
		<description><![CDATA[Привет. Сегодня выкладываю исходник первой версии удачной на мой взгляд программы mr.gen. Суть программы: мы вводим определённую маску, программа генерирует текстовый файл с нужными нам комбинациями символов. Чем программма уникальна? Мы можем задать все возможные варианты каждого символа, а программа выдаст все возможные варианты строки с символами во всех возможных их вариантах. Очень много направлений, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-793" title="mr.gen v0 by crystalbit" src="http://parsers.info/wp-content/uploads/2011/11/mr.gen_.png" alt="" width="224" height="77" /></p>
<p>Привет. Сегодня выкладываю исходник первой версии удачной на мой взгляд программы <a href="http://parsers.info/2009/05/mrgen-v01/">mr.gen</a>.</p>
<p>Суть программы: мы вводим определённую маску, программа генерирует текстовый файл с нужными нам комбинациями символов. Чем программма уникальна? Мы можем задать все возможные варианты каждого символа, а программа выдаст все возможные варианты строки с символами во всех возможных их вариантах.</p>
<p>Очень много направлений, в которых программу можно доделать, – <a href="http://parsers.info/2009/05/mrgen-v01-with-symbol-filter/">mr.gen with symbol filter</a>, например. <em>При использовании кода указываем автора, при копировании поста указываем источник.<span id="more-792"></span><br />
</em></p>
<p>Теперь кратко суть программы: mr.gen использует рекурсию:</p>
<pre>procedure rec(f:string;n,len:integer);
var
  i:integer;
  buf:string;
begin
  buf:=marr[n];
  if n=len-1 then begin
    for i:=1 to Length(buf) do
      AddPARR(f+buf[i]);
    Exit;
  end;
  for i:=1 to Length(buf) do
    rec(f+buf[i],n+1,len);
end;</pre>
<p>Процедура AddPARR уже записывает в файл конечный результат, сама процедура rec формирует определённый символ строки и добавляет его к ней. После добавления последнего символа как раз и дописывает в файл результата.</p>
<p><a href="http://parsers.info/soft/mgen.rar">Скачать исходник mr.gen v0.</a></p>
<p><em>С помощью программы ЛовиВКонтакте можно скачивать видео и музыку из социальной сети вконтакте. <a href="http://www.lovivkontakte.ru/">Вконтакте видео</a> и аудио, размещённое и разрешённое к просмотру пользователями.</em></p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li>Нет похожих записей.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2011/11/mr-gen-v0-isxodniki/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Reparser: исходники</title>
		<link>http://parsers.info/2011/11/reparser-isxodniki/</link>
		<comments>http://parsers.info/2011/11/reparser-isxodniki/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 23:17:46 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Исходники]]></category>
		<category><![CDATA[reparser]]></category>
		<category><![CDATA[исходник]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=771</guid>
		<description><![CDATA[Ровно три года назад (ого! – сам думаю, как быстро время летит) написал и выложил на блог программу reparser. Блог уже давно на автономном существовании, нет времени писать. Программирование ушло на второй, если не третий, план – я теперь работаю инженером-конструктором, уже на второй работе. Раньше проектировал сварные металлоконструкции из стальных профильных труб (квадратных и [...]]]></description>
			<content:encoded><![CDATA[<p>Ровно три года назад (ого! – сам думаю, как быстро время летит) написал и выложил на блог программу <a href="http://parsers.info/2008/11/reparser/">reparser</a>.</p>
<p><img class="alignnone size-full wp-image-772" title="Reparser by crystalbit" src="http://parsers.info/wp-content/uploads/2011/11/reparser.png" alt="" width="318" height="179" /><br />
Блог уже давно на автономном существовании, нет времени писать.<span id="more-771"></span> Программирование ушло на второй, если не третий, план – я теперь работаю инженером-конструктором, уже на второй работе. Раньше проектировал сварные металлоконструкции из стальных <a href="http://www.u-stal.ru/catalogue/tubing/cold-deformed">профильных труб</a> (квадратных и прямоугольных), а теперь – более точные детали станков.  А статьи написаны, люди читают, и на этом спасибо. Не так давно один человек попросил исходники reparser&#8217;а, а я пообещал выложить и позабыл. Так вот, выкладываю.</p>
<p><a href="http://parsers.info/pub/reparser-src.rar">Скачать исходники reparser.</a></p>
<p>Выкладываю как есть. Для перестановки частей используется массив строк <em>type  TParse=array[1..9] of string;</em><br />
Парсим строку – делим на части:</p>
<pre>function _parse(str,det:string):TParse;
var
  _out:TParse;
  p,i:integer;
begin
  p:=0;
  i:=1;
  repeat
    _out[i]:=Copy(str,p+Length(det),PosEx1(det,str,p+Length(det))-p-Length(det));
    p:=PosEx(det,str,p+Length(det));
    i:=i+1;
  until (p=0) or (i&gt;=10);
  Result:=_out;
end;</pre>
<p>Просто вырезаем до девяти частей в наш массив, ища позиции разделителя в строке.</p>
<p>Функция для перестановки частей строки местами:</p>
<pre>function _concat(_p:TParse;template:string):string;
var
  _s:string;
  i:integer;
begin
  _s:=template;
  for i:=1 to 9 do
    _s:=StringReplace(_s,'%'+IntToStr(i),_p[i],[rfReplaceAll]);
  Result:=_s;
end;</pre>
<p>В _p у нас уже части строки – это массив, напомню. Template &#8211; шаблон вида <em>%1%2-%3;</em> . Происходит замена вхождений %1..%9 на соответствующие элементы из массива. Не лучший вариант для быстродействия, но это не было моей целью.</p>
<p>При использовании материала или исходника ставить прямую ссылку / указывать, что использовали. Спасибо!</p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://parsers.info/2008/11/krewedko-regger-isxodniki/" title="Krewedko Regger &#8211; исходники (28 Ноябрь 2008)">Krewedko Regger &#8211; исходники</a> (1)</li>
	<li><a href="http://parsers.info/2009/04/poluchenie-puti-k-qip/" title="получение пути к qip. (5 Апрель 2009)">получение пути к qip.</a> (0)</li>
	<li><a href="http://parsers.info/2009/11/mocart-iz-vnutrennego-dinamika-sorokovaya-simfoniya-i-delphi-part-1/" title="Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 1. (23 Ноябрь 2009)">Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 1.</a> (2)</li>
	<li><a href="http://parsers.info/2009/04/modul-crt-dlya-delphi-2/" title="Модуль crt для delphi. (6 Апрель 2009)">Модуль crt для delphi.</a> (1)</li>
	<li><a href="http://parsers.info/2008/10/modul-crt-dlya-delphi/" title="Модуль crt для delphi (24 Октябрь 2008)">Модуль crt для delphi</a> (5)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2011/11/reparser-isxodniki/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Контролируем буфер обмена</title>
		<link>http://parsers.info/2010/10/kontroliruem-bufer-obmena/</link>
		<comments>http://parsers.info/2010/10/kontroliruem-bufer-obmena/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 18:33:10 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[winapi]]></category>
		<category><![CDATA[буфер обмена]]></category>
		<category><![CDATA[работа с окнами]]></category>
		<category><![CDATA[сообщения]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=739</guid>
		<description><![CDATA[Привет. В delphi для работы с буфером обмена есть модуль ClipBoard, ещё можно работать с буфером через api. Но мы сегодня не будем углубляться в работу с буфером. Наша задача &#8211; отследить изменение буфера обмена. Это всё сводится к обработке сообщения WM_DRAWCLIPBOARD, но дело в том, что никто просто так нам его не отправит.  Немного [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://parsers.info/wp-content/uploads/2010/10/clipbrd.jpg"><img class="alignleft size-full wp-image-741" title="Контролируем буфер обмена на delphi" src="http://parsers.info/wp-content/uploads/2010/10/clipbrd.jpg" alt="" width="200" height="250" /></a>Привет. В delphi для работы с буфером обмена есть модуль ClipBoard, ещё можно работать с буфером через api. Но мы сегодня не будем углубляться в работу с буфером. Наша задача &#8211; <strong>отследить изменение буфера обмена</strong>.</p>
<p>Это всё сводится к обработке сообщения <strong>WM_DRAWCLIPBOARD</strong>, но дело в том, что никто просто так нам его не отправит. <span id="more-739"></span></p>
<h3><strong>Немного теории.</strong></h3>
<p>Есть такое понятие, как <em>&laquo;Clipboard chain&raquo; </em>- назовём это цепочкой буфера обмена. Фактически в ней содержится список handle&#8217;ов окон, которым посылается сообщение<strong> WM_DRAWCLIPBOARD. </strong>На самом деле оно посылается только первому окну в цепочке. И каждое окно в этой цепочке должно (обязано :) ) обрабатывать это сообщение и ещё одно, о котором речь пойдёт дальше.</p>
<h3><strong>Поехали!</strong></h3>
<p>Итак, как же нам попасть в эту цепочку? Для этого есть функция <strong>SetClipboardViewer.</strong><br />
Создадим новый проект, на событие создания формы (или в любой другой нужный нам момент) напишем:</p>
<pre name="code" class="delphi">nwnd:=SetClipboardViewer(Handle);</pre>
<p>nwnd &#8211; глобальная переменная типа Cardinal (тот же THandle), в неё мы получили следующий в цепочке handle, она нам пригодится в других процедурах.</p>
<p>Теперь нужно позаботиться о том, чтобы удалять себя из цепочки в том случае, когда нам уже не нужно перехватывать обновление информации в буфере &#8211; например, при закрытии.</p>
<pre name="code" class="delphi">procedure TForm1.FormDestroy(Sender: TObject);
begin
  ChangeClipboardChain(Handle, nwnd);
end;</pre>
<p>Функция  <strong>ChangeClipboardChain</strong> удаляет нас из цепочки. Функция рассылает сообщение <strong>WM_CHANGECBCHAIN</strong> окнам цепочки, нам это сообщение также предстоит обработать. Обычно возвращает false, true только в случае, если наше окно в цепочке было единственным. Нам результат этой функции не очень-то и важен.</p>
<p>Обработаем <strong>WM_CHANGECBCHAIN</strong>. Для тех, кто подзабыл: в раздел private типа TForm1 пишем <em>procedure WMChangeCBChain(var msg: TWMChangeCBChain); message WM_CHANGECBCHAIN;</em> и обрабатываем:</p>
<pre name="code" class="delphi">procedure TForm1.WMChangeCBChain(var msg: TWMChangeCBChain);
begin
 if msg.Remove=nwnd then
   nwnd:=msg.Next
 else
   SendMessage(nwnd, WM_CHANGECBCHAIN, msg.Remove, msg.Next);
end;</pre>
<p>Здесь всё тоже несложно: если удалилось следующее в цепочке окно, берём на заметку &#8211; меняем nwnd на теперь действительное следующее окно. Иначе уведомляем следующее окно, как этого требует цепочка.</p>
<p>Осталось только обработать событие  <strong>WM_DRAWCLIPBOARD</strong>:</p>
<pre name="code" class="delphi">procedure TForm1.WMDrawClipBoard(var msg: TWMDrawClipboard);
begin
 if ClipBoard.HasFormat(CF_TEXT) then
   ShowMessage(ClipBoard.AsText)
 else
   ShowMessage('скопирован не текст');
 SendMessage(nwnd, WM_DRAWCLIPBOARD, 0, 0);
end;</pre>
<p>Вот так вот, всё просто. Смотрим, что скопировано, делаем, что нам нужно, и отправляем сообщение по цепочке дальше.</p>
<p>Не зная об этом, я раньше ставил таймер, который постоянно следил за буфером, &#8211;  систему не тормозило, но это был обходной путь. Всё равно, что арендовать квартиру на месяц, когда нужна только <a href="http://dom2.by/nasutki/">посуточная аренда</a>.</p>
<p>Для ленивых предлагаю <a href="http://parsers.info/pub/parsers_info_clipbrd.rar">скачать исходник</a>.</p>
<p>(c) crystalbit, <a href="http://parsers.info">http://parsers.info<br />
</a>При копировании материала обязательно ставить прямую ссылку на источник.</p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-animatewindow-i-flashwindow/" title="Работаем с окнами. AnimateWindow и FlashWindow. (30 Апрель 2009)">Работаем с окнами. AnimateWindow и FlashWindow.</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-chast-4-funkcii-i-procedury/" title="Работаем с окнами и объектами. Часть 4. Функции и процедуры. (29 Апрель 2009)">Работаем с окнами и объектами. Часть 4. Функции и процедуры.</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-chast-3-poisk-obektov/" title="Работаем с окнами и объектами. Часть 3. Поиск объектов. (24 Апрель 2009)">Работаем с окнами и объектами. Часть 3. Поиск объектов.</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-chast-2/" title="Работаем с окнами и объектами. Часть 2 (22 Апрель 2009)">Работаем с окнами и объектами. Часть 2</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-delphi-api-chast-1/" title="Работаем с окнами и объектами. Delphi. Api. Часть 1 (20 Апрель 2009)">Работаем с окнами и объектами. Delphi. Api. Часть 1</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2010/10/kontroliruem-bufer-obmena/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Определяем WebMoney BL</title>
		<link>http://parsers.info/2010/09/opredelyaem-webmoney-bl/</link>
		<comments>http://parsers.info/2010/09/opredelyaem-webmoney-bl/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 14:42:57 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[webmoney]]></category>
		<category><![CDATA[парсинг]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=718</guid>
		<description><![CDATA[Иногда может потребоваться определить этот небезызвестный показатель в своей программе. Задавшись этим вопросом, полез смотреть, с каких страниц его можно спарсить. Первое, что попадается, это картинка, которая показывается при просмотре аттестата WebMoney (например, вот эта). Далее в заметке буду использовать wmid 000000000000 для примера. Можно и картинку распознать &#8211; не вопрос, но зачем так сложно? [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда может потребоваться определить этот небезызвестный показатель в своей программе.</p>
<p>Задавшись этим вопросом, полез смотреть, с каких страниц его можно спарсить. Первое, что попадается, это картинка, которая показывается при просмотре аттестата WebMoney (например, вот <a rel="nofollow" href="http://stats.wmtransfer.com/Levels/pWMIDLevel.aspx?wmid=000000000000&amp;w=35&amp;h=18&amp;bg=0XDBE2E9">эта</a>). <em>Далее в заметке буду использовать wmid 000000000000 для примера.</em> Можно и картинку распознать &#8211; не вопрос, но зачем так сложно?</p>
<p>Побродив немного по форумам и прочим ссылкам из выдачи, нашёл ещё пару возможностей определить WebMoney BL. Пара скриптов с https и, о чудо, простой скрипт, выдающий основную информацию о сертификате.</p>
<p><span id="more-718"></span></p>
<p>Итак, наша цель сводится к простой задаче парсинга html-страницы.</p>
<p><strong>Что парсим?</strong> http://passport.webmoney.ru/asp/certcard.asp?id=000000000000 &#8211; вот ссылка. Зайдя на неё, видим информацию о: <em>типе аттестата, фио, бизнес-уровне</em> (тот самый BL), <em>дате регистрации</em> и <em>количестве претензий</em>. Мы спарсим только BL, но ничего не стоит потом изменить программу и для парсинга остальных значений.</p>
<p>Для простоты поставим на форму TIdHTTP, TEdit и TButton. В процедуре Button1Click создадим переменные:</p>
<pre name="code" class="delphi">var
 resp: string;
 bl, err: integer;</pre>
</p>
<p>В resp получим код страницы:</p>
<pre name="code" class="delphi"> resp:=IdHTTP1.Get('http://passport.webmoney.ru/asp/certcard.asp?id='+Edit1.Text);</pre>
</p>
<p>Теперь присмотримся к коду страницы: нужное нам значение бизнес-уровня находится сразу после <strong>[BL]:&lt;/span&gt;</strong> и пробела. Чтобы получить это число, скопируем 10 символов после этого фрагмента и используем процедуру Val:</p>
<pre name="code" class="delphi">Val(Copy(resp ,Pos('[BL]:&lt;/span&gt;',resp)+13,10), bl, err);
</pre>
</p>
<p>Если всё сработало правильно (то есть WebMoney не поменяли формат вывода того скрипта), то в bl окажется так нужный нам Business Level, а в err &#8211; 0, если длина BL 10 символов (что вряд ли возможно), 1 в случае ошибки или число от двух до десяти, которое показывает позицию первой &laquo;не цифры&raquo;.</p>
<p>То есть, в случае err=1 мы имеем ошибку, иначе bl получен верно. Весь код:</p>
<pre name="code" class="delphi">procedure TForm1.Button1Click(Sender: TObject);
var
 resp: string;
 bl, err: integer;
begin
 resp:=IdHTTP1.Get('http://passport.webmoney.ru/asp/certcard.asp?id='+Edit1.Text);
 Val(Copy(resp ,Pos('[BL]:&lt;/span&gt;',resp)+13,10), bl, err);
 if err&lt;&gt;1 then
 ShowMessage('WebMoney BL: '+inttostr(bl))
 else
 ShowMessage('error retrieving WebMoney BL');
end;
</pre>
</p>
<p>(c) crystalbit,<a href=" http://parsers.info"> http://parsers.info</a></p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://parsers.info/2010/01/postrochnyj-parsing/" title="Построчный парсинг (22 Январь 2010)">Построчный парсинг</a> (24)</li>
	<li><a href="http://parsers.info/2010/04/parsim-daty-apdejtov-s-glavnoj-pr-cy/" title="Парсим даты апдейтов с главной pr-cy (13 Апрель 2010)">Парсим даты апдейтов с главной pr-cy</a> (104)</li>
	<li><a href="http://parsers.info/2010/01/parsim-csv-i-tsv-v-delphi/" title="Парсим csv и tsv файлы в delphi (12 Январь 2010)">Парсим csv и tsv файлы в delphi</a> (10)</li>
	<li><a href="http://parsers.info/2009/05/kolichestvo-podstrok-v-stroke/" title="Количество подстрок в строке. (21 Май 2009)">Количество подстрок в строке.</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2010/09/opredelyaem-webmoney-bl/feed/</wfw:commentRss>
		<slash:comments>97</slash:comments>
		</item>
		<item>
		<title>Контролируем перемещение формы</title>
		<link>http://parsers.info/2010/09/kontroliruem-peremeshhenie-formy/</link>
		<comments>http://parsers.info/2010/09/kontroliruem-peremeshhenie-formy/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 17:44:53 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[работа с окнами]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=703</guid>
		<description><![CDATA[Сегодня начну пост с того, что недавно пришлось восстановить блог с бэкапа не первой свежести. Связано это с тем, что хостинг прогорел, а я был в области и не успел сделать бэкап. Пропали некоторые последние комментарии и один пост, про то, что блог теперь уже не dofollow, но все комментарии, сделанные до того поста, остались [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><em>Сегодня начну пост с того, что недавно пришлось восстановить блог с бэкапа не первой свежести. Связано это с тем, что хостинг прогорел, а я был в области и не успел сделать бэкап.</em></p>
<p style="text-align: right;"><em>Пропали некоторые последние комментарии и один пост, про то, что блог теперь уже не dofollow, но все комментарии, сделанные до того поста, остались dofollow.</em></p>
<p style="text-align: right;"><em>Плюс хочу выразить благодарность пользователю Alex, который обратил внимание на мелочность и ненужность некоторых заметок. Исправимся :)</em></p>
<p style="text-align: left;">
<p style="text-align: left;">Вполне может оказаться необходимым контролировать перемещение формы пользователем &#8211; будь то некоторая стыковка к границам экрана или необходимость запретить перемещать форму.</p>
<p style="text-align: left;">Мы сперва лезем в Events, видим, что события OnMove нету.</p>
<p style="text-align: left;"><span id="more-703"></span>Итак, существует два события: WM_MOVING и WM_MOVE. Первое передаётся окну, когда его перетаскивают, а второе, когда уже переместили. В принципе, в windows xp и выше (а может ещё и чуть раньше) при перемещении окна курсором оно сразу меняет позицию (в отличие от windows 95, например, там мы перемещали контур окна), WM_MOVE возникает достаточно много раз, поэтому не вижу особого смысла его использовать.</p>
<p>Для примера поставим Label1 на форму. Теперь в раздел private типа TForm1 напишем:</p>
<pre class="delphi">procedure WMMoving (var msg: TWMMoving); message WM_MOVING;</pre>
<p>Это значит, что процедура, которую мы сечас напишем, будет выполняться каждый раз, когда форма перемещается.</p>
<pre class="delphi">procedure TForm1.WMMoving (var msg: TWMMoving);
begin
  Label1.Caption:=IntToStr(msg.DragRect.Left)+';'+IntToStr(msg.DragRect.Top);
end;</pre>
<p>Можно проверить, при перемещении формы в Label1 меняются её координаты.</p>
<p>Хочу добавить, что это заметка, которая не претендует на журнальную статью, но я решил об этом написать, так как передо мной встал вопрос, отражённый в заголовке. Буду и дальше писать конкретно и по теме блога :)</p>
<p>(с) crystalbit, <a href="http://parsers.info">http://parsers.info</a></p>
<p>Вопрос восстановления файлов &#8211; важный вопрос. Если бы всё было так просто, я не потерял бы бд блога, которая сгорела вместе с хостингом (к слову, похоже на то, что каталог с базами специально отформатировали). Программ есть много (та же <a href="http://getrecuva.ru/">Recuva</a>), но они не всегда могут помочь.</p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-animatewindow-i-flashwindow/" title="Работаем с окнами. AnimateWindow и FlashWindow. (30 Апрель 2009)">Работаем с окнами. AnimateWindow и FlashWindow.</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-chast-4-funkcii-i-procedury/" title="Работаем с окнами и объектами. Часть 4. Функции и процедуры. (29 Апрель 2009)">Работаем с окнами и объектами. Часть 4. Функции и процедуры.</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-chast-3-poisk-obektov/" title="Работаем с окнами и объектами. Часть 3. Поиск объектов. (24 Апрель 2009)">Работаем с окнами и объектами. Часть 3. Поиск объектов.</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-chast-2/" title="Работаем с окнами и объектами. Часть 2 (22 Апрель 2009)">Работаем с окнами и объектами. Часть 2</a> (0)</li>
	<li><a href="http://parsers.info/2009/04/rabotaem-s-oknami-i-obektami-delphi-api-chast-1/" title="Работаем с окнами и объектами. Delphi. Api. Часть 1 (20 Апрель 2009)">Работаем с окнами и объектами. Delphi. Api. Часть 1</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2010/09/kontroliruem-peremeshhenie-formy/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Про сороковую симфонию Моцарта</title>
		<link>http://parsers.info/2010/06/pro-sorokovuyu-simfoniyu-mocarta/</link>
		<comments>http://parsers.info/2010/06/pro-sorokovuyu-simfoniyu-mocarta/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 12:24:34 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[внутренний динамик]]></category>
		<category><![CDATA[звуки]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=676</guid>
		<description><![CDATA[Итак, ребятки, чуть больше года назад, выложил я свою наработку &#8211; сороковую симфонию Моцарта из внутреннего динамика. Программа просто запускалась и звучала. Звучала, как надо. В те времена я ничего не понимал в нотах (и в таких сферах жизни, как работа водителя в Казахстане, к слову, тоже ничего не понимал, как и сейчас). С тех [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, ребятки, чуть больше года назад, выложил я свою наработку &#8211; <a href="http://parsers.info/2009/05/sorokovaya-simfoniya-mocarta-iz-vnutrennego-dinamika/">сороковую симфонию Моцарта из внутреннего динамика</a>.<br />
Программа просто запускалась и звучала. Звучала, как надо.<br />
<span id="more-676"></span><br />
В те времена я ничего не понимал в нотах (и в таких сферах жизни, как <a href="http://rabota.slando.kz/kazakhstan/5924_1.html">работа водителя в Казахстане</a>, к слову, тоже ничего не понимал, как и сейчас). С тех пор научился играть на гитаре, немного развил отсутствующие слух и голос.</p>
<p>Так вот, уже позже, 23 ноября того года, я написал статью (пост, заметку) с алгоритмом работы программы. Но, мало чего понимая в нотной грамоте, допустил пару ошибок.</p>
<p>Сейчас исправил, кое-чем дополнил и заново привлекаю внимание к той статье.<br />
<a href="http://parsers.info/2009/11/mocart-iz-vnutrennego-dinamika-sorokovaya-simfoniya-i-delphi-part-1/">Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 1.</a><br />
<a href="http://parsers.info/2009/12/mocart-iz-vnutrennego-dinamika-sorokovaya-simfoniya-delphi-part-2/">Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 2.</a></p>
<p>Спасибо за внимание</p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://parsers.info/2009/05/sorokovaya-simfoniya-mocarta-iz-vnutrennego-dinamika/" title="Сороковая симфония Моцарта из внутреннего динамика. (30 Май 2009)">Сороковая симфония Моцарта из внутреннего динамика.</a> (20)</li>
	<li><a href="http://parsers.info/2009/12/mocart-iz-vnutrennego-dinamika-sorokovaya-simfoniya-delphi-part-2/" title="Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 2. (3 Декабрь 2009)">Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 2.</a> (1)</li>
	<li><a href="http://parsers.info/2009/11/mocart-iz-vnutrennego-dinamika-sorokovaya-simfoniya-i-delphi-part-1/" title="Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 1. (23 Ноябрь 2009)">Моцарт из внутреннего динамика. Сороковая симфония и delphi. Часть 1.</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2010/06/pro-sorokovuyu-simfoniyu-mocarta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ClipFill</title>
		<link>http://parsers.info/2010/05/clipfill/</link>
		<comments>http://parsers.info/2010/05/clipfill/#comments</comments>
		<pubDate>Sun, 02 May 2010 17:35:19 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=655</guid>
		<description><![CDATA[Написал нехитрую программку для заполнения форм и прочего из буфера обмена. Принцип очень простой: Открываем, редактируем список из строк и оставляем поверх всех окон. Изначально выделена первая строчка, она находится уже в буфере обмена. Нажимая Shift-Insert, мы можем это, очевидно, куда-либо вставить. Программа перехватывает нажатие Shift-Insert и, когды ты уже отпустил, копирует в буфер следующее [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://parsers.info/wp-content/uploads/2010/05/clipfill.png"><img class="alignleft size-full wp-image-656" title="Программа ClipFill" src="http://parsers.info/wp-content/uploads/2010/05/clipfill.png" alt="" width="163" height="323" /></a>Написал нехитрую программку для заполнения форм и прочего из буфера обмена. Принцип очень простой:</p>
<p>Открываем, редактируем список из строк и оставляем поверх всех окон. Изначально выделена первая строчка, она находится уже в буфере обмена. Нажимая Shift-Insert, мы можем это, очевидно, куда-либо вставить.</p>
<p>Программа перехватывает нажатие Shift-Insert и, когды ты уже отпустил, копирует в буфер следующее значение.</p>
<p>То есть, с достаточной подготовкой, можно быстро заполнять формы, нажимая Shift-Ins, Tab, &#8230;</p>
<p>При закрытии программы ClipFill список сохраняется.</p>
<p>Под катом программа, исходник и вопрос к читателям.<span id="more-655"></span>Программа ClipFill достаточно сырая, писал на коленке для одного сайта (lockerz, заказал с помощью неё термос :D ).</p>
<p>Вопрос: какие комбинации клавиш сделать для того, чтобы вернуть в буфер предыдущее значение и вернуться к первому?</p>
<p>Автор crystalbit, <a href="http://parsers.info">http://parsers.info</a></p>
<p>При копировании поста прямую ссылку оставлять обязательно.</p>
<p>Скачать ClipFill: <a href="http://parsers.info/pub/clipfill/clipfill.exe">программа</a>, <a href="http://parsers.info/pub/clipfill/clipfill.rar">исходник</a></p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li>Нет похожих записей.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2010/05/clipfill/feed/</wfw:commentRss>
		<slash:comments>99</slash:comments>
		</item>
		<item>
		<title>Работаем только с некоторыми компонентами</title>
		<link>http://parsers.info/2010/04/rabotaem-tolko-s-nekotorymi-komponentami/</link>
		<comments>http://parsers.info/2010/04/rabotaem-tolko-s-nekotorymi-komponentami/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 15:26:45 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[компоненты]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=650</guid>
		<description><![CDATA[Привет! В одной из предыдущих статей мы перечисляли все компоненты определённого типа на форме, мы могли присвоить им одно и то же свойство, получить их содержание и так далее. А что если, например, у нас на форме штук 20 TPanel, и нам нужно у пяти из них поменять высоту? Передо мной сейчас как раз и [...]]]></description>
			<content:encoded><![CDATA[<p>Привет! В <a href="http://parsers.info/2009/12/perechislenie-vsex-komponentov-na-forme/">одной из предыдущих статей</a> мы перечисляли все компоненты определённого типа на форме, мы могли присвоить им одно и то же свойство, получить их содержание и так далее.</p>
<p>А что если, например, у нас на форме штук 20 TPanel, и нам нужно у пяти из них поменять высоту?<br />
Передо мной сейчас как раз и встала такая задача.<br />
<span id="more-650"></span><br />
Всё очень просто:</p>
<ul>
<li>Выделяем нужные компоненты (в данном случае TPanel).</li>
<li>Ставим свойство Tag отличное от нуля &#8211; по нему мы поймём, что этот компонент &#8211; нам нужный</li>
<li>И вот мой код:
<pre name="code" class="delphi">
var
  i: integer;
begin
  for i:=0 to ComponentCount-1 do
    if Components[i].Tag=1 then
      (Components[i] as TControl).Height:=Panel3.Height div 6;
end;
</pre>
</ul>
<p>В общем, всё аналогично той статье, но теперь мы используем <strong>свойство Tag</strong> компонента, чтобы отделить его от общей массы, а не тип.</p>
<p>Между делом замечу, что у меня последние два апа тиц держится на уровне полтинника, а я на него не потратил ни копейки (не считая кое-каких услуг после последнего апдейта). Можно вручную пытаться получить ссылки, а можно и заказать <a href="http://netpeak.ua/articles/about_seo_service/">seo</a> оптимизацию.</p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li>Нет похожих записей.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2010/04/rabotaem-tolko-s-nekotorymi-komponentami/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Парсим даты апдейтов с главной pr-cy</title>
		<link>http://parsers.info/2010/04/parsim-daty-apdejtov-s-glavnoj-pr-cy/</link>
		<comments>http://parsers.info/2010/04/parsim-daty-apdejtov-s-glavnoj-pr-cy/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 11:10:38 +0000</pubDate>
		<dc:creator>crystalbit</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[парсинг]]></category>

		<guid isPermaLink="false">http://parsers.info/?p=633</guid>
		<description><![CDATA[Привет! Давно не писал :) Как известно на главной странице pr-cy.ru есть даты обновлений тИЦ, pr и яндекс выдачи. Я, как и многие, часто захожу туда, дабы проверить, не обновилось ли что-нибудь. Сегодня напишем небольшую программу-пример, показывающую, как получить эти даты.1) Сперва заходим на сайт, видим: Три даты. Чтож, ТЗ есть. Теперь смотрим исходный код [...]]]></description>
			<content:encoded><![CDATA[<p>Привет! Давно не писал :)<br />
Как известно на главной странице pr-cy.ru есть даты обновлений тИЦ, pr и яндекс выдачи. Я, как и многие, часто захожу туда, дабы проверить, не обновилось ли что-нибудь.<br />
Сегодня напишем небольшую программу-пример, показывающую, как получить эти даты.<span id="more-633"></span>1) Сперва заходим на сайт, видим:</p>
<p><a href="http://parsers.info/wp-content/uploads/2010/04/ups1.png"><img class="alignleft size-full wp-image-634" title="Даты апдейтов тИЦ, pagerank и выдачи" src="http://parsers.info/wp-content/uploads/2010/04/ups1.png" alt="Даты апдейтов тИЦ, pagerank и выдачи" width="174" height="102" /></a>Три даты. Чтож, ТЗ есть.</p>
<p>Теперь смотрим исходный код фрагмента:</p>
<pre name="code" class="html">&lt;p&gt;&lt;span class="blue"&gt;G&lt;/span&gt;&lt;span class="red"&gt;o&lt;/span&gt;&lt;span class="yellow"&gt;o&lt;/span&gt;&lt;span class="blue"&gt;g&lt;/span&gt;&lt;span class="red"&gt;le&lt;/span&gt; &lt;span class="lar"&gt;PR&lt;/span&gt;&lt;span class="date"&gt;&lt;acronym title="11 д. назад"&gt;03.04.2010&lt;/acronym&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="red"&gt;Я&lt;/span&gt;&lt;b&gt;ндекс&lt;/b&gt; &lt;span class="ar"&gt;тИЦ&lt;/span&gt;&lt;span class="date"&gt;&lt;acronym title="6 д. назад"&gt;08.04.2010&lt;/acronym&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p-last"&gt;&lt;span class="ar"&gt;выдача&lt;/span&gt;&lt;span class="date"&gt;&lt;b&gt;13.04.2010&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
</pre>
<p>Достаточно примечательный фрагмент.</p>
<p>Итак, создадим новую программу, поставим кнопку и надпись (Button1 и Label1).<br />
Для получения страницы мы будем использовать библиотеку Synapse, поэтому подключим модуль httpsend.</p>
<p>В процедуре-обработчике нажания на кнопку пропишем:</p>
<pre name="code" class="delphi">procedure TForm1.Button1Click(Sender: TObject);
var
  vres: TStringList;
begin
  vres:=TStringList.Create;
  if HttpGetText('http://pr-cy.ru', vres) then begin
    // мы успешно получили код страницы pr-cy, дальше будем писать сюда
  end else begin
    ShowMessage('error getting pr-cy!');
  end;
  vres.Free;
end;
</pre>
<p>Теперь введём переменные scy, spr, syv: string; и константу <strong>cpr = &#8216;&lt;span class=&raquo;lar&raquo;&gt;PR&lt;/span&gt;&#8217;;</strong> &#8211; по ней мы будем ориентироваться.</p>
<p>Строки с датами найдём так:</p>
<pre name="code" class="delphi">
    i:=0;
    Repeat
      if Pos(cpr, vres.Strings[i])&lt;&gt;0 then break;
      i:=i+1;
    until 1=0;
    spr:=vres.Strings[i];
    scy:=vres.Strings[i+1];
    syv:=vres.Strings[i+2];
</pre>
<p>Выделим в каждой строке span с помощью функций delete, pos и posex (strutils):</p>
<pre name="code" class="delphi">
    i:=Pos('&lt;span class="date"&gt;', spr);
    Delete(spr, 1, PosEx('"&gt;', spr, i+1)+1);
    i:=Pos('&lt;span class="date"&gt;', scy);
    Delete(scy, 1, PosEx('"&gt;', scy, i+1)+1);
    i:=Pos('&lt;span class="date"&gt;', syv);
    Delete(syv, 1, PosEx('"&gt;', syv, i+1)+1);
</pre>
<p>Ещё немного попарсим:</p>
<pre name="code" class="delphi">
    i:=Pos('&lt;span class="date"&gt;', spr);
    Delete(spr, 1, PosEx('"&gt;', spr, i+1)+1);
    i:=Pos('&lt;span class="date"&gt;', scy);
    Delete(scy, 1, PosEx('"&gt;', scy, i+1)+1);
    i:=Pos('&lt;span class="date"&gt;', syv);
    Delete(syv, 1, PosEx('"&gt;', syv, i+1)+1);
    repeat
      i:=Pos('&lt;', spr);
      if i=0 then break;
      Delete(spr, i, PosEx('&gt;', spr, i));
    until 1=0;
    repeat
      i:=Pos('&lt;', scy);
      if i=0 then break;
      Delete(scy, i, PosEx('&gt;', scy, i));
    until 1=0;
    repeat
      i:=Pos('&lt;', syv);
      if i=0 then break;
      Delete(syv, i, PosEx('&gt;', syv, i));
    until 1=0;
    spr:=StringReplace(spr, '&gt;', '', [rfReplaceAll]);
    scy:=StringReplace(scy, '&gt;', '', [rfReplaceAll]);
    syv:=StringReplace(syv, '&gt;', '', [rfReplaceAll]);
    spr:=StringReplace(spr, ' ', '', [rfReplaceAll]);
    scy:=StringReplace(scy, ' ', '', [rfReplaceAll]);
    syv:=StringReplace(syv, ' ', '', [rfReplaceAll]);
</pre>
<p>И можно вывести результат:</p>
<pre name="code" class="delphi">
    Label1.Caption:='pr: '+spr+#13#10+'тИЦ: '+scy+#13#10+'Выдача: '+syv;
</pre>
<p>Вот и вся арифметика. Скачать проект с парсингом дат можно <a href="http://parsers.info/pub/prdate.rar">по этой ссылке</a>.<br />
Также советую готовую программу от Борисова Сергея &#8211; <a href="http://www.techweek.ru/search-monitor-beta-versiya/">Search Monitor</a>, спасибо, что обратили на неё внимание :)</p>
<p>Давно я не появлялся :) Меня просто очень сильно мотивировали написать пост <a href="http://www.freeoboi.ru/">обои для рабочего стола</a>. Они бесплатные :D</p>

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://parsers.info/2010/01/postrochnyj-parsing/" title="Построчный парсинг (22 Январь 2010)">Построчный парсинг</a> (24)</li>
	<li><a href="http://parsers.info/2010/01/parsim-csv-i-tsv-v-delphi/" title="Парсим csv и tsv файлы в delphi (12 Январь 2010)">Парсим csv и tsv файлы в delphi</a> (10)</li>
	<li><a href="http://parsers.info/2010/09/opredelyaem-webmoney-bl/" title="Определяем WebMoney BL (28 Сентябрь 2010)">Определяем WebMoney BL</a> (86)</li>
	<li><a href="http://parsers.info/2009/05/kolichestvo-podstrok-v-stroke/" title="Количество подстрок в строке. (21 Май 2009)">Количество подстрок в строке.</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://parsers.info/2010/04/parsim-daty-apdejtov-s-glavnoj-pr-cy/feed/</wfw:commentRss>
		<slash:comments>106</slash:comments>
		</item>
	</channel>
</rss>

