<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0IGSHo_fCp7ImA9WhRbFU4.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730</id><updated>2012-02-06T04:32:09.444-08:00</updated><category term="Delphi 2010" /><category term="System" /><category term="Функции" /><category term="SQL" /><category term="Thread" /><category term="SysUtils" /><category term="Иститут" /><category term="Image" /><category term="WebCam" /><category term="TWebBrowser" /><category term="Synapse" /><category term="ImageList" /><category term="Wininet" /><category term="Windows" /><category term="Компоненты" /><category term="ToolBar" /><category term="Полезное" /><category term="Blogger" /><category term="Registry" /><category term="IDE" /><category term="Ehlib" /><category term="Delphi события" /><category term="GoogleLogin" /><category term="FibPlus" /><category term="TStringList" /><category term="indy" /><category term="Инструменты" /><category term="UDP" /><category term="Mozilla" /><category term="base" /><category term="Бот" /><category term="DataSet1" /><category term="первая запись" /><category term="Firebird" /><category term="Error" /><category term="Исходник" /><category term="TForm" /><category term="TGIFImage" /><category term="JSON" /><category term="Application" /><category term="BLOB" /><title>NMDSOFT</title><subtitle type="html">Программирование в среде Delphi. 
Не ошибается тот, кто ничего не делает!!!</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://nmdsoft.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>110</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/HnPt" /><feedburner:info uri="blogspot/hnpt" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUYBRXg9eCp7ImA9WhRUEkQ.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-2974098186789319473</id><published>2012-01-22T21:36:00.000-08:00</published><updated>2012-01-22T21:39:14.660-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-22T21:39:14.660-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Полезное" /><category scheme="http://www.blogger.com/atom/ns#" term="TGIFImage" /><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><category scheme="http://www.blogger.com/atom/ns#" term="Image" /><title>GIF с прозрачным фоном в BMP (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;var&lt;br /&gt;
&amp;nbsp; gif:TGIFImage;&lt;br /&gt;
&amp;nbsp; i:Integer;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; gif:=TGIFImage.Create;&lt;br /&gt;
&amp;nbsp; gif.Transparent:=True;&lt;br /&gt;
&amp;nbsp; gif.LoadFromFile('c:\1\2.gif');&lt;br /&gt;
&amp;nbsp; for i := 0 to gif.Images.Count-1 do&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; with GIF.Images[i] do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Transparent) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActiveColorMap[GraphicControlExtension.TransparentColorIndex] := clWhite;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GIF.Images[i].Bitmap.SaveToFile('c:\1\'+inttostr(i)+'.bmp');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; gif.Free;&lt;br /&gt;
&lt;br /&gt;
анимированные изображения разбивает на кадры &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-2974098186789319473?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/BfK6AtK16jA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/2974098186789319473/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2012/01/gif-bmp-delphi_22.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2974098186789319473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2974098186789319473?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/BfK6AtK16jA/gif-bmp-delphi_22.html" title="GIF с прозрачным фоном в BMP (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2012/01/gif-bmp-delphi_22.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIHRXk4eyp7ImA9WhZaGEo.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-5312492534739000284</id><published>2011-07-05T06:58:00.000-07:00</published><updated>2011-07-05T07:02:14.733-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-05T07:02:14.733-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mozilla" /><title>Fast Dial 3.4 Mozilla 5.0</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-qlpD5nB2FcE/ThMYSFAJunI/AAAAAAAAAWg/-LIE6iL8tyE/s1600/mozilla.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-qlpD5nB2FcE/ThMYSFAJunI/AAAAAAAAAWg/-LIE6iL8tyE/s1600/mozilla.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
После обновления Mozill'ы до&amp;nbsp; 5 версии, я обнаружил то к чему очень привык, великолепный аддон Fast Dial перестал работать в 5 версии. Уныло, досадно, но ладно. Решил немного подождать, ну мало ли не успел может переписать под новый браузер....&lt;br /&gt;
Прошло около 2 дней и вышла новая версия Fast Dial 3.4, установил, но не успел даже обрадоваться, как увидел, что он тоже не работает((. Поискал, что в инете пишут, поиски оказались тщетны. Потом вновь решил поискать и наткнулся на ветку в форуме мозилы в которой говорилось о том, что другой разработчик исправил Fast Dial 3.4 и теперь, он работает, но через попу (не стал рисковать, мало ли...) и зашел на офф сайт автора компонента и обнаружил там бета версию компонента Fast Dial 3.5b1, установил и все прекрасно работает без всяких танцев.&lt;br /&gt;
&lt;br /&gt;
Так что у кого такая же проблема &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/fast-dial-5721/versions/"&gt;решение тут&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
ps. Я использую Fast Dial потому, что в нем нет ни чего лишнего.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-5312492534739000284?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/t0DqIB-C5Ms" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/5312492534739000284/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/07/fast-dial-34-mozilla-50.html#comment-form" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/5312492534739000284?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/5312492534739000284?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/t0DqIB-C5Ms/fast-dial-34-mozilla-50.html" title="Fast Dial 3.4 Mozilla 5.0" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-qlpD5nB2FcE/ThMYSFAJunI/AAAAAAAAAWg/-LIE6iL8tyE/s72-c/mozilla.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/07/fast-dial-34-mozilla-50.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4NQ3o6eyp7ImA9WhZREEU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-7193669066188158271</id><published>2011-04-06T02:09:00.000-07:00</published><updated>2011-04-06T02:09:52.413-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-06T02:09:52.413-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Delphi 2010" /><title>Бета тестирование Delphi с 64-битным компилятором.</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Ура товарищи, УРА!!!!!! Открыта регистрация на бета тестирование Delphi&amp;nbsp; с 64-битным компилятором.&lt;br /&gt;
Регистрируемся &lt;a href="http://www.embarcadero.com/products/delphi/64-bit"&gt;тут&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-7193669066188158271?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/69FOag8BQWo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/7193669066188158271/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/04/delphi-64.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/7193669066188158271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/7193669066188158271?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/69FOag8BQWo/delphi-64.html" title="Бета тестирование Delphi с 64-битным компилятором." /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/04/delphi-64.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YMQn0-eCp7ImA9WhZSF08.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-2104702944746977340</id><published>2011-04-01T23:19:00.001-07:00</published><updated>2011-04-01T23:19:43.350-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-01T23:19:43.350-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Delphi 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Компоненты" /><title>Прогресс бар в стиле Vista. VistaProBar 1.5 (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Прогресс бар, как в Vist'e&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt; Возможность регулировки размытости&lt;/li&gt;
&lt;li&gt;Возможность регулировки скорости&lt;/li&gt;
&lt;li&gt; Вставка суффикса&lt;/li&gt;
&lt;li&gt;Вставка префикса &lt;/li&gt;
&lt;li&gt;Отображение прогресса текстом&lt;/li&gt;
&lt;li&gt;Показ процентов&lt;/li&gt;
&lt;/ul&gt;Проверял в Delphi 2010 все нормально устанавливается, но для работы компонента необходим другой компонент этого же автора. На сайте у него скачал последнюю версию необходимого компонента &lt;b&gt;rkSmartPath23&lt;/b&gt;, но архив битый пришлось скачать на одну версию по младше &lt;b&gt;rkSmartPath22&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Распространяется по лицензии &lt;b&gt;MPL 1.1&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Блог автора компонента&lt;br /&gt;
&lt;a href="http://rmklever.com/"&gt;Klever on Delphi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Скачать компонент &lt;b&gt;VistaProBar 1.5&lt;/b&gt;+&lt;b&gt;rkSmartPath22&lt;/b&gt;&amp;nbsp; можно &lt;a href="http://narod.ru/disk/8947966001/VistaProBar15.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/8947966001/VistaProBar15.zip.html"&gt;Download&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
Запаковал их вместе для удобства &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-2104702944746977340?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/OgH2u0wKpt0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/2104702944746977340/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/04/vista-vistaprobar-15-delphi.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2104702944746977340?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2104702944746977340?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/OgH2u0wKpt0/vista-vistaprobar-15-delphi.html" title="Прогресс бар в стиле Vista. VistaProBar 1.5 (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/04/vista-vistaprobar-15-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YCR38-eSp7ImA9WhZSF08.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-2260516492796939505</id><published>2011-04-01T23:19:00.000-07:00</published><updated>2011-04-01T23:19:26.151-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-01T23:19:26.151-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Delphi 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Компоненты" /><title>SmartPath v2.3 (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;От автора компонента: &lt;br /&gt;
Компонент позволяющий перемещаться по файловой системе компьютера, как в проводнике Vista.&lt;br /&gt;
Путь к папке представляется, как кнопки и стрелки. &lt;span lang="ru"&gt;Нажатие на кнопку позволит вам установить этот путь, нажатие на стрелку позволит вам выбрать папки в этой папке.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang="ru"&gt;Дополнительные возможности&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span lang="ru"&gt;Отключение редактирования пути&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;Добавлено событие&amp;nbsp; &lt;/span&gt;draw&lt;/li&gt;
&lt;li&gt;Использование отображаемого имени для папок&lt;/li&gt;
&lt;li&gt;Добавлен поиск событий. &lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" id="result_box" lang="ru"&gt;&lt;span class="hps" title="Нажмите, чтобы увидеть альтернативный перевод"&gt;Тонкие настройки&lt;/span&gt; &lt;span class="hps" title="Нажмите, чтобы увидеть альтернативный перевод"&gt;и исправления&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;Стрелка отображается если в папке есть еще папки &lt;/li&gt;
&lt;/ul&gt;&lt;div class="mttextarea" dir="ltr" id="TranslationOutput"&gt;&lt;div lang="ru"&gt;Скриншот &lt;b&gt;SmartPath &lt;/b&gt;версии 2&lt;/div&gt;&lt;div lang="ru"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AQ8ZLTXZXMA/TZSNerxzb2I/AAAAAAAAAWY/cWHLSOdvvj0/s1600/SmartPathV2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="90" src="http://2.bp.blogspot.com/-AQ8ZLTXZXMA/TZSNerxzb2I/AAAAAAAAAWY/cWHLSOdvvj0/s320/SmartPathV2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div lang="ru"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div lang="ru"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div lang="ru"&gt;&lt;div lang="ru"&gt;Добавлено новое свойство NetDiskWait проверять готовность сетевых дисков или нет по дефолту значение False. Просто иногда на этом этапе тратиться много времени особенно когда сетевой диск недоступен.&lt;/div&gt;&lt;div lang="ru"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div lang="ru"&gt;&lt;b&gt;SmartPath &lt;/b&gt;версия 2.2&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Теперь можно перемещаться по каталогам используя только клавиатуру&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;У Ownerdraw теперь есть свое собственное свойство, установите его при использовании ownerdraw события.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;Добавлен ParentFont&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;Новое свойство ClickSetPath установит путь автоматически, когда кнопка на пути будет нажата так не нужно теперь использовать событие OnClickEvent.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;Изменен AllowEdit теперь по дефолту True&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;OnMouseLeaveEvent&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" id="result_box" lang="ru"&gt;&lt;span class="hps" title="Нажмите, чтобы увидеть альтернативный перевод"&gt;Тонкие настройки&lt;/span&gt; &lt;span class="hps" title="Нажмите, чтобы увидеть альтернативный перевод"&gt;и исправления&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div lang="ru"&gt;Блог автора компонента&lt;br /&gt;
&lt;a href="http://rmklever.com/"&gt;Klever on Delphi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Скачать компонент можно &lt;a href="http://narod.ru/disk/8951352001/rkSmartPath22.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/8951352001/rkSmartPath22.zip.html"&gt;Download&lt;/a&gt; &lt;/div&gt;&lt;div lang="ru"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-2260516492796939505?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/xvDuNWgwlCg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/2260516492796939505/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/04/smartpath-v23-delphi.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2260516492796939505?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2260516492796939505?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/xvDuNWgwlCg/smartpath-v23-delphi.html" title="SmartPath v2.3 (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-AQ8ZLTXZXMA/TZSNerxzb2I/AAAAAAAAAWY/cWHLSOdvvj0/s72-c/SmartPathV2.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/04/smartpath-v23-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUNSX84fCp7ImA9WhZSFUU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-2560745100369042782</id><published>2011-03-31T07:04:00.000-07:00</published><updated>2011-03-31T07:04:58.134-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-31T07:04:58.134-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Компоненты" /><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><title>Стеклянная кнопка rkGlassButton  (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Компонент &lt;b&gt;стеклянная кнопка для Delphi&lt;/b&gt; (устанавливал в &lt;b&gt;Delphi XE&lt;/b&gt; версию 2 при перемещении бывают глюки, но это не беда компонент идет в исходниках в виде одного pas файла. Так что если есть желание и время можно это глюк пофиксить)&lt;br /&gt;
&lt;br /&gt;
Скрин&amp;nbsp; &lt;b&gt;rkGlassButton 2&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1YPutT3XaHQ/TZSAFozxmkI/AAAAAAAAAWU/5v11fCGZAfI/s1600/rkGlassButton+2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://2.bp.blogspot.com/-1YPutT3XaHQ/TZSAFozxmkI/AAAAAAAAAWU/5v11fCGZAfI/s320/rkGlassButton+2.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
История развития компонента &lt;b&gt;rkGlassButton 1.5&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt;Стал лучше рендеринг&lt;/li&gt;
&lt;li&gt;Теперь компонент может отбрасывать тени&lt;/li&gt;
&lt;li&gt; Можно изменить цвет тени&lt;/li&gt;
&lt;li&gt;Регулируется уровень глянцевости&lt;/li&gt;
&lt;li&gt;Изменение позиции изображения и разрыва текста&lt;/li&gt;
&lt;li&gt;Работает как кнопки в Windows 7&lt;/li&gt;
&lt;/ul&gt;История развития компонента &lt;b&gt;rkGlassButton 1.75&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt;Добавлена обработка клавиатуры&lt;/li&gt;
&lt;li&gt;Добавлена стрелочка при нажатии которой появляется Pop up Menu&lt;/li&gt;
&lt;li&gt;Новый фокус рендеринга&lt;/li&gt;
&lt;li&gt;Добавлено состояние нажата&lt;/li&gt;
&lt;li&gt;Пофиксены некоторые ошибки&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
История развития компонента&lt;b&gt; rkGlassButton 2&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt;Добавлено позиционирование текста (слева, по центру, справа)&lt;/li&gt;
&lt;li&gt;Кнопка может быть плоской (Flat)&lt;/li&gt;
&lt;li&gt;Альтернативный рендеринг стиль&lt;/li&gt;
&lt;li&gt;Появилась возможность отключения кнопки&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Распространяется по лицензии &lt;b&gt;MPL 1.1&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Блог автора компонента&lt;br /&gt;
&lt;a href="http://rmklever.com/"&gt;Klever on Delphi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Скачать компонент можно &lt;a href="http://narod.ru/disk/8945879001/GlassButtonV2.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/8945879001/GlassButtonV2.zip.html"&gt;Download &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-2560745100369042782?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/IQefjZrbAj8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/2560745100369042782/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/03/rkglassbutton-delphi.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2560745100369042782?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/2560745100369042782?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/IQefjZrbAj8/rkglassbutton-delphi.html" title="Стеклянная кнопка rkGlassButton  (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-1YPutT3XaHQ/TZSAFozxmkI/AAAAAAAAAWU/5v11fCGZAfI/s72-c/rkGlassButton+2.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/03/rkglassbutton-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YFQXs5fyp7ImA9WhZSFEU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-8703815996058800390</id><published>2011-03-30T05:45:00.000-07:00</published><updated>2011-03-30T05:45:10.527-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-30T05:45:10.527-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WebCam" /><category scheme="http://www.blogger.com/atom/ns#" term="Delphi 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Компоненты" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><title>DSpack 2.3.3 (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Компонент для написания мультимедиа приложений использующих MS Direct Show и DirectX технологии. &lt;span lang="ru"&gt;С DSpack вы можете создать все, что вы хотите: DVD, захвата, сжатие, фильтры, ТВ, веб-камера, DV...&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="ru"&gt;Корректно работает в Delphi XE, для работы примеров необходимо переименовать &lt;/span&gt;в uses DSUtil.pas на DSUtils.pas (в Delphi 2009 появился другой модуль с таким именем)&lt;br /&gt;
Запустил пример который поток видео с веб-камеры сохраняет на диск в формате avi, после чего открыл файл и в нем было действительно видео с веб-камеры, а не просто пустой файл.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ZTF7U-J4iH0/TZMGqUdPkDI/AAAAAAAAAWI/aKnYNbfe4gU/s1600/Diagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://4.bp.blogspot.com/-ZTF7U-J4iH0/TZMGqUdPkDI/AAAAAAAAAWI/aKnYNbfe4gU/s320/Diagram.png" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;Установка&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Добавляем в переменные среды Delphi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;(DSPackDir)\src\Directx9    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - (DSPackDir)\src\DSPack   &lt;br /&gt;
Компилируем DirectX 9 Package (DirectX9_Dx.dpk) из папки packagesD2010.&lt;br /&gt;
Компилируем&amp;nbsp; DSPack Package (DSPack_Dx.dpk) из папки packagesD2010.&lt;br /&gt;
Устанавливаем Design Package (DSPackDesign_Dx.dpk) из папки packagesD2010.&lt;br /&gt;
&lt;br /&gt;
И не забываем в примерах в случае если возникает ошибка&lt;br /&gt;
[DCC Error] main.pas(34): E2003 Undeclared identifier: 'TSysDevEnum'&lt;br /&gt;
переименовывать модуль DSUtil.pas на DSUtils.pas&lt;br /&gt;
&lt;br /&gt;
Скачать DSpack можно &lt;a href="http://narod.ru/disk/8847679001/DSPack.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/8847679001/DSPack.zip.html"&gt;Download &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-8703815996058800390?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/upzmCkihqMg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/8703815996058800390/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/03/dspack-233-delphi.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8703815996058800390?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8703815996058800390?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/upzmCkihqMg/dspack-233-delphi.html" title="DSpack 2.3.3 (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-ZTF7U-J4iH0/TZMGqUdPkDI/AAAAAAAAAWI/aKnYNbfe4gU/s72-c/Diagram.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/03/dspack-233-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ICSXo5cCp7ImA9WhZSFEU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-1268233866638022761</id><published>2011-03-29T00:31:00.000-07:00</published><updated>2011-03-30T05:52:48.428-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-30T05:52:48.428-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JSON" /><category scheme="http://www.blogger.com/atom/ns#" term="Компоненты" /><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><title>JSON – SuperObject (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&lt;b&gt;JSON &lt;/b&gt;– SuperObject библиотека для работы с &lt;b&gt;JSON &lt;/b&gt;в Delphi, данная библиотека была проверена в &lt;b&gt;Delphi &lt;/b&gt;2010, всё прекрасно работает! &lt;a href="http://nmdsoft.blogspot.com/2011/02/class-json-delphi.html"&gt;Недавно был пост посвященный подобной библиотеке&lt;/a&gt;, но по функционалу и стабильности работы, она не показала себя с хорошей стороны в отличие от этой библиотеки.&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Особенности:&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt;Быстрота анализа&lt;/li&gt;
&lt;li&gt;&lt;b&gt;XML &lt;/b&gt;в &lt;b&gt;JSON&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Простота использования&lt;/li&gt;
&lt;li&gt;Проверка валидности &lt;b&gt;JSON&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;&lt;b&gt;JSON-RPC&lt;/b&gt; (&lt;/span&gt;&lt;a href="http://ru.wikipedia.org/wiki/Remote_Procedure_Call"&gt;Remote Procedure Call&lt;/a&gt;&lt;span lang="ru"&gt; (&lt;/span&gt;вызов удалённых процедур&lt;span lang="ru"&gt;)).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ru"&gt;Возможность написания &lt;b&gt;JSON &lt;/b&gt;в удобной для человека форме.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span lang="ru"&gt; &lt;b&gt;Лицензия:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://ru.wikipedia.org/wiki/Mozilla_Public_License"&gt;MPL&lt;/a&gt; или &lt;a href="http://ru.wikipedia.org/wiki/GNU_Lesser_General_Public_License"&gt;LGPL&lt;/a&gt;&lt;br /&gt;
&lt;span lang="ru"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;Сайт автора компонента:&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.progdigy.com/"&gt;Delphi &amp;amp; Free Pascal ressources by Henri Gourvest&lt;/a&gt;&lt;br /&gt;
&lt;span lang="ru"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SVN&lt;/b&gt;:&lt;br /&gt;
http://superobject.googlecode.com/svn/trunk/&lt;br /&gt;
&lt;br /&gt;
&lt;span lang="ru"&gt;&lt;/span&gt;&lt;br /&gt;
Скачать архив от 29.03.2010 &lt;a href="http://narod.ru/disk/8848389001/superobject.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/8848389001/superobject.zip.html"&gt;Download&lt;/a&gt;&lt;br /&gt;
&lt;span lang="ru"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-1268233866638022761?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/6FG82C4_LeY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/1268233866638022761/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/03/json-superobject-delphi.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/1268233866638022761?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/1268233866638022761?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/6FG82C4_LeY/json-superobject-delphi.html" title="JSON – SuperObject (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/03/json-superobject-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYAR3k6eSp7ImA9WhZTEkU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-4781461455662215979</id><published>2011-03-15T09:01:00.000-07:00</published><updated>2011-03-16T07:52:26.711-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-16T07:52:26.711-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Полезное" /><title>WordUnit 1.0 Программа для сбора поисковой выдачи</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-VrDJFDTjPIA/TX98OMldH_I/AAAAAAAAAVs/nLQ3TpaMv1M/s1600/wordunit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="https://lh5.googleusercontent.com/-VrDJFDTjPIA/TX98OMldH_I/AAAAAAAAAVs/nLQ3TpaMv1M/s320/wordunit.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Утилита для поиска сайтов по ключевым словам в поисковых системах GOOGLE, YANDEX, RAMBLER (хотя последним даже и не пользуюсь ни когда)) ну и бог с ним) и сохранения их в таблицу, из таблицы в файл, а дальше куда душа пожелает!&lt;br /&gt;
Программа получает выдачу поисковиков по запросам, которые можно сделать в конструкторе, форма конструктора идентична их онлайн версиям, так, что проблем возникнуть не должно с построением запроса.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Скрины конструкторов:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-xasljf1vuUo/TX9_Hyi8vLI/AAAAAAAAAVw/WzEjsfKCk4M/s1600/google_search.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="https://lh3.googleusercontent.com/-xasljf1vuUo/TX9_Hyi8vLI/AAAAAAAAAVw/WzEjsfKCk4M/s320/google_search.PNG" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-wmkMedw6bQk/TX9_JRKE7uI/AAAAAAAAAV0/01s5zTAtfuk/s1600/yandex_search.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="https://lh5.googleusercontent.com/-wmkMedw6bQk/TX9_JRKE7uI/AAAAAAAAAV0/01s5zTAtfuk/s320/yandex_search.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-SjhqixDtBL0/TX9_KxFNTtI/AAAAAAAAAV4/SqebwJINAZc/s1600/rambler_search.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="https://lh4.googleusercontent.com/-SjhqixDtBL0/TX9_KxFNTtI/AAAAAAAAAV4/SqebwJINAZc/s320/rambler_search.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Так, что сначала добавляем запросы, регулируем глубину поиска (т.е количество страниц в поисковике), таймаут между запросами(если активирован сбор информации о PR и ТИЦ&amp;nbsp; он не учитывается, потому как на сбор этой информации уходит тоже время)) ) после чего кнопкой "Старт", запускаем сбор данных. Результаты работы программы будут выводиться в таблицу в которой их можно отсортировать или удалить ненужные, так же таблицу, как с результатами так и с запросами можно сохранить и открыть с помощью любого текстового редактора. Кто умеет пользоваться Excel тот и там сможет таблички посмотреть и сделать отсев по критериям. Так же можно выполнить проверку PR'a и ТИЦ'a в ходе сбора сайтов по интересующим вас запросам.&lt;br /&gt;
Программа работает в 3 потока (по одному на каждый поисковый сервер) так, что чередуйте запросы по серверам(пример: GOOGLE, YANDEX, RAMBLER,GOOGLE, YANDEX, RAMBLER), иначе какой нибудь из них из-за высокой "вашей" активности может, вас забанить на&amp;nbsp; некоторое время.&lt;br /&gt;
Программу можно использовать и для сбора сайтов с жирным PR'ом  и ТИЦ'ом, но уже тематически отфильтрованным и не придется раскошеливаться на покупку подобных баз.&lt;br /&gt;
&lt;br /&gt;
Программа конечно не супер быстрая, но с учетом, того что можно сразу написать много заданий, этот минус становиться незаметным))&lt;br /&gt;
Внешний вид программы с двумя запросами&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-VlvIKUoasKI/TX-KtE6L18I/AAAAAAAAAV8/LiIENQhqEHI/s1600/job_word_unit.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="https://lh3.googleusercontent.com/-VlvIKUoasKI/TX-KtE6L18I/AAAAAAAAAV8/LiIENQhqEHI/s320/job_word_unit.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Пробуйте, если есть идеи по дополнительному функционалу пишите постараюсь сделать.&lt;br /&gt;
&lt;br /&gt;
Программу или программку можно скачать &lt;a href="http://narod.ru/disk/7582310001/WordUnit.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/7582310001/WordUnit.zip.html"&gt;Download &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-4781461455662215979?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/RT1kJq1L7LI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/4781461455662215979/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/03/wordunit-10.html#comment-form" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4781461455662215979?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4781461455662215979?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/RT1kJq1L7LI/wordunit-10.html" title="WordUnit 1.0 Программа для сбора поисковой выдачи" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-VrDJFDTjPIA/TX98OMldH_I/AAAAAAAAAVs/nLQ3TpaMv1M/s72-c/wordunit.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/03/wordunit-10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ACSHkyeSp7ImA9Wx9aFE4.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-8231582124127072008</id><published>2011-03-06T03:44:00.000-08:00</published><updated>2011-03-06T11:29:29.791-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-06T11:29:29.791-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TForm" /><title>"Липкая" форма (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Как заставить форму приложения "прилипать" к краям экрана?&lt;br /&gt;
&lt;br /&gt;
Оказывается очень просто))&lt;br /&gt;
Необходимо в&amp;nbsp; свойствах формы &lt;b&gt;ScreenSnap&lt;/b&gt; сделать равным True и &lt;b&gt;SnapBuffer &lt;/b&gt;числу пикселей между краем формы и краем экрана (по дефолту 10) после чего форма должна "прилипать" к краю экрана.&lt;br /&gt;
&amp;nbsp;&lt;b&gt;ScreenSnap:=True;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;SnapBuffer:=10;&lt;/b&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-8231582124127072008?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/qiGt5pooU14" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/8231582124127072008/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/03/form-screensnap-delphi.html#comment-form" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8231582124127072008?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8231582124127072008?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/qiGt5pooU14/form-screensnap-delphi.html" title="&quot;Липкая&quot; форма (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/03/form-screensnap-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEADSXozfip7ImA9Wx9aGUw.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-5469634125144511314</id><published>2011-02-27T08:13:00.000-08:00</published><updated>2011-03-11T22:52:58.486-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-11T22:52:58.486-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Функции" /><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><title>Функция получения PageRank (Delphi)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-BEkulVzk7Q8/TWp2Yk63-BI/AAAAAAAAAU4/iyNLJetMmSs/s1600/pr_tc_delphi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://lh4.googleusercontent.com/-BEkulVzk7Q8/TWp2Yk63-BI/AAAAAAAAAU4/iyNLJetMmSs/s320/pr_tc_delphi.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ни так давно захотел определить &lt;b&gt;PR &lt;/b&gt;блога без SEO сервисов с помощью &lt;b&gt;Delphi&lt;/b&gt;.&lt;br /&gt;
Все оказалось ни так просто, как на Yandex'e при определении ТИЦ'а. Чтобы получить ТИЦ для тех, кто не знает или просто ни когда об этом, ни задумывался, необходимо выполнить запрос такого вида:&lt;br /&gt;
&lt;b&gt;http://search.yaca.yandex.ru/yca/cy/ch/&lt;span style="background-color: #b6d7a8; color: blue;"&gt;[&lt;/span&gt;&lt;span style="background-color: #b6d7a8;"&gt;URL сайта &lt;/span&gt;&lt;span style="background-color: #b6d7a8; color: red;"&gt;без http&lt;/span&gt;&lt;span style="background-color: #b6d7a8;"&gt;:\\&lt;/span&gt;&lt;span style="background-color: #b6d7a8; color: blue;"&gt;]&lt;/span&gt;/&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пример:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;http://search.yaca.yandex.ru/yca/cy/ch/nmdsoft.blogspot.com/&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
и немного распарсить страницу и получим искомый нами ТИЦ&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;У google все оказалось на много запущение (скорее всего это было сделано для того, чтобы пользователи устанавливали предоставляемый Google тулбар), для того чтобы получить PageRang нашего блога или сайта неважно)) нам необходимо выполнить запрос следующего вида:&lt;br /&gt;
http://www.google.com/search?client=navclient-auto&amp;amp;ch=&lt;span style="background-color: #93c47d;"&gt;[CHECKSUMM]&lt;/span&gt;&amp;amp;features=Rank&amp;amp;q=info:[&lt;span style="background-color: #93c47d;"&gt;адрес сайта &lt;span style="color: red;"&gt;с &lt;/span&gt;&lt;/span&gt;&lt;b style="background-color: #93c47d; color: red;"&gt;http:\\&lt;/b&gt;]&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пример:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;http://www.google.com/search?client=navclient-auto&amp;amp;ch=&lt;span style="background-color: #93c47d;"&gt;86C47EA7D&lt;/span&gt;&amp;amp;features=Rank&amp;amp;q=info:&lt;span style="background-color: #93c47d;"&gt;http://nmdsoft.blogspot.com/&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
CHECKSUMM-это как раз, что мешает получить PageRang сайта без программного кода простым выполнением запроса.&lt;br /&gt;
&lt;br /&gt;
Для вычисления контрольной суммы используем вот эту функцию, которая после ввода URL сайта нам в ответ возвращает готовую ссылку перейдя по которой мы можем получить PR сайта (парсинга там требуется еще меньше чем в яндексе так, как там кроме надписи Rank_1:1:XX ни чего нет))&lt;br /&gt;
&lt;br /&gt;
Код функции для &lt;b&gt;Delphi&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;function &lt;span style="color: #e69138;"&gt;Check_PR&lt;/span&gt;&lt;/b&gt;(&lt;span style="color: #38761d;"&gt;aUrl: string&lt;/span&gt;): &lt;b style="color: #351c75;"&gt;string&lt;/b&gt;;&lt;br /&gt;
const&lt;br /&gt;
&amp;nbsp; seed='Mining PageRank is AGAINST GOOGLE'#39'S TERMS OF SERVICE. Yes, I'#39'm talking to you, scammer.';&lt;br /&gt;
&lt;b&gt;var&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; i,urllen,seedlen,key: DWORD;&lt;br /&gt;
&lt;b style="color: red;"&gt;begin&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; key:=16909125;&lt;br /&gt;
&amp;nbsp; seedlen:= Length(seed)+1;&lt;br /&gt;
&amp;nbsp; urllen:= Length(aUrl);&lt;br /&gt;
&amp;nbsp; for i:=1 to urllen do&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; key:= key xor (Ord(seed[i mod seedlen]) xor Ord(aUrl[i]));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; key:= key shr 23 or key shl 9;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; result:='http://www.google.com/search?client=navclient-auto&amp;amp;ch=8'+IntToHex(key,8)+'&amp;amp;features=Rank&amp;amp;q=info:'+aUrl;&lt;br /&gt;
&lt;b&gt;&lt;span style="color: red;"&gt;end;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Данная функция хороша тем от готовых компонентов, что вы сами можете выбрать, чем вы будете выполнять запросы, будь то Indy или Synapse ну или ICS. &lt;br /&gt;
Функцию нашел путем поиска в гугле &lt;span style="background-color: #f1c232;"&gt;seed='Mining PageRank is AGAINST GOOGLE&lt;span style="background-color: white;"&gt; так, что я не первый и не последний))&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f1c232;"&gt;&lt;span style="background-color: white;"&gt;Кого интересует код на других языках программирования можете посмотреть &lt;/span&gt;&lt;/span&gt;home.zhiwei.li/&lt;wbr&gt;&lt;/wbr&gt;pagerank&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-5469634125144511314?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/5WnAQfLR-LU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/5469634125144511314/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/02/function-pr-tc-delphi.html#comment-form" title="Комментарии: 9" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/5469634125144511314?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/5469634125144511314?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/5WnAQfLR-LU/function-pr-tc-delphi.html" title="Функция получения PageRank (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-BEkulVzk7Q8/TWp2Yk63-BI/AAAAAAAAAU4/iyNLJetMmSs/s72-c/pr_tc_delphi.png" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/02/function-pr-tc-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcER3Y-eyp7ImA9WhZSE0U.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-1999396677398298142</id><published>2011-02-24T07:24:00.000-08:00</published><updated>2011-03-29T00:33:26.853-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-29T00:33:26.853-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JSON" /><category scheme="http://www.blogger.com/atom/ns#" term="Delphi 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Компоненты" /><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><title>Класс для работы с  JSON в Delphi</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-y-kbeuotSjs/TWaBip9WxdI/AAAAAAAAAU0/HpWQXZvz8bI/s1600/Json_for_delphi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-y-kbeuotSjs/TWaBip9WxdI/AAAAAAAAAU0/HpWQXZvz8bI/s400/Json_for_delphi.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;JSON &lt;/b&gt;(англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми.&lt;br /&gt;
&lt;br /&gt;
Класс&lt;b&gt; lkJSON &lt;/b&gt;для работы с&amp;nbsp; универсальными структурами данных (&lt;b&gt;JSON &lt;/b&gt;) в среде &lt;b&gt;Delphi&lt;/b&gt;. Проверял на работоспособность в среде &lt;b&gt;Delphi 2010&lt;/b&gt;, все прекрасно &lt;b&gt;работает&lt;/b&gt;, в комплекте с классом идут примеры, посмотрев которые можно легко понять, что к чему, так же класс идет в исходном коде и&amp;nbsp; его можно доработать для своих целей.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Этот класс очень помог при разборе структур типа такой:&lt;br /&gt;
Лично мне, показался удобнее &lt;b&gt;XML&lt;/b&gt; для работы с которым есть &lt;b&gt;XMLNative&lt;/b&gt; есть и DOM, но там все как то громоздко слишком, а тут все аккуратненько и компактно.&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Name": "Дмитрий",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "address": {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "streetAddress": "СССР",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "city": "Город",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "postalCode": 77777&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "phoneNumbers": [&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "567890",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "5435345345345"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
По началу естественно хотелось все это дело распарсить, но вот как представишь, как бы это выглядело в коде, голова кругом идет. Решил поискать в интернете может, кто то сталкивался с подобной проблемой и нашел сразу чуть ли не на первой странице этот класс &lt;b&gt;lkJSON 1.07&lt;/b&gt;. О качестве говорить не могу, так ни чего подобного сам не писал, а значит буду довольствоваться тем, что дали)) Класс бесплатный, для подключения ее к проекту необходимо его положить либо рядом с файлом проекта, либо в любое другое место и естественно прописать его в переменных окружения среды &lt;b&gt;Delphi &lt;/b&gt;(иначе толку от того что он там находиться будет мало)&lt;br /&gt;
&lt;br /&gt;
Скачать можно &lt;a href="http://narod.ru/disk/6284595001/lkJSON-1.07.zip.html"&gt;отсюда&lt;/a&gt; (на всякий случай скачал, а то мало ли чего) &lt;a href="http://narod.ru/disk/6284595001/lkJSON-1.07.zip.html"&gt;Download&lt;/a&gt;&lt;br /&gt;
&lt;pre class="de1"&gt;&lt;a href="http://www.blogger.com/goog_1959075678"&gt;
&lt;/a&gt;&lt;/pre&gt;&lt;a href="http://sourceforge.net/projects/lkjson/"&gt;Сайт автора&lt;/a&gt; для скачивания более актуальной версии, я конечно буду стараться обновлять хранилища, но могу не уследить за всем&lt;br /&gt;
&lt;br /&gt;
Более удобная и функциональная &lt;a href="http://nmdsoft.blogspot.com/2011/03/json-superobject-delphi.html"&gt;библиотека для работы с JSON&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-1999396677398298142?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/7Fp493NP6n4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/1999396677398298142/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/02/class-json-delphi.html#comment-form" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/1999396677398298142?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/1999396677398298142?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/7Fp493NP6n4/class-json-delphi.html" title="Класс для работы с  JSON в Delphi" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-y-kbeuotSjs/TWaBip9WxdI/AAAAAAAAAU0/HpWQXZvz8bI/s72-c/Json_for_delphi.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/02/class-json-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GR3w5fSp7ImA9Wx9VFUo.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-8977491008737819746</id><published>2011-02-01T06:31:00.000-08:00</published><updated>2011-02-01T06:50:26.225-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-01T06:50:26.225-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Бот" /><title>Бот для Haddan</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Новая версия бота с исправленными &lt;a href="http://nmdsoft.blogspot.com/2011/01/bot-for-haddan.html"&gt;недочетами предыдущей версии&lt;/a&gt;, выявленными в результате бета-тестирования 2 игроками (ники и имена в секрете).&lt;br /&gt;
&lt;br /&gt;
Внешний вид бота тоже изменился. Появилась возможность сохранения настроек, так же окно информации в котором отображается количество ресурсов которые выкопал бот в процессе работы. Так же у бота теперь привязка к железу.&lt;br /&gt;
Теперь бот выглядит так.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;Вкладка "Главная"&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_v-H92cStNrw/TURZbhLaGlI/AAAAAAAAAUQ/7rgmXfpzgmw/s1600/Haddan_info.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;  &lt;/a&gt;&lt;/div&gt;&lt;div class="ListParagraph" style="text-indent: -18pt;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_v-H92cStNrw/TUgVqP21hRI/AAAAAAAAAUg/ScW4Su76t6Y/s1600/haddan_1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_v-H92cStNrw/TUgVqP21hRI/AAAAAAAAAUg/ScW4Su76t6Y/s320/haddan_1.gif" width="260" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 14pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Время&amp;nbsp; до&amp;nbsp; завершения&amp;nbsp; поиска руды.&lt;/li&gt;
&lt;li&gt;Сколько&amp;nbsp; раз&amp;nbsp; копали&amp;nbsp; в&amp;nbsp; шахте.&lt;/li&gt;
&lt;li&gt;Количество&amp;nbsp; ресурсов&amp;nbsp; в&amp;nbsp; инвентаре.&lt;/li&gt;
&lt;li&gt;Количество&amp;nbsp; добытых&amp;nbsp; ботом&amp;nbsp; ресурсов&amp;nbsp; за&amp;nbsp; одну&amp;nbsp; сессию.&lt;/li&gt;
&lt;/ol&gt;&lt;b&gt;&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;Вкладка "Настройки"&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_v-H92cStNrw/TUgVqV8Q_pI/AAAAAAAAAUk/HZVn9nVWbd4/s1600/haddan_2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_v-H92cStNrw/TUgVqV8Q_pI/AAAAAAAAAUk/HZVn9nVWbd4/s320/haddan_2.gif" width="252" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.&amp;nbsp; Ваш&amp;nbsp; логин&amp;nbsp; в&amp;nbsp; игре&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6.&amp;nbsp; Ваш&amp;nbsp; пароль&amp;nbsp; в игре&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7.&amp;nbsp; Ключ&amp;nbsp; сервиса Antigate.com&lt;br /&gt;
(Ваши&amp;nbsp; персональные&amp;nbsp; данные ( логин, пароль и ключ antigate)&amp;nbsp; нигде кроме&amp;nbsp; Вашего компьютера&amp;nbsp; не&amp;nbsp; сохраняются,&amp;nbsp; и никем кроме Вас&amp;nbsp; не&amp;nbsp; используются!)&lt;br /&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Antigate.com - сервис для автоматического получения текста с картинок (чтобы не вводить их в ручную).&amp;nbsp; Зарегистрироваться можно здесь: &lt;a href="http://antigate.com/index.php?action=regscreen"&gt;http://antigate.com/index.php?action=regscreen&lt;/a&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;span lang="UK"&gt;Коды приглашений:&lt;/span&gt;&lt;br /&gt;
&lt;div class="ListParagraphCxSpMiddle"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;5547bde01c&lt;/div&gt;&lt;div class="ListParagraphCxSpLast"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;b89dad0640&lt;/div&gt;&amp;nbsp;  &lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8.&amp;nbsp; Время,&amp;nbsp; через&amp;nbsp; которое&amp;nbsp; бот&amp;nbsp; будет&amp;nbsp; пытаться&amp;nbsp; снова&amp;nbsp; начать&amp;nbsp; копать. Лучше оставить&amp;nbsp; как&amp;nbsp;&amp;nbsp;&amp;nbsp; есть,&amp;nbsp; чтобы&amp;nbsp; не&amp;nbsp; палиться. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9,10.&amp;nbsp; Тут&amp;nbsp;&amp;nbsp; и&amp;nbsp; так&amp;nbsp; понятно.&lt;br /&gt;
&lt;b&gt;Вкладка "Логи работы программы"&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Все действия работы программы будут отображаться здесь.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;Вкладка "&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 14pt; line-height: 115%;"&gt;Регистрация&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;"&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_v-H92cStNrw/TUgVqtEGCkI/AAAAAAAAAUo/I6tLYdES1CA/s1600/haddan_3.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_v-H92cStNrw/TUgVqtEGCkI/AAAAAAAAAUo/I6tLYdES1CA/s320/haddan_3.gif" width="252" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp; 11.&amp;nbsp; Серийный номер программы.&amp;nbsp; Нужен для составления ключа.&lt;br /&gt;
&amp;nbsp; 12.&amp;nbsp; Ключ можно &lt;a href="http://www.kvrsoft.com/regsoft/haddan/"&gt;приобрести тут&lt;/a&gt; или написать в icq и там обсудить другой способ оплаты.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Стоимость бота 500 рублей. &lt;br /&gt;
&amp;nbsp; 13. После&amp;nbsp; ввода ключа нужно нажать кнопку «Зарегистрировать».&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Скачать бота можно вот &lt;a href="http://narod.ru/disk/4710882001/Haddan.zip.html"&gt;отсюда&lt;/a&gt;&amp;nbsp; &lt;a href="http://narod.ru/disk/4710882001/Haddan.zip.html"&gt;Download&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-8977491008737819746?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/0x3nr5mbmjE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/8977491008737819746/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/02/bot-for-haddan.html#comment-form" title="Комментарии: 11" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8977491008737819746?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8977491008737819746?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/0x3nr5mbmjE/bot-for-haddan.html" title="Бот для Haddan" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_v-H92cStNrw/TUgVqP21hRI/AAAAAAAAAUg/ScW4Su76t6Y/s72-c/haddan_1.gif" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/02/bot-for-haddan.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YGQ3k8cCp7ImA9Wx9VFUo.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-1347550045692140160</id><published>2011-01-08T08:25:00.000-08:00</published><updated>2011-02-01T06:38:42.778-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-01T06:38:42.778-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Бот" /><title>Бот для Haddan</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Бот для игры Haddan автоматически выполняет все действия при добывании руды (профессия шахтер). Теперь при добыче руды не нужно вводить текст с картинки (капчу), за вас это сделает программа с помощью сервиса &lt;noindex&gt;http://antigate.com&lt;/noindex&gt; ! Цена одной распознаной картинки, а следовательно одного подхода стоит всего 0,1 цента (3 Русских копейки) ! Бот сэкономит ваше время и деньги (на сайте хаддана эта услуга стоит намного больше !) Бота можно оставить наночь или запустить после включения компьютера и забыть. Через пару дней зайдите в игру и посмотрите свои ресурсы в инвентаре. Вы будете приятно удивлены :-)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_v-H92cStNrw/TSiOdzJTu3I/AAAAAAAAAUE/QlZsdWOMmYU/s1600/Windows+Bitmap+Image.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_v-H92cStNrw/TSiOdzJTu3I/AAAAAAAAAUE/QlZsdWOMmYU/s320/Windows+Bitmap+Image.PNG" width="225" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Вводим логин, пароль игры + ваш captcha ключ. Если есть идеи по дополнению функционала пишите, сделаем по возможности.&lt;br /&gt;
&lt;br /&gt;
Скачать новую версию бота для&amp;nbsp; Haddan можно &lt;a href="http://nmdsoft.blogspot.com/2011/02/bot-for-haddan.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://nmdsoft.blogspot.com/2011/02/bot-for-haddan.html"&gt;Download&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Бот в работе&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_v-H92cStNrw/TSiRIXJfOoI/AAAAAAAAAUI/YYpYiYkJH4I/s1600/Bot.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_v-H92cStNrw/TSiRIXJfOoI/AAAAAAAAAUI/YYpYiYkJH4I/s320/Bot.PNG" width="227" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-1347550045692140160?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/gYmyh-mTbpk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/1347550045692140160/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/01/bot-for-haddan.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/1347550045692140160?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/1347550045692140160?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/gYmyh-mTbpk/bot-for-haddan.html" title="Бот для Haddan" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_v-H92cStNrw/TSiOdzJTu3I/AAAAAAAAAUE/QlZsdWOMmYU/s72-c/Windows+Bitmap+Image.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/01/bot-for-haddan.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ERXc9fCp7ImA9Wx9XFEw.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-4607186943421748462</id><published>2011-01-07T07:06:00.000-08:00</published><updated>2011-01-07T07:06:44.964-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-07T07:06:44.964-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Функции" /><category scheme="http://www.blogger.com/atom/ns#" term="Полезное" /><category scheme="http://www.blogger.com/atom/ns#" term="Synapse" /><title>Отправка файла Synapse</title><content type="html">Код функции по отправке файла&lt;br /&gt;
Автор: Eric Paschoalick Chaves&lt;br /&gt;
&lt;br /&gt;
function &lt;b&gt;HttpPostFileForm&lt;/b&gt;(const URL, FieldName, FileName: string; const Data: TStream; const FormFields:TStrings; const ResultData:&lt;br /&gt;
TStrings): Boolean;&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; HTTP: THTTPSend;&lt;br /&gt;
&amp;nbsp; Bound, s: AnsiString;//был string, но для России не катит ( ! )&lt;br /&gt;
&amp;nbsp; i:integer;&lt;br /&gt;
const&lt;br /&gt;
&amp;nbsp; CRLF=#13#10;&lt;br /&gt;
&amp;nbsp; FIELD_MASK = CRLF + '--%s' + CRLF +'Content-Disposition: form-data; name="%s"' + CRLF + CRLF+'%s';&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; Bound := IntToHex(Random(MaxInt), 8) + '_Synapse_boundary';&lt;br /&gt;
&amp;nbsp; HTTP := THTTPSend.Create;&lt;br /&gt;
&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; s := '--' + Bound + CRLF;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; s := s + 'content-disposition: form-data; name="' + FieldName +'";';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; s := s + ' filename="' + FileName +'"' + CRLF;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; s := s + 'Content-Type: Application/octet-string' + CRLF + CRLF;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP.Document.Write(Pointer(s)^, Length(s));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP.Document.CopyFrom(Data, 0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Include formfield&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for i:=0 to FormFields.Count-1 do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S:= Format(FIELD_MASK,[Bound, FormFields.Names[I],FormFields.Values[FormFields.Names[I]]]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP.Document.Write(Pointer(S)^, Length(S));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; s := CRLF + '--' + Bound + '--' + CRLF;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP.Document.Write(Pointer(s)^, Length(s));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP.MimeType := 'multipart/form-data, boundary=' + Bound;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := HTTP.HTTPMethod('POST', URL);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ResultData.LoadFromStream(HTTP.Document);&lt;br /&gt;
&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP.Free;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Пример использования&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
var Data:TFileStream;&lt;br /&gt;
&amp;nbsp;FormFields:TStrings;&lt;br /&gt;
&amp;nbsp;FileName:String;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp;FileName:='/home/theo/test.zip';&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Data:=TFileStream.Create(FileName, fmOpenRead);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;FormFields:=TStringList.Create;&lt;br /&gt;
&amp;nbsp;FormFields.Add('Feld2=testen');&lt;br /&gt;
&amp;nbsp;FormFields.Add('Feld3=sie mit');&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;HttpPostFileForm('http://localhost/theohome/php/listpost.php',&lt;br /&gt;
&amp;nbsp; 'Feld1',&lt;br /&gt;
&amp;nbsp; ExtractFileName(FileName),&lt;br /&gt;
&amp;nbsp; Data,&lt;br /&gt;
&amp;nbsp; FormFields,&lt;br /&gt;
&amp;nbsp; Memo1.lines);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Data.Free;&lt;br /&gt;
&amp;nbsp;FormFields.free;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Возможно кому нибудь пригодиться&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-4607186943421748462?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/ovCoNUmqrQo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/4607186943421748462/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/01/synapse.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4607186943421748462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4607186943421748462?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/ovCoNUmqrQo/synapse.html" title="Отправка файла Synapse" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/01/synapse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8FQn47eCp7ImA9Wx9aFU0.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-6214544245724055149</id><published>2011-01-06T01:13:00.000-08:00</published><updated>2011-03-07T05:00:13.000-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-07T05:00:13.000-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TStringList" /><title>TStringList замена переносов строки запятыми</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; st:TStringList;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; st:=TStringList.Create;&lt;br /&gt;
&amp;nbsp; try&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Add('1');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Add('2');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Add('3');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Add('4');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Add('5');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Delimiter:=',';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1.Text:=st.DelimitedText; //результат 1,2,3,4,5&lt;br /&gt;
&amp;nbsp; finally &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Free;&lt;br /&gt;
&amp;nbsp; end; &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Хотя можно было использовать StringReplace, но если есть это в классе то зачем))&lt;br /&gt;
Обратная задача&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; st:TStringList;&lt;br /&gt;
&amp;nbsp; i:integer; &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; st:=TStringList.Create;&lt;br /&gt;
&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; st.Delimiter:=',';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; st.DelimitedText:= Memo1.Text;//текст разделенный запятыми&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; //теперь можно обращаться по индексу&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i := 0 to sTemp.Count - 1 do&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //переменная string:=st.string[i];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; //или&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1.Lines:=st;&lt;br /&gt;
&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Free;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-6214544245724055149?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/oQtKIfGaLMI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/6214544245724055149/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/01/tstringlist.html#comment-form" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6214544245724055149?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6214544245724055149?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/oQtKIfGaLMI/tstringlist.html" title="TStringList замена переносов строки запятыми" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/01/tstringlist.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIMQnk-eyp7ImA9WhZRGUU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-6419274971930795848</id><published>2011-01-05T08:32:00.000-08:00</published><updated>2011-04-16T13:09:43.753-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-16T13:09:43.753-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Бот" /><title>Бот для Тюряги (онлайн игра вконтакте+mail)</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;
Сделал новую версию всех, кто купил старую версию просьба написать номер телефона с которого платили без 2 последних цифр и email для отправки новой версии бота, пишем в комментариях при модерации удалю.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Данный бот может делать автоматически или в ручном режиме следующее:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Собирать сигареты со двора&lt;/li&gt;
&lt;li&gt;Звать всех друзей в качалку&lt;/li&gt;
&lt;li&gt;Отправлять подогревы (любого уровня (если дыры в игре не закрыли, пока работает))&lt;/li&gt;
&lt;li&gt;Получать подогревы&lt;/li&gt;
&lt;li&gt;Выполнять движухи на зонах&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_v-H92cStNrw/TSScfyJewII/AAAAAAAAATw/cqeg1S4Siok/s1600/vk_bot.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_v-H92cStNrw/TSScfyJewII/AAAAAAAAATw/cqeg1S4Siok/s320/vk_bot.PNG" width="299" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Теперь и для мейла и вконтакта в одном флаконе&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IBCDDBa13PE/TY9OaUFPK6I/AAAAAAAAAWA/usOixYMaTE4/s1600/%25D1%2582%25D1%258E%25D1%2580%25D1%258F%25D0%25B3%25D0%25B0+vk+and+mail.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-IBCDDBa13PE/TY9OaUFPK6I/AAAAAAAAAWA/usOixYMaTE4/s320/%25D1%2582%25D1%258E%25D1%2580%25D1%258F%25D0%25B3%25D0%25B0+vk+and+mail.PNG" width="299" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Для работы программы необходим логин и пароль вконтакте.&lt;br /&gt;
Для того чтобы программа работала корректно необходимо ей один раз показать когда вы делаете сбор во дворе, отправить подогрев и другое. Просто программе нужна точка отсчета от которой она может отталкиваться для выполнения уже тех же самых действий в автоматическом режиме.&lt;br /&gt;
&lt;br /&gt;
Вирусов нет, пароли и логины, мне ваши не нужны.&lt;br /&gt;
&lt;br /&gt;
НОВАЯ ВЕРСИЯ от 4 марта 2011 года.&lt;br /&gt;
теперь можно качать, как и говорил раньше, кто купил старую версию пишут в комментариях номер с которого платили без последних двух цифр и адрес электронной почты на который, я отправлю вам новую версию бота.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Скачать &lt;/b&gt;отсюда Download&lt;br /&gt;
&lt;br /&gt;
НОВАЯ ВЕРСИЯ от 27 марта 2011 года.&lt;br /&gt;
Теперь бот работает и в mail'е достаточно выбрать переключатель нужного вам сервиса&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-zmlh892eclg/TY9PFRelxeI/AAAAAAAAAWE/2yKAuQfE0vk/s1600/%25D1%2582%25D1%258E%25D1%2580%25D1%258F%25D0%25B3%25D0%25B0+vk+and+mail+2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-zmlh892eclg/TY9PFRelxeI/AAAAAAAAAWE/2yKAuQfE0vk/s1600/%25D1%2582%25D1%258E%25D1%2580%25D1%258F%25D0%25B3%25D0%25B0+vk+and+mail+2.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="color: red;"&gt;Стоимость бота для тюряги в mail&amp;nbsp; и вконтакте 50 рублей. (смс теперь не принимаю)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Скачать бот для тюряги с поддержкой mail и вконтакта &lt;/b&gt;отсюда Download&lt;br /&gt;
&lt;br /&gt;
Так же можете заказать бота для другой игры, путем отправки комментария в этой теме стоимость от 100 до 1500 руб в зависимости от сложности ))&lt;br /&gt;
&lt;div style="color: #cc0000;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #cc0000;"&gt;ПРОИЗОШЛИ изменения на сайте так что все кто купил пишем свои номера без последних двух чисел и получаем исправленную версию (пишите в комментариях).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Для тех кто думает, что обман не качайте ваше право, не нужно меня учить жить... как нибудь сам, а тем кто хочет на халяву да ради бога только не тут))!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-6419274971930795848?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/TPclX9yyN-s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/6419274971930795848/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2011/01/blog-post.html#comment-form" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6419274971930795848?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6419274971930795848?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/TPclX9yyN-s/blog-post.html" title="Бот для Тюряги (онлайн игра вконтакте+mail)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_v-H92cStNrw/TSScfyJewII/AAAAAAAAATw/cqeg1S4Siok/s72-c/vk_bot.PNG" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2011/01/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYAQXc5cCp7ImA9Wx9QFkk.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-4025600610235781966</id><published>2010-12-29T08:03:00.000-08:00</published><updated>2010-12-29T10:25:40.928-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-29T10:25:40.928-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Wininet" /><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><title>Простенький пример выполнения запроса в Wininet</title><content type="html">По просьбе трудящихся выкладываю вот такой простенький исходник программки с помощью, которой можно получить ТИЦ и PR&amp;nbsp; сайта путем выполнения POST запроса &lt;br /&gt;
&lt;br /&gt;
Скрин примера&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_v-H92cStNrw/TRta_30u8QI/AAAAAAAAATs/ktvHaO5HHsk/s1600/wininet.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://2.bp.blogspot.com/_v-H92cStNrw/TRta_30u8QI/AAAAAAAAATs/ktvHaO5HHsk/s320/wininet.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
unit main;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;
&amp;nbsp; Dialogs,WinInet, StdCtrls;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
&amp;nbsp; TfrmMain = class(TForm)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Button1: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; edtSite: TEdit;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lblTC_PR: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lblSite: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Button1Click(Sender: TObject);&lt;br /&gt;
&amp;nbsp; private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;
&amp;nbsp; public&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; frmMain: TfrmMain;&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$R *.dfm}&lt;br /&gt;
const&lt;br /&gt;
&amp;nbsp; // дефолное название приложение через которое якобы происходит соединение&lt;br /&gt;
&amp;nbsp; DefaultAppName ='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6';&lt;br /&gt;
&lt;br /&gt;
function exam(msData: TMemoryStream):string;&lt;br /&gt;
&amp;nbsp; function DataAvailable(hRequest: pointer; out Size: cardinal): BOOLEAN;&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := WinInet.InternetQueryDataAvailable(hRequest, Size, 0, 0);&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; hInternet, hConnect, hRequest: pointer;&lt;br /&gt;
&amp;nbsp; dwBytesRead, i, L: cardinal;&lt;br /&gt;
&amp;nbsp; sTemp: AnsiString; // текст страницы&lt;br /&gt;
&amp;nbsp; sHeader: String;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; Result:='';&lt;br /&gt;
&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; hInternet := InternetOpen(PChar(DefaultAppName),INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if Assigned(hInternet) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Открываем сессию&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //http://ip-whois.net/pr_cy_check.php обратите внимание как записал в коде адрес сайта&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hConnect := InternetConnect(hInternet, PWideChar('ip-whois.net'),INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Assigned(hConnect) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // открываем запрос&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hRequest := HttpOpenRequest(hConnect, PWideChar('POST'),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PWideChar('/pr_cy_check.php'), HTTP_VERSION, nil, Nil,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTERNET_FLAG_KEEP_CONNECTION, 1);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sHeader:='Accept: */*';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sHeader:= 'Content-Type: application/x-www-form-urlencoded';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sHeader:= 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sHeader:= 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Assigned(hRequest) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Отправляем запрос&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i := 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if HttpSendRequest(hRequest, nil, 0, msData.memory, msData.Size) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; repeat&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataAvailable(hRequest, L); // Получаем кол-во принимаемых данных&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if L = 0 then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetLength(sTemp, L + i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not InternetReadFile(hRequest, @sTemp[i], sizeof(L),dwBytesRead) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; // Получаем данные с сервера&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inc(i, dwBytesRead);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; until dwBytesRead = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sTemp[i] := #0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result:=sTemp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InternetCloseHandle(hRequest);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InternetCloseHandle(hConnect);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InternetCloseHandle(hInternet);&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function TC_PR(aValue:string):string;&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; i:Integer;&lt;br /&gt;
&amp;nbsp; TC,PR:string;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; i:=AnsiPos('&amp;lt;/h2&amp;gt;&amp;lt;h3&amp;gt;ТИЦ: ',aValue);&lt;br /&gt;
&amp;nbsp; if i=0 then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Result:='Неизвестно!';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; Delete(aValue,1,i+length('&amp;lt;/h2&amp;gt;&amp;lt;h3&amp;gt;ТИЦ: ')-1);&lt;br /&gt;
&amp;nbsp; i:=AnsiPos('&amp;lt;/h3&amp;gt;&amp;lt;h3&amp;gt;PR: ',aValue);&lt;br /&gt;
&amp;nbsp; TC:=Copy(aValue,0,i-1);&lt;br /&gt;
&amp;nbsp; Delete(aValue,1,i+length('&amp;lt;/h3&amp;gt;&amp;lt;h3&amp;gt;PR: ')-1);&lt;br /&gt;
&amp;nbsp; i:=AnsiPos('&amp;lt;/h3&amp;gt;&amp;lt;br&amp;gt;',aValue);&lt;br /&gt;
&amp;nbsp; PR:=Copy(aValue,0,i-1);&lt;br /&gt;
&amp;nbsp; Result:='ТИЦ '+TC+' PR '+PR;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.Button1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; zapros:TStringStream;&lt;br /&gt;
&amp;nbsp; sTemp:string;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; zapros:=TStringStream.Create;&lt;br /&gt;
&amp;nbsp; zapros.WriteString('T1='+edtSite.Text+'&amp;amp;B1=T2=%D3%E7%ED%E0%F2%FC+%D2%C8%D6+%E8+PR');&lt;br /&gt;
&amp;nbsp; sTemp:=exam(zapros);&lt;br /&gt;
&amp;nbsp; if Length(sTemp)&amp;gt;0 then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lblTC_PR.Caption:=TC_PR(sTemp);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; zapros.Free;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
Скачать исходник проекта можно &lt;a href="http://narod.ru/disk/2403403001/wininetExm.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/2403403001/wininetExm.zip.html"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-4025600610235781966?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/pioqgcrH5DY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/4025600610235781966/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/12/wininet.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4025600610235781966?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4025600610235781966?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/pioqgcrH5DY/wininet.html" title="Простенький пример выполнения запроса в Wininet" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_v-H92cStNrw/TRta_30u8QI/AAAAAAAAATs/ktvHaO5HHsk/s72-c/wininet.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/12/wininet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYNQ3s_fCp7ImA9Wx9SE00.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-4284676168363708512</id><published>2010-12-02T06:20:00.000-08:00</published><updated>2010-12-02T06:29:52.544-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-02T06:29:52.544-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Delphi события" /><title>Конкурс на WebDelphi с неограниченным призовым фондом.</title><content type="html">Хочу поздравить всех со вторым днем зимы и сообщить о прекрасном известии.&lt;br /&gt;
&lt;br /&gt;
1 декабря 2010 года (т.е. вчера) начался конкурс по программированию с неограниченным призовым фондом ( все зависит от количества принявших в нем участие людей( 50 рублей за каждого нового конкурсанта), но начальный призовой фонд составляет 1000 рублей ).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="color: red;"&gt;Принять участие в конкурсе могут все программисты&lt;/span&gt;&lt;/b&gt; круг не ограничивается только &lt;b&gt;Delphi &lt;/b&gt;(нас ни так много, но мы в тельняшках).&lt;br /&gt;
&lt;br /&gt;
Если вы не профессионал то не беда, программу будут оценивать только по ее функционалу далекие от программирования люди следовательно и у вас есть шанс занять почетное первое место в этом конкурсе.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.webdelphi.ru/2010/12/konkurs-na-webdelphi-s-neogranichennym-prizovym-fondom/"&gt;Правила и требования для участия в конкурсе можете просмотреть на сайте автора конкурса!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Желаю удачи!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-4284676168363708512?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/BmzUzexBYg8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/4284676168363708512/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/12/competition-for-webdelphi-with.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4284676168363708512?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4284676168363708512?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/BmzUzexBYg8/competition-for-webdelphi-with.html" title="Конкурс на WebDelphi с неограниченным призовым фондом." /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/12/competition-for-webdelphi-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAHSXo6fCp7ImA9Wx9TEk4.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-9018295496864294790</id><published>2010-11-19T08:17:00.000-08:00</published><updated>2010-11-19T22:15:38.414-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-19T22:15:38.414-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Функции" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>Время простоя ПК</title><content type="html">function CheckIddleTime: DWord;&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp;&amp;nbsp; LastInput: TLastInputInfo;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp; LastInput.cbSize := SizeOf(TLastInputInfo);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; GetLastInputInfo(LastInput);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Result := GetTickCount - LastInput.dwTime;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.Timer1Timer(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Label1.Caption:= 'Время простоя: ' + vartostr(CheckIddleTime/1000)+' секунд(ы)';&lt;br /&gt;
end;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-9018295496864294790?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/2vurlckl9ik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/9018295496864294790/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/11/downtime-pc.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/9018295496864294790?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/9018295496864294790?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/2vurlckl9ik/downtime-pc.html" title="Время простоя ПК" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/11/downtime-pc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AHSX88fip7ImA9Wx9TEUU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-4294893345825599605</id><published>2010-11-18T08:38:00.000-08:00</published><updated>2010-11-19T07:48:58.176-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-19T07:48:58.176-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Исходник" /><title>Создание именованной, совместно используемой памяти (Delphi)</title><content type="html">Отображение файла в память для совместного использования несколькими процессами. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_v-H92cStNrw/TOVXzY6Tb0I/AAAAAAAAASo/xCjrT5VwqnI/s1600/delphi.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://4.bp.blogspot.com/_v-H92cStNrw/TOVXzY6Tb0I/AAAAAAAAASo/xCjrT5VwqnI/s400/delphi.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Первый процесс создает файл Temp.txt, после чего проецирует его в память&lt;br /&gt;
&lt;br /&gt;
//первый процесс&lt;br /&gt;
unit mainServ;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;
&amp;nbsp; Dialogs, StdCtrls;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
type&lt;br /&gt;
&amp;nbsp; TForm1 = class(TForm)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnCreate: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1: TMemo;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnCreateClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;
&amp;nbsp; public&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
const&lt;br /&gt;
&amp;nbsp; MMFName: PWideChar = 'DelphiFileMappedExample'; // имя объекта файлового отображения&lt;br /&gt;
&amp;nbsp; bufSize=100;//размер буфера&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; Form1: TForm1;&lt;br /&gt;
&amp;nbsp; hFile,hMapedFile:HWND;&lt;br /&gt;
&amp;nbsp; pMapFile:Pointer;&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$R *.dfm}&lt;br /&gt;
&lt;br /&gt;
//Создание именованной, совместно используемой памяти&lt;br /&gt;
procedure TForm1.btnCreateClick(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; outBuff:array[0..bufSize] of Char;&lt;br /&gt;
&amp;nbsp; byteWrt:Cardinal;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; if not Assigned(pMapFile) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UnmapViewOfFile(pMapFile);&lt;br /&gt;
&amp;nbsp; if hMapedFile&amp;lt;&amp;gt;INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
&amp;nbsp; if (hFile&amp;lt;&amp;gt;INVALID_HANDLE_VALUE) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hFile);&lt;br /&gt;
&amp;nbsp; hFile:=CreateFile(PWideChar('Temp.txt'),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GENERIC_READ or GENERIC_WRITE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_SHARE_READ or FILE_SHARE_WRITE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nil,CREATE_ALWAYS or OPEN_EXISTING,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_ATTRIBUTE_NORMAL,0);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if hFile=INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при создании файла '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; StrPCopy(outBuff,Memo1.Lines.Text);&lt;br /&gt;
&amp;nbsp; WriteFile(hFile,outBuff,bufSize*SizeOf(Char),byteWrt,nil);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; hMapedFile:=CreateFileMapping(hFile,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //INVALID_HANDLE_VALUE-использование файла подкачки&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nil,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // защита по умолчанию&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_READWRITE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //доступ к чтению/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // макс. размер объекта&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize*SizeOf(Char), // размер буфера&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMFName);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // имя отраженного в памяти объекта&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if hMapedFile=INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при проецировании файла в память '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; pMapFile:=MapViewOfFile(hMapedFile,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //дескриптор "проецируемого" объекта&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_MAP_ALL_ACCESS,&amp;nbsp; // разрешение чтения/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize*SizeOf(Char));//размер буфера&lt;br /&gt;
&amp;nbsp; if pMapFile=nil then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при отображении файла '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; if not Assigned(pMapFile) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UnmapViewOfFile(pMapFile);&lt;br /&gt;
&amp;nbsp; if hMapedFile&amp;lt;&amp;gt;INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
&amp;nbsp; if (hFile&amp;lt;&amp;gt;INVALID_HANDLE_VALUE) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hFile);end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
Когда процессу больше не нужен доступ к объекту "проекция файла в память", он должен вызвать функцию CloseHandle. Когда все дескрипторы закрыты, система может освободить секцию файла подкачки, используемого объектом.&lt;br /&gt;
&lt;br /&gt;
Второй процесс может получить доступ к одним и тем же данным при помощи вызова функции OpenFileMapping с тем же самым именем, что и первый процесс. Он может затем использовать функцию MapViewOfFile, чтобы получить указатель на представление данных файла.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//второй процесс&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unit clientMain;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;
&amp;nbsp; Dialogs, StdCtrls;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
&amp;nbsp; TForm1 = class(TForm)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnRead: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1: TMemo;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnReadClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp; private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;
&amp;nbsp; public&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
const&lt;br /&gt;
&amp;nbsp; MMFName: PWideChar = 'DelphiFileMappedExample'; // имя объекта файлового отображения&lt;br /&gt;
&amp;nbsp; bufSize=100;//размер буфера&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; Form1: TForm1;&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$R *.dfm}&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.btnReadClick(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; hMapedFile:HWND;&lt;br /&gt;
&amp;nbsp; pMapFile:Pointer;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; hMapedFile:=OpenFileMapping(FILE_MAP_ALL_ACCESS, // доступ к чтению/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False, //имя не наследуется&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMFName);//имя "проецируемого " объекта&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if hMapedFile=INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при проецировании файла в память '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; pMapFile:=MapViewOfFile(hMapedFile,//дескриптор "проецируемого" объекта&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_MAP_ALL_ACCESS,// разрешение чтения/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize*SizeOf(Char));//размер буфера&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if pMapFile=nil then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при отображении файла '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; Memo1.Text:=PChar(pMapFile);&lt;br /&gt;
&amp;nbsp; UnmapViewOfFile(pMapFile);&lt;br /&gt;
&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
Когда процессу больше не нужен доступ к объекту "проекция файла в память", он должен вызвать функцию CloseHandle. Когда все дескрипторы закрыты, система может освободить секцию файла подкачки, используемого объектом.&lt;br /&gt;
&lt;br /&gt;
Скачать проекты можно &lt;a href="http://narod.ru/disk/29675001/creating-named-shared-memory_%20Delphi.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/29675001/creating-named-shared-memory_%20Delphi.zip.html"&gt;Download &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-4294893345825599605?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/XEimyhJ18Hc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/4294893345825599605/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/11/creating-named-shared-memory.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4294893345825599605?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/4294893345825599605?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/XEimyhJ18Hc/creating-named-shared-memory.html" title="Создание именованной, совместно используемой памяти (Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_v-H92cStNrw/TOVXzY6Tb0I/AAAAAAAAASo/xCjrT5VwqnI/s72-c/delphi.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/11/creating-named-shared-memory.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYDQ3kyfSp7ImA9Wx9TEUU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-6394260804800468785</id><published>2010-11-17T05:46:00.000-08:00</published><updated>2010-11-19T07:56:12.795-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-19T07:56:12.795-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Иститут" /><title>Файлы, проецируемые в память</title><content type="html">Технология файлов, проецируемых в память, является изящным средством для разделения ресурсов файловой системы между процессами.&lt;br /&gt;
При проецировании файла на адресное пространство процесса процесс может обращаться к содержимому файла так, как если бы файл был загружен в оперативную память.&lt;br /&gt;
Если несколько процессов выполняют проецирование одного и того же файла, то содержимое файла будет доступно для всех процессов, то есть позволит избежать загрузки множества экземпляров файла в оперативную память.&lt;br /&gt;
Для проецируемых файлов применяется 64-битная адресация, что позволяет использовать данную технологию для обработки сверхбольших (до 18 экзабайт) файлов, преодолевая, тем самым, ограничение на размер файла в 2 гигабайта.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Порядок работы:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Проецируемый файл открывается при помощи функции &lt;b&gt;CreateFile&lt;/b&gt;() или &lt;b&gt;OpenFile&lt;/b&gt;().&lt;/li&gt;
&lt;li&gt;Создается новый объект ядра ОС типа «файл, проецируемый в память» системным вызовом &lt;b&gt;CreateFileMapping&lt;/b&gt;(). В качестве первого параметра в него передается описатель файла открытого функцией &lt;b&gt;CreateFile&lt;/b&gt;().&lt;/li&gt;
&lt;li&gt;Вызов функции &lt;b&gt;MapViewOfFile&lt;/b&gt;() возвращает указатель на участок спроецированного файла. После вызова &lt;b&gt;MapViewOfFile&lt;/b&gt;() можно осуществлять чтение данных из области адресного, обозначенного возвращенным указателем.&lt;/li&gt;
&lt;li&gt;После завершения чтения вызывается функция &lt;b&gt;UnmapViewOfFile&lt;/b&gt;(), в качестве параметра в нее передается указатель, возвращенный на этапе (3).&lt;/li&gt;
&lt;li&gt;Закрываем описатель файла функцией &lt;b&gt;CloseHandle&lt;/b&gt;().&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Задание.&lt;br /&gt;
Решить задачу из лабораторной работы №5 с использованием файлов, проецируемых в память, вместо каналов. Требуется запустить «программу-писатель» и несколько экземпляров «программы-читателя». Программа-писатель постоянно обновляет содержимое некоторого файла. Программы читатели проецируют данный файл на собственное адресное пространство. При обновлении файла происходит автоматическое обновление содержимого файла в окнах программ-читателей.&lt;br /&gt;
&lt;br /&gt;
Решение реализовал вот так:&lt;br /&gt;
если увидите ошибки в коде, напишите пожалуйста, я обязательно исправлю и приму к сведению, что ни так. Чтобы не возникало потом подобных ляпов.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_v-H92cStNrw/TOaeEtMl1mI/AAAAAAAAASs/YQYVdmcPmS8/s1600/files-that-are-projected-in-memory.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://2.bp.blogspot.com/_v-H92cStNrw/TOaeEtMl1mI/AAAAAAAAASs/YQYVdmcPmS8/s400/files-that-are-projected-in-memory.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
//сервер&lt;br /&gt;
unit mainServ;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;
&amp;nbsp; Dialogs, StdCtrls, ExtCtrls;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
&amp;nbsp; TfrmServer = class(TForm)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnCreate: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1: TMemo;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Timer1: TTimer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnCreateClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Timer1Timer(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure CreateFileMap;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure CloseFileMap;&lt;br /&gt;
&amp;nbsp; public&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
const&lt;br /&gt;
&amp;nbsp; MMFName: PWideChar = 'DelphiFileMappedExample'; // имя объекта файлового отображения&lt;br /&gt;
&amp;nbsp; bufSize=2048;//размер буфера&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; hFile,hMapedFile:HWND;&lt;br /&gt;
&amp;nbsp; pMapFile:Pointer;&lt;br /&gt;
&amp;nbsp; frmServer: TfrmServer;&lt;br /&gt;
&amp;nbsp; WM_WRITEFILEMAP:Cardinal;&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$R *.dfm}&lt;br /&gt;
&lt;br /&gt;
procedure TfrmServer.btnCreateClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; CreateFileMap;////Создание именованной, совместно используемой памяти&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmServer.CloseFileMap;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; if not Assigned(pMapFile) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UnmapViewOfFile(pMapFile);&lt;br /&gt;
&amp;nbsp; if hMapedFile&amp;lt;&amp;gt;INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
&amp;nbsp; if (hFile&amp;lt;&amp;gt;INVALID_HANDLE_VALUE) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hFile);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Создание именованной, совместно используемой памяти&lt;br /&gt;
procedure TfrmServer.CreateFileMap;&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; outBuff:array[0..bufSize] of Char;&lt;br /&gt;
&amp;nbsp; byteWrt:Cardinal;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; CloseFileMap;&lt;br /&gt;
&amp;nbsp; hFile:=CreateFile(PWideChar('Temp.txt'),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GENERIC_READ or GENERIC_WRITE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_SHARE_READ or FILE_SHARE_WRITE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nil,CREATE_ALWAYS or OPEN_EXISTING,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_ATTRIBUTE_NORMAL,0);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if hFile=INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при создании файла '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; Memo1.MaxLength:=bufSize;&lt;br /&gt;
&amp;nbsp; StrPCopy(outBuff,Memo1.Lines.Text);&lt;br /&gt;
&amp;nbsp; WriteFile(hFile,outBuff,bufSize*SizeOf(Char),byteWrt,nil);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; hMapedFile:=CreateFileMapping(hFile,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //INVALID_HANDLE_VALUE-использование файла подкачки&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nil,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // защита по умолчанию&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_READWRITE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //доступ к чтению/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // макс. размер объекта&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize*SizeOf(Char), // размер буфера&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMFName);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // имя отраженного в памяти объекта&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if hMapedFile=INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при проецировании файла в память '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; pMapFile:=MapViewOfFile(hMapedFile,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //дескриптор "проецируемого" объекта&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_MAP_ALL_ACCESS,&amp;nbsp; // разрешение чтения/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize*SizeOf(Char));//размер буфера&lt;br /&gt;
&amp;nbsp; if pMapFile=nil then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при отображении файла '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; //оповещаем всех клиентов о том, что файл изменился))&lt;br /&gt;
&amp;nbsp; SendMessage(HWND_BROADCAST,WM_WRITEFILEMAP,0,0);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmServer.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; CloseFileMap;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmServer.Timer1Timer(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; Memo1.Lines.Add(TimeToStr(time));&lt;br /&gt;
&amp;nbsp; if Length(Memo1.Text) &amp;gt;=bufSize then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1.Clear;&lt;br /&gt;
&amp;nbsp; CreateFileMap;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
initialization&lt;br /&gt;
&amp;nbsp; WM_WRITEFILEMAP:=RegisterWindowMessage('WM_WRITEFILEMAP');&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//клиент&lt;br /&gt;
&lt;br /&gt;
unit clientMain;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;
&amp;nbsp; Dialogs, StdCtrls;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
&amp;nbsp; TfrmClient = class(TForm)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnRead: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1: TMemo;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnReadClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp; private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;
&amp;nbsp; public&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;
&amp;nbsp; protected&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure WndProc(var Msg: TMessage); override;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
const&lt;br /&gt;
&amp;nbsp; MMFName: PWideChar = 'DelphiFileMappedExample'; // имя объекта файлового отображения&lt;br /&gt;
&amp;nbsp; bufSize=100;//размер буфера&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; frmClient: TfrmClient;&lt;br /&gt;
&amp;nbsp; WM_WRITEFILEMAP:Cardinal;&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$R *.dfm}&lt;br /&gt;
&lt;br /&gt;
procedure TfrmClient.btnReadClick(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; hMapedFile:HWND;&lt;br /&gt;
&amp;nbsp; pMapFile:Pointer;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; hMapedFile:=OpenFileMapping(FILE_MAP_ALL_ACCESS, // доступ к чтению/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False, //имя не наследуется&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMFName);//имя "проецируемого " объекта&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if hMapedFile=INVALID_HANDLE_VALUE then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при проецировании файла в память '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; pMapFile:=MapViewOfFile(hMapedFile,//дескриптор "проецируемого" объекта&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_MAP_ALL_ACCESS,// разрешение чтения/записи&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize*SizeOf(Char));//размер буфера&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if pMapFile=nil then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Ошибка при отображении файла '+SysErrorMessage(GetLastError));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; Memo1.Text:=PChar(pMapFile);&lt;br /&gt;
&amp;nbsp; UnmapViewOfFile(pMapFile);&lt;br /&gt;
&amp;nbsp; CloseHandle(hMapedFile);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmClient.WndProc(var Msg: TMessage);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; inherited;&lt;br /&gt;
&amp;nbsp; if Msg.Msg=WM_WRITEFILEMAP then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnReadClick(Self);&lt;br /&gt;
&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
initialization&lt;br /&gt;
&amp;nbsp; WM_WRITEFILEMAP:=RegisterWindowMessage('WM_WRITEFILEMAP');&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
Исходные коды проекта для delphi 2010 можно скачать &lt;a href="http://narod.ru/disk/30908001/Laba6.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/30908001/Laba6.zip.html"&gt;Download&lt;/a&gt; немного переделав они будут работать и под Delphi 7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-6394260804800468785?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/esdxPjxyAH4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/6394260804800468785/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/11/files-that-are-projected-in-memory.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6394260804800468785?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6394260804800468785?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/esdxPjxyAH4/files-that-are-projected-in-memory.html" title="Файлы, проецируемые в память" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_v-H92cStNrw/TOaeEtMl1mI/AAAAAAAAASs/YQYVdmcPmS8/s72-c/files-that-are-projected-in-memory.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/11/files-that-are-projected-in-memory.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYFQXo6fyp7ImA9Wx9TEUU.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-9012033056259828196</id><published>2010-11-12T06:09:00.000-08:00</published><updated>2010-11-19T07:21:50.417-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-19T07:21:50.417-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Полезное" /><title>Программа для информирования пользователя о смене языка ввода 2 (Написана на Delphi)</title><content type="html">Немного изменил интерфейс, добавил то, что просили&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_v-H92cStNrw/TN1KAU2wyhI/AAAAAAAAASk/r8kT-jauMxw/s1600/nmdsoft.blogspot.com.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_v-H92cStNrw/TN1KAU2wyhI/AAAAAAAAASk/r8kT-jauMxw/s320/nmdsoft.blogspot.com.PNG" width="206" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если нужен дополнительный функционал пишите. &lt;br /&gt;
&lt;br /&gt;
Скачать программу под Windows XP SP3 можно &lt;a href="http://narod.ru/disk/27369824000/xp.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/27369824000/xp.zip.html"&gt;Download&lt;/a&gt;&lt;br /&gt;
Скачать программу под Windows XP SP3 и Windows 7 64 можно &lt;a href="http://narod.ru/disk/27369842000/vistaXp64.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/27369842000/vistaXp64.zip.html"&gt;Download&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Как и просили&amp;nbsp; &lt;a href="http://narod.ru/disk/27370176000/sourseVistaXp64.zip.html"&gt;исходник Windows 7 64&lt;/a&gt;&lt;br /&gt;
Так как нет возможности создания 64-х разрядной DLL сделал по таймеру))&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Листинг Windows 7 64&lt;br /&gt;
&lt;br /&gt;
unit Unit1;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;
&amp;nbsp; Dialogs, StdCtrls, ExtCtrls, AppEvnts,MMSystem,Registry, Menus,IniFiles,ShellAPI;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
&amp;nbsp; TfrmMain = class(TForm)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pmMain: TPopupMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; mniExit: TMenuItem;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; dlgOpen1: TOpenDialog;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkRun: TCheckBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lblSite: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; grp1: TGroupBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lblRus: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lblEng: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkCursor: TCheckBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; GroupBox2: TGroupBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkSay: TCheckBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnRusSound: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnEngSound: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; GroupBox3: TGroupBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkBeep: TCheckBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnSound: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRusCur: TImage;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgEngCur: TImage;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; GroupBox1: TGroupBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Label3: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Label4: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRusCurSel: TImage;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgEngCurSel: TImage;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkCursorSel: TCheckBox;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lblSite2: TLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TrayIcon1: TTrayIcon;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Timer1: TTimer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure FormCreate(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure mniExitClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnExitClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnRusSoundClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnEngSoundClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure btnSoundClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure chkSayClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure chkBeepClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure chkCursorClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure lblSiteClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure lblSiteMouseEnter(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure lblSiteMouseLeave(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure chkCursorSelClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure FormShow(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure chkRunClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure imgRusCurDblClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure imgEngCurDblClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure imgRusCurSelDblClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure imgEngCurSelDblClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure lblSite2Click(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure lblSite2MouseEnter(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure lblSite2MouseLeave(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure TrayIcon1DblClick(Sender: TObject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure pmMainChange(Sender: TObject; Source: TMenuItem; Rebuild: Boolean);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Timer1Timer(Sender: TObject);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; hLib:THandle;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; iLang:integer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData:TStringList;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure OpenDialog(aValue,aSubValue,aFilter:string;OpenDial:Boolean=True);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure LoadOprionsFull;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure PlaySound(aValue:string);&lt;br /&gt;
&amp;nbsp; protected&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure WndProc(var Msg: TMessage); override;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Procedure ControlWindow(Var Msg:TMessage); message WM_SYSCOMMAND;&lt;br /&gt;
&amp;nbsp; public&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; frmMain: TfrmMain;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$R *.dfm}&lt;br /&gt;
function SetWinCursor(aCurName,aCurNameType: string): boolean;&lt;br /&gt;
var Reg: TRegistry;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; Result:=true;&lt;br /&gt;
&amp;nbsp; if not(FileExists(aCurName)) then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Result:=false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; Reg:=TRegistry.Create;&lt;br /&gt;
&amp;nbsp; Reg.RootKey := HKEY_CURRENT_USER;&lt;br /&gt;
&amp;nbsp; if Reg.OpenKey('\Control Panel\Cursors', false)=false then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Result:=false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; reg.WriteExpandString(aCurNameType, aCurName);&lt;br /&gt;
&amp;nbsp; Reg.free;&lt;br /&gt;
&amp;nbsp; SystemParametersInfo(SPI_SETCURSORS, 0, nil, 0);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.btnEngSoundClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; openDialog('Sound','Eng','Sound Wav|*.wav');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.btnExitClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp; frmMain.Close;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.btnRusSoundClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; openDialog('Sound','Rus','Sound Wav|*.wav');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.btnSoundClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; openDialog('Sound','Beep','Sound Wav|*.wav');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.chkSayClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; OpenDialog('Sound','SayEnable', BoolToStr(chkSay.Checked),false);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.ControlWindow(var Msg: TMessage);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; inherited;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if Msg.WParam=SC_MINIMIZE then&lt;br /&gt;
&amp;nbsp; Begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TrayIcon1.Visible:=true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TrayIcon1.ShowBalloonHint;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowWindow(Handle,SW_HIDE);&lt;br /&gt;
&amp;nbsp; End;&lt;br /&gt;
&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.chkBeepClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; OpenDialog('Sound','BeepEnable', BoolToStr(chkBeep.Checked),false);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.chkCursorClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; OpenDialog('Cursor','Enable', BoolToStr(chkCursor.Checked),false);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.chkCursorSelClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; OpenDialog('CursorSel','Enable', BoolToStr(chkCursorSel.Checked),false);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.FormCreate(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; pathForData:=TStringList.Create;&lt;br /&gt;
&amp;nbsp; iLang:= GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil));&lt;br /&gt;
&amp;nbsp; LoadOprionsFull;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.lblSiteClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; ShellExecute(frmMain.Handle, nil, 'http://nmdsoft.blogspot.com/', nil, nil, SW_RESTORE);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.lblSiteMouseEnter(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; lblSite.Font.Color:=clBlue;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.lblSiteMouseLeave(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; lblSite.Font.Color:=clBlack;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.LoadOprionsFull;&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; ini:TIniFile;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; pathForData.Clear;&lt;br /&gt;
&amp;nbsp; ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Options.ini');&lt;br /&gt;
&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkCursor.Checked:= StrToBool(ini.ReadString('Cursor','Enable','0'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //edtRusCur.Text:=ini.ReadString('Cursor','Rus',ExtractFilePath(ParamStr(0))+'Rus.cur');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //edtEngCur.Text:=ini.ReadString('Cursor','Eng',ExtractFilePath(ParamStr(0))+'Eng.cur');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData.Add(ini.ReadString('Cursor','Rus',ExtractFilePath(ParamStr(0)))+'Rus.cur');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData.Add(ini.ReadString('Cursor','Eng',ExtractFilePath(ParamStr(0))+'Eng.cur'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRusCur.Picture.Icon.Handle :=LoadCursorFromFile(PWideChar(pathForData.Strings[0]));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgEngCur.Picture.Icon.Handle :=LoadCursorFromFile(PWideChar(pathForData.Strings[1]));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkCursorSel.Checked:= StrToBool(ini.ReadString('CursorSel','Enable','0'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //edtRusCurSel.Text:=ini.ReadString('CursorSel','Rus',ExtractFilePath(ParamStr(0))+'RusSel.cur');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //edtEngCurSel.Text:=ini.ReadString('CursorSel','Eng',ExtractFilePath(ParamStr(0))+'EngSel.cur');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData.Add(ini.ReadString('CursorSel','Rus',ExtractFilePath(ParamStr(0))+'RusSel.cur'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData.Add(ini.ReadString('CursorSel','Eng',ExtractFilePath(ParamStr(0))+'EngSel.cur'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRusCurSel.Picture.Icon.Handle :=LoadCursorFromFile(PWideChar(pathForData.Strings[2]));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imgEngCurSel.Picture.Icon.Handle :=LoadCursorFromFile(PWideChar(pathForData.Strings[3]));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkSay.Checked:= StrToBool(ini.ReadString('Sound','SayEnable','-1'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //edtRusSound.Text:=ini.ReadString('Sound','Rus',ExtractFilePath(ParamStr(0))+'Rus.wav');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //edtEngSound.Text:=ini.ReadString('Sound','Eng',ExtractFilePath(ParamStr(0))+'Eng.wav');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData.Add(ini.ReadString('Sound','Rus',ExtractFilePath(ParamStr(0))+'Rus.wav'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData.Add(ini.ReadString('Sound','Eng',ExtractFilePath(ParamStr(0))+'Eng.wav'));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chkBeep.Checked:= StrToBool(ini.ReadString('Sound','BeepEnable','0'));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //edtBeep.Text:=ini.ReadString('Sound','Beep',ExtractFilePath(ParamStr(0))+'Beep.wav');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pathForData.Add(ini.ReadString('Sound','Beep',ExtractFilePath(ParamStr(0))+'Beep.wav'));&lt;br /&gt;
&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ini.Free;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.mniExitClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; frmMain.Close;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.OpenDialog(aValue,aSubValue,aFilter:string;OpenDial:Boolean);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; ini:TIniFile;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Options.ini');&lt;br /&gt;
&amp;nbsp; if OpenDial then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; dlgOpen1.Filter:=aFilter;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if dlgOpen1.Execute then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ini.WriteString(aValue,aSubValue,dlgOpen1.FileName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ini.Free;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; end&lt;br /&gt;
&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ini.WriteString(aValue,aSubValue,aFilter);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ini.Free;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; LoadOprionsFull;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.PlaySound(aValue: string);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; if FileExists(aValue) then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sndPlaySound(PwideChar(aValue), SND_ASYNC)&lt;br /&gt;
&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage('Файл '+aValue+ 'не найден!!! Озвучка невозможна!!');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.pmMainChange(Sender: TObject; Source: TMenuItem; Rebuild: Boolean);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; frmMain.Close;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.Timer1Timer(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; KBL_RUS:Integer;&lt;br /&gt;
&amp;nbsp; KBL_ENG:Integer;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; KBL_RUS:=68748313;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; KBL_ENG:=67699721;&lt;br /&gt;
&amp;nbsp; if iLang&amp;lt;&amp;gt;GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) then&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; iLang:=GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = KBL_RUS&amp;nbsp; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkCursor.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetWinCursor(pathForData.Strings[0],'Arrow'); //SetWinCursor(edtRusCur.Text,'Arrow');&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkCursorSel.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetWinCursor(pathForData.Strings[2],'IBeam'); //SetWinCursor(edtRusCurSel.Text,'IBeam');&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkSay.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PlaySound(pathForData.Strings[4]);//PlaySound(edtRusSound.Text);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkBeep.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PlaySound(pathForData.Strings[6]);//PlaySound(edtBeep.Text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = KBL_ENG then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkCursor.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetWinCursor(pathForData.Strings[1],'Arrow');//SetWinCursor(edtEngCur.Text,'Arrow');&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkCursorSel.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetWinCursor(pathForData.Strings[3],'IBeam'); //SetWinCursor(edtEngCurSel.Text,'IBeam');&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkSay.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PlaySound(pathForData.Strings[5]);//PlaySound(edtEngSound.Text);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkBeep.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PlaySound(pathForData.Strings[6]);//PlaySound(edtBeep.Text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.TrayIcon1DblClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; ShowWindow(Handle,SW_RESTORE);&lt;br /&gt;
&amp;nbsp; SetForegroundWindow(Handle);&lt;br /&gt;
&amp;nbsp; TrayIcon1.Visible:=False;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.WndProc(var Msg: TMessage);&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; inherited;&lt;br /&gt;
&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.FormShow(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; reg:TRegistry;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; reg := TRegistry.Create;&lt;br /&gt;
&amp;nbsp; with reg do&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RootKey := HKEY_LOCAL_MACHINE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ValueExists('NMDsoft') then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chkRun.Checked:=True;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseKey;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Free;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.chkRunClick(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; reg:TRegistry;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; reg := TRegistry.Create;&lt;br /&gt;
&amp;nbsp; with reg do&lt;br /&gt;
&amp;nbsp; begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RootKey := HKEY_LOCAL_MACHINE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkRun.Checked then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WriteString('NMDsoft', ParamStr(0))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ValueExists('NMDsoft') then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeleteValue('NMDsoft');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseKey;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Free;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.imgRusCurDblClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; openDialog('Cursor','Rus','Cursors|*.cur|Animate cursors|*.ani');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.imgEngCurDblClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; openDialog('Cursor','Eng','Cursors|*.cur|Animate cursors|*.ani');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.imgRusCurSelDblClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; openDialog('CursorSel','Rus','Cursors|*.cur|Animate cursors|*.ani');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.lblSite2Click(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; ShellExecute(frmMain.Handle, nil, 'http://blogistor.com/', nil, nil, SW_RESTORE);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.lblSite2MouseEnter(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; lblSite2.Font.Color:=clBlue;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.lblSite2MouseLeave(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; lblSite2.Font.Color:=clBlack;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TfrmMain.imgEngCurSelDblClick(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; openDialog('CursorSel','Eng','Cursors|*.cur|Animate cursors|*.ani');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-9012033056259828196?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/qoXZgW09fKs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/9012033056259828196/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/11/2-delphi.html#comment-form" title="Комментарии: 6" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/9012033056259828196?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/9012033056259828196?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/qoXZgW09fKs/2-delphi.html" title="Программа для информирования пользователя о смене языка ввода 2 (Написана на Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_v-H92cStNrw/TN1KAU2wyhI/AAAAAAAAASk/r8kT-jauMxw/s72-c/nmdsoft.blogspot.com.PNG" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/11/2-delphi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAGRns4eyp7ImA9Wx5aE08.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-6936190543543873892</id><published>2010-11-05T03:56:00.000-07:00</published><updated>2010-11-09T09:28:47.533-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-09T09:28:47.533-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Полезное" /><title>Программа для информирования пользователя о смене языка ввода (Написана на Delphi)</title><content type="html">Программа информирует вас о смене языка ввода так, как это не всегда происходит при нажатии комбинации клавиш которые, как раз отвечают за это дело, но эта программа известит вас об этом звуковым сигналом или сменой указателя мыши и гудком все это дело настраивается без проблем в программе.&lt;br /&gt;
Программа работает в ОС Windows XP SP3&lt;br /&gt;
Скриншот программы&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_v-H92cStNrw/TNPid4kxQrI/AAAAAAAAASg/iYb95Kjvgbg/s1600/Windows+Bitmap+Image.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://4.bp.blogspot.com/_v-H92cStNrw/TNPid4kxQrI/AAAAAAAAASg/iYb95Kjvgbg/s320/Windows+Bitmap+Image.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Программа бесплатная так, что вы ее используете на свой страх и риск!&lt;br /&gt;
Я не несу ответственности за вред который вы причините используя эту программу!&lt;br /&gt;
ВИРУСОВ НЕТ!&lt;br /&gt;
Скачать программу под Windows XP SP3 можно &lt;a href="http://narod.ru/disk/27005157000/RusEngNMD.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/27005157000/RusEngNMD.zip.html"&gt;Download&lt;/a&gt;&lt;br /&gt;
Скачать программу под Windows 7 64 можно &lt;a href="http://narod.yandex.ru/disk/27037706000/NMDZIP.zip"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.yandex.ru/disk/27037706000/NMDZIP.zip"&gt;Download&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
В дополнение ко все хочу сказать, что я не пытался сделать PuntoSwithcher, слишком много автоматизации иногда мешает им ни когда не пользовался и не собираюсь, каждому своё!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-6936190543543873892?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/jeIH76O9wSw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/6936190543543873892/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/11/program-to-inform-user-to-change-input.html#comment-form" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6936190543543873892?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/6936190543543873892?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/jeIH76O9wSw/program-to-inform-user-to-change-input.html" title="Программа для информирования пользователя о смене языка ввода (Написана на Delphi)" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_v-H92cStNrw/TNPid4kxQrI/AAAAAAAAASg/iYb95Kjvgbg/s72-c/Windows+Bitmap+Image.PNG" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/11/program-to-inform-user-to-change-input.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQERXsyfyp7ImA9Wx5bFk8.&quot;"><id>tag:blogger.com,1999:blog-9144819905011498730.post-8991174769276368164</id><published>2010-11-01T08:55:00.000-07:00</published><updated>2010-11-01T09:01:44.597-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-01T09:01:44.597-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Компоненты" /><title>Google Chrome Frame for Delphi 2010</title><content type="html">Компонент для использования функций&amp;nbsp;Google Chrome в своих приложениях или же написания своего браузера на основе Google Chrome в Delphi.&lt;br /&gt;
Скриншот примера идущего в комплекте с компонентом. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_v-H92cStNrw/TM7is0T_meI/AAAAAAAAASU/h2oqZ4txFqo/s1600/cf-300x281.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_v-H92cStNrw/TM7is0T_meI/AAAAAAAAASU/h2oqZ4txFqo/s1600/cf-300x281.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ActiveX из npchrome_frame.dll не импортируется полностью и один хороший человек написал компонент на радость пользователям Delphi сайт &lt;noindex&gt;&lt;a href="http://www.progdigy.com/?p=116"&gt;автора компонента.&lt;/a&gt;&lt;/noindex&gt;&lt;br /&gt;
&lt;br /&gt;
Компонент Google Chrome Frame для Delphi 2010 можно скачать &lt;a href="http://narod.ru/disk/26874547000/chrometab.zip.html"&gt;отсюда&lt;/a&gt; &lt;a href="http://narod.ru/disk/26874547000/chrometab.zip.html"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9144819905011498730-8991174769276368164?l=nmdsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HnPt/~4/VRP9yWsDVlE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nmdsoft.blogspot.com/feeds/8991174769276368164/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://nmdsoft.blogspot.com/2010/11/google-chrome-frame-for-delphi-2010.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8991174769276368164?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9144819905011498730/posts/default/8991174769276368164?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HnPt/~3/VRP9yWsDVlE/google-chrome-frame-for-delphi-2010.html" title="Google Chrome Frame for Delphi 2010" /><author><name>NMD</name><uri>http://www.blogger.com/profile/10385070424985940785</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_v-H92cStNrw/TCb1a7wC_aI/AAAAAAAAAEA/1Qw7DkSlnb4/s1600-R/kenny.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_v-H92cStNrw/TM7is0T_meI/AAAAAAAAASU/h2oqZ4txFqo/s72-c/cf-300x281.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://nmdsoft.blogspot.com/2010/11/google-chrome-frame-for-delphi-2010.html</feedburner:origLink></entry></feed>

