nyuuzyou/wikis huggingface dataset:
Выполняем встроенные команды Windows

=== Выполняем встроенные команды Windows ===
Компилятор: Delphi 4.x (или выше)
В принципе эти команды можно запускать в меню "Выполнить..." (Run), кнопки Пуск. Ну а в Delphi они запускаются путём всем известной команды
 winexec(PChar('ABCD'),sw_Show);
где 'ABCD' - одна из следующих команд ... 
"rundll32 shell32,Control_RunDLL" 	Запустить Панель Управления
"rundll32 shell32,OpenAs_RunDLL" 	Открыть диалог "Открыть Как ..." ('Open With...')
"rundll32 shell32,ShellAboutA Info-Box" 	Открыть 'About Window Window'
"rundll32 shell32,Control_RunDLL desk.cpl" 	Открыть диалог "Свойства: Экран" (Display Properties)
"rundll32 user,cascadechildwindows" 	Выстроить все окна каскадом
"rundll32 user,tilechildwindows" 	Свернуть все окна
"rundll32 user,repaintscreen" 	Обновить Десктоп
"rundll32 shell,shellexecute Explorer" 	Перезапустить Проводник
"rundll32 keyboard,disable" 	Заблокировать Клавиатуру
"rundll32 mouse,disable" 	Запретить мышку
"rundll32 user,swapmousebutton" 	Поменять кнопки мыши
"rundll32 user,setcursorpos" 	Установить Курсор в позицию (0,0)
"rundll32 user,wnetconnectdialog" 	Показать диалог "Подключить сетевой диск" ('Map Network Drive')
"rundll32 user,wnetdisconnectdialog" 	Показать диалог "Отключить сетевой диск" ('Disconnect Network Disk')
"rundll32 user,disableoemlayer" 	Отобразить окно BSOD ((BSOD) = Blue Screen Of Death )
"rundll32 diskcopy,DiskCopyRunDll" 	Показать диалог копирования диска
"rundll32 rnaui.dll,RnaWizard" 	Запустить 'Internet Connection Wizard'
"rundll32 shell32,SHFormatDrive" 	Запустить окно форматирования дискеты ('Format Disk (A)')
"rundll32 shell32,SHExitWindowsEx -1" 	"Холодный" перезапуск Проводника
"rundll32 shell32,SHExitWindowsEx 1" 	Выключить компьютер
"rundll32 shell32,SHExitWindowsEx 0" 	Завершить сеанс текущего пользователя
"rundll32 shell32,SHExitWindowsEx 2" 	Быстрый перезапуск Windows9x
"rundll32 krnl386.exe,exitkernel" 	Выход из Windows 9x без подтверждения
"rundll rnaui.dll,RnaDial "MyConnect" 	Запустить диалог 'Net Connection'
"rundll32 msprint2.dll,RUNDLL_PrintTestPage"	Выбор и печать тестовой страницы текущего принтера
"rundll32 user,setcaretblinktime" 	Установить скорость мигания курсора
"rundll32 user, setdoubleclicktime" 	Установить скорость двойного нажатия
"rundll32 sysdm.cpl,InstallDevice_Rundll" 	Поиск устройств не PnP.
Author: Ruslan Abu Zant
Source: Взято из http://forum.sources.ru
ID: 01735
Category:Справочники
Выравнивание по правому краю в TEdit?

=== Выравнивание по правому краю в TEdit? ===
type 
 TNumEdit = class(TEdit) 
 procedure CreateParams(var Params: TCreateParams); override;
 end;
implementation
procedure TNumEdit.CreateParams(var Params: TCreateParams); 
begin 
 inherited CreateParams(Params); 
 Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT; 
end; 
Author: МММ
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00527
----
{ Пример TEdit с правым выравниванием © Song }
type
 TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
{ Объявляем класс нашего едита как потомок от стандартного}
type
 TMySuperEdit=class(TCustomEdit)
 public
 { Внутри класса переопределяем процедуру CreateParams,
 т.к. нужный нам стиль можно изменить только на создании или пересоздании
 окна }
 procedure CreateParams(var Params: TCreateParams); override;
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TMySuperEdit.CreateParams(var Params: TCreateParams);
begin
 { Вызываем родительский обработчик, чтобы он сделал все процедуры по созданию объекта класса }
 inherited CreateParams(Params);
 { Изменяем стиль }
 with Params do Style := (Style or ES_RIGHT);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 { Создаём едит на основе нашего класса и кладём его на форму } 
 with TMySuperEdit.Create(Self) do Parent := Self;
end;
Идея заключается в том, как сделать правое выравнивание текста в TEdit, не прибегая к написанию нового компонента.
Для этого можно воспользоваться канвасом. Так как TEdit не имеет канваса, то сперва мы создадим TControlCanvas а затем, прикрепим TEdit к этому канвасу.
Теперь нам доступны все свойства и методы TControlCanvas, поэтому мы спокойно можем настраивать в нём текст. Ниже приведёна процедура, реализующая всё вышесказанное.
procedure RJustifyEdit(var ThisEdit : TEdit); 
var 
 Left, Width: Integer; 
 GString: String; 
 Rgn: TRect; 
 TheCanvas: TControlCanvas; 
begin 
 TheCanvas := TControlCanvas.Create; 
 try 
 TheCanvas.Control := ThisEdit; 
 GString := ThisEdit.Text; 
 Rgn := ThisEdit.ClientRect; 
 TheCanvas.FillRect(Rgn); 
 Width := TheCanvas.TextWidth(GString); 
 Left := Rgn.Right - Width - 1; 
 TheCanvas.TextRect(Rgn, Left, 0, GString); 
 finally 
 TheCanvas.Free; 
 end; 
end;
Author: Song
Source: Взято из http://forum.sources.ru
ID: 00529
Выравнивание по центру в TEdit?

=== Выравнивание по центру в TEdit? ===
TEdit не поддерживает выравниваение текста по центру и по правой стороне - лучше использовать компонент TMemo. Вам понадобится запретить пользователю нажимать Enter, Ctrl-Enter и всевозможные комбинации клавиш со стрелками, чтобы избежать появления нескольких сторк в Memo. Этого можно добиться и просматривая содержимое текста в TMemo в поисках кода возврата каретки (13) и перевода строки(10) на событиях TMemo Change и KeyPress. Можно также заменять код возврата каретки на пробел - для того чтобы позволять вставку из буфера обмена многострочного текста в виде одной строки. 
procedure TForm1.FormCreate(Sender: TObject);
begin
 Memo1.Alignment := taCenter;
 Memo1.MaxLength := 24;
 Memo1.WantReturns := false;
 Memo1.WordWrap := false;
end;
procedure MultiLineMemoToSingleLine(Memo: TMemo);
var
 t: string;
begin
 t := Memo.Text;
 if Pos(#13, t) > 0 then
 begin
 while Pos(#13, t) > 0 do
 Delete(t, Pos(#13, t), 1);
 while Pos(#10, t) > 0 do
 Delete(t, Pos(#10, t), 1);
 Memo.Text := t;
 end;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
 MultiLineMemoToSingleLine(Memo1);
end;
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
 MultiLineMemoToSingleLine(Memo1);
end; 
Source: https://delphisources.ru/pages/faq/base/tedit_center_align.html
ID: 00965
----
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
{ Пример TEdit с выравниванием по центру © Song 
 в модификации Vit
}
type
 TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
{ Объявляем класс нашего едита как потомок от стандартного}
type
 TMySuperEdit = class(TCustomEdit)
 public
 { Внутри класса переопредялем процедуру CreateParams,
 т.к. нужный нам стиль можно изменить только на создании или пересоздании
 окна }
 procedure CreateParams(var Params: TCreateParams); override;
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TMySuperEdit.CreateParams(var Params: TCreateParams);
begin
 { Вызываем родительский обработчик, чтобы он сделал все процедуры по созданию объекта класса }
 inherited CreateParams(Params);
 { Изменяем стиль }
 with Params do Style := Style or ES_CENTER;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 { Создаём едит на основе нашего класса и кладём его на форму }
 with TMySuperEdit.Create(Self) do
 Parent := Self;
end;
end.
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
ID: 00966
Выравнивание текста в TRichEdit

=== Выравнивание текста в TRichEdit ===
uses
 RichEdit;
// Using the Paragraph property 
procedure RE_AlignText1(ARichEdit: TRichEdit; alignment: TAlignment);
begin
 ARichEdit.Paragraph.Alignment := alignment;
end;
// Using PARAFORMAT2; nonVCL 
procedure RE_AlignText2(ARichEdit: TRichEdit; alignment: TAlignment);
var
 pf2: PARAFORMAT2;
begin
 FillChar(pf2, SizeOf(pf2), 0);
 pf2.cbSize := SizeOf(PARAFORMAT2);
 SendMessage(ARichEdit.Handle, EM_GETPARAFORMAT, 0, Longint(@pf2));
 pf2.dwMask := PFM_ALIGNMENT;
 case alignment of
 taLeftJustify: pf2.wAlignment := PFA_LEFT;
 taCenter: pf2.wAlignment := PFA_CENTER;
 taRightJustify: pf2.wAlignment := PFA_RIGHT;
 end;
 SendMessage(ARichEdit.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end;
// Example: Right align text 
// Beispiel: Text rechtsbundig ausrichten 
procedure TForm1.Button1Click(Sender: TObject);
begin
 RE_AlignText2(RichEdit1, taRightJustify);
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01024
Вырезание эллиптической области на Bitmap

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Вырезание эллиптической области на Bitmap
Овальная рамка для изображения.
Зависимости: Classes, Graphics
Автор: Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright: Собственное написание (Николай федоровских)
Дата: 1 июня 2002 г.
***************************************************** }
procedure EllipticBitmap(Bitmap: TBitmap; BackColor: TColor);
type
 TRGB = record
 B, G, R: Byte;
 end;
 pRGB = ^TRGB;
var
 C: TRGB;
 x, y: Integer;
 Dest, Src: pRGB;
 Bmp: TBitmap;
begin
 Bitmap.PixelFormat := pf24Bit;
 C.R := Lo(BackColor);
 C.G := Lo(BackColor shr 8);
 C.B := Lo((BackColor shr 8) shr 8);
 // создаём дополнительный Bitmap
 Bmp := TBitmap.Create;
 try
 Bmp.Width := Bitmap.Width;
 Bmp.Height := Bitmap.Height;
 Bmp.PixelFormat := Bitmap.PixelFormat;
 // рисуем на созданном Bitmap чёрный эллипс на белом фоне
 with Bmp.Canvas do
 begin
 Brush.Style := bsSolid;
 Brush.Color := clWhite;
 FillRect(Rect(0, 0, Bmp.Width, Bmp.Height));
 Brush.Color := clBlack;
 Pen.Style := psClear;
 Ellipse(Rect(0, 0, Bmp.Width, Bmp.Height));
 end;
 for y := 0 to Bitmap.Height - 1 do
 begin
 Src := Bmp.ScanLine[y];
 Dest := Bitmap.ScanLine[y];
 for x := 0 to Bitmap.Width - 1 do
 begin
 // если точка (x, y) на созданном Bitmap белая,
 // то точку (x, y) на исходном Bitmap закрашиваем BackColor
 if Src^.r = 255 then
 Dest^ := C;
 Inc(Dest);
 Inc(Src);
 end;
 end;
 finally
 Bmp.Free;
 end;
end;
// Пример использования:
EllipticBitmap(FBitmap, clWhite);
Author: Fenik
Source: http://delphibase.endimus.com
ID: 03779
Category:Графика
Category:Bitmap
Выставляем горячие клавиши для Delphi приложения

=== Выставляем горячие клавиши для Delphi приложения ===
Как сделать так, чтобы при минимизации приложения в Tray его можно было вызвать определённой комбинацией клавиш, например Alt-Shift-F9 ? 
// В обработчике события OnCreate
// основной формы создаём горячую клавишу:
if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then
 ShowMessage('Unable to assign Alt-Shift-F9 as hotkey.');
// В событии OnClose удаляем горячую клавишу:
 UnRegisterHotkey(Handle, 1);
// Добавляем обработчик в форму для сообщения WM_HOTKEY:
 private // в секции объявлений формы
 procedure WMHotkey(var msg: TWMHotkey); message WM_HOTKEY;
procedure TForm1.WMHotkey(var msg: TWMHotkey);
begin
 if msg.hotkey = 1 then
 begin
 if IsIconic(Application.Handle) then
 Application.Restore;
 BringToFront;
 end;
end;
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01524
Вычисление автокорреляционной функции

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Вычисление автокорреляционной функции
Зависимости: Math
Автор: lookin, lookin@mail.ru, Екатеринбург
Copyright: lookin
Дата: 2 июня 2002 г.
***************************************************** }
type
 TDoubleArray = array of Double
procedure AutoCorrelation(ValueArray: TDoubleArray; var ACArray: TDoubleArray;
 FromValue, ToValue: Integer);
var
 i, j, N: Integer;
 avr, dev, xxsum: Double;
begin
 // ValueArray - массив типа Double для которого вычисляется функция
 // FromValue - номер точки, начиная с которого выбираются элементы массива
 // ToValue - номер точки, на котором заканчивается выбор элементов массива
 // ACArray - массив возвращаемых значений автокорреляционной функции для 5-и точек
 N := ToValue - FromValue;
 SetLength(ACArray, 5);
 if N < 5 then
 begin
 for i := 0 to 4 do
 ACArray[i] := 0;
 Exit;
 end
 else
 begin
 SetLength(rv, N);
 dev := 0;
 for i := 0 to N - 1 do
 rv[i] := ValueArray[i + FromValue];
 avr := Mean(rv);
 for i := 0 to N - 1 do
 dev := dev + Sqr(rv[i] - avr);
 dev := dev / N;
 for j := 0 to 4 do
 begin
 xxsum := 0;
 for i := 0 to (N - 1) - j do
 xxsum := xxsum + (rv[i] - avr) * (rv[i + j] - avr);
 ACArray[j] := xxsum / (dev * (N - j));
 end;
 end;
end;
// Пример использования:
var
 SourceArray, ACCoefs: TDoubleArray;
begin
 AutoCorrelation(SourceArray, ARCoefs, 0, Length(SourceArray) - 1);
 for i := 0 to Length(ACCoefs) - 1 do
 ShowMessage(FloatToStr(ACCoefs[i]));
Author: lookin
Source: http://delphibase.endimus.com
ID: 04226
Category:Алгоритмы
Category:Списки
Вычисление интеграла

Вычисление интеграла с заданной точностью алгоритмом Симпсона.
// (c) Copydown 2002, all left reserved. http://world.fpm.kubsu.ru.
{$APPTYPE CONSOLE}
{$F+} // разрешение передачи функций, как параметров
type FunctionType = function(x: Real): Real;
{ интегрируемая функция }
function f(x: Real): Real;
begin
 Result := x;
end;
{ интегрирование от a до b функции f с точностью e }
function IntegralSimpson(a, b: Real; f: FunctionType; e: Real): Real;
var
 h, x, s, s1, s2, s3, sign: Real;
begin
 if (a = b) then
 begin
 Result := 0;
 exit
 end;
 if (a > b) then
 begin
 x := a;
 a := b;
 b := x;
 sign := -1
 end
 else
 sign := 1;
 h := b - a;
 s := f(a) + f(b);
 s2 := s;
 repeat
 s3 := s2;
 h := h/2;
 s1 := 0;
 x := a + h;
 repeat
 s1 := s1 + 2 * f(x);
 x := x + 2 * h;
 until (not (x < b));
 s := s + s1;
 s2 := (s + s1) * h / 3;
 x := abs(s3 - s2) / 15
 until (not (x > e));
 Result := s2 * sign;
end;
begin
 { вывод результата интегрирования от 0 до 1 функции f с точностью 0.001 }
 WriteLn(IntegralSimpson(0, 1, f, 0.001));
 WriteLn;
 WriteLn('Press Enter');
 ReadLn;
end.
Source: Взято с http://delphiworld.narod.ru
ID: 04199
Category:Алгоритмы
Вычисление квадратного корня (алгоритм Ньютона)

{ **** UBPFD *********** by kladovka.net.ru ****
>> Вычисление квадратного корня (алгоритм Ньютона)
Зависимости: нет
Автор: Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright: Автор: Федоровских Николай
Дата: 20 апреля 2003 г.
********************************************** }
function MySqrt(x: Double; n: Byte): Double;
{ x - аргумент
 n - точность вычисления (советую брать 7-8) }
var i: Integer;
begin
 if x <= 0 then
 begin
 Result := 0;
 Exit;
 end
 else
 Result := 4;
 for i := 0 to n do
 begin
 Result := (Result + x/Result)/2;
 end;
end;
Пример использования:
procedure TForm1.FormCreate(Sender: TObject);
var n: Double;
begin
 // Тест (сверить с калькулятором)
 n := 29.7665342;
 Caption := 'Sqrt(' + FloatToStrF(n, ffFixed, 10, 5) + ') = ' +
 FloatToStrF(MySqrt(n, 7), ffFixed, 10, 10);
end;
Author: Fenik
ID: 04095
Category:Алгоритмы
Category:Математика
Вычисление логарифма

{
 --- English ------
 A logarithm function with a variable basis
}
function Log(x, b: Real): Real;
begin
 Result := ln(x) / ln(b);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(Format('%f', [Log(10, 10)]));
end;
Source: http://www.swissdelphicenter.ch
ID: 04096
Category:Алгоритмы
Category:Математика
Вычисление наибольшего общего делителя двух целых неотрицательных чисел

{ **** UBPFD *********** by kladovka.net.ru ****
>> Вычисление наибольшего общего делителя двух целых неотрицательных чисел
Зависимости: System
Автор: Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright: Turbo Pascal / С.А. Немнюгин. - СПб: Издательство "Питер", 2000.
Дата: 27 октября 2002 г.
********************************************** }
{ Вычисление наибольшего общего делителя двух неотрицательных целых чисел.
 Если какое-то из чисел = 0, то функция возвратит 0.
 Взято из учебника:
 Turbo Pascal / С.А. Немнюгин. - СПб: Издательство "Питер", 2000.}
function GCD(const m, n: LongWord): LongWord;
var
 p, n1, m1: LongWord;
begin
 if (n = 0) or (m = 0) then
 Result := 0
 else
 begin
 if m < n then
 begin
 n1 := m;
 m1 := n;
 end
 else
 begin
 n1 := n;
 m1 := m;
 end;
 while n1 > 0 do
 begin
 p := m1 mod n1;
 m1 := n1;
 n1 := p;
 end;
 Result := m1;
 end;
end;
Пример использования:
p := GCD(54, 36); {p := 18}
Author: Fenik
ID: 04070
Category:Алгоритмы
Category:Математика
Вычисление определенного интеграла методом левых и правых прямоугольников с заданной точностью

{ **** UBPFD *********** by kladovka.net.ru ****
>> Вычисление определенного интеграла методом левых и правых прямоугольников с заданной точностью
"Просто расчет площади под функцией, параметры: a,b - пределы интегрирования, a<=b
eps - допустимая погрешность, практически гарантируется, что расхождение результата с истинным значением интеграла не превосходит по модулю указанную величину. Только не переборщите :-))
intF - подинтегральная функция. Естественно, желательно задавать функции, интегрируемые в смысле Римана. Объявление смотри в примере.
Примечание: Несобственные интегралы не считаем :-)
Проверок на переполнение нет, да и вообще нет проверок..."
(Romkin (Москва))
Модуль сделан на основе функции вычисления опред. интеграла методом трапеций от Romkin'а (Москва).
Зависимости: Нет
Автор: Алексей Глеб, noodlesf@mail.ru, Чернигов
Copyright: с подачи Romkin'а (Москва)
Дата: 18 мая 2003 г.
********************************************** }
unit IntPram;
interface
type
 TIntFunc=Function(X: Double): Double;
function LeftPramInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
function RightPramInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
implementation
function LeftPramInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
var
 // S - площадь на предыдущей итерации,
 // step - "толщина" прямоугольника
 // gran - передвигаемая от a до b граница
 // n - число прямоугольников, удваивается на каждой итерации
 S, step, gran: Double;
 n: Integer;
begin
 // Сначала приближение одного прямоугольника
 step := b - a;
 Result := IntF(a) * step;
 n := 1;
 repeat
 S := Result;
 n := n * 2;
 step := (b - a) / n;
 Gran := a;
 Result := 0;
 // Ниже - просто вычисляем площади новых прямоугольников
 while gran < b do
 begin
 Result := Result + IntF(gran) * step;
 gran := gran + step;
 end;
 until abs(S - Result) <= eps;
end;
function RightPramInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
var
 // S - площадь на предыдущей итерации,
 // step - "толщина" прямоугольника
 // gran - передвигаемая от a до b граница
 // n - число прямоугольников, удваивается на каждой итерации
 S, step, gran: Double;
 n: integer;
begin
 // Сначала приближение одного прямоугольника
 step := b - a;
 Result := IntF(b) * step;
 n := 1;
 repeat
 S := Result;
 n := n * 2;
 step := (b - a) / n;
 Gran := b;
 Result := 0;
 // Ниже - просто вычисляем площади новых прямоугольников
 while a < gran do
 begin
 Result := Result + IntF(gran) * step;
 gran := gran - step;
 end;
 until abs(S - Result) <= eps;
end;
end.
Пример использования:
uses IntPram;
function IntSqrt(x: Double): Double;
begin
 Result := Sqrt(x);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption := FloatToStr(LeftPramInt(0, Pi, 0.00001, S));
 Label2.Caption := FloatToStr(RightPramInt(0, Pi, 0.00001, S));
end;
Author: Алексей Глеб
ID: 04202
Category:Алгоритмы
Вычисление определенного интеграла методом трапеций с заданной точностью

{ **** UBPFD *********** by kladovka.net.ru ****
>> Вычисление определенного интеграла методом трапеций с заданной точностью
Просто расчет площади под функцией, параметры: a,b - пределы интегрирования, a<=b
eps - допустимая погрешность, практически гарантируется, что расхождение результата с истинным значением интеграла не превосходит по модулю указанную величину. Только не переборщите :-))
intF - подинтегральная функция. Естественно, желательно задавать функции, интегрируемые в смысле Римана. Объявление смотри в примере.
Примечание: Несобственные интегралы не считаем :-)
Проверок на переполнение нет, да и вообще нет проверок...
Зависимости: Ну какие могут быть зависимости?
Автор: Romkin, romkin@pochtamt.ru, Москва
Copyright: Romkin 2002
Дата: 19 ноября 2002 г.
********************************************** }
unit intfunc;
interface
type
 TIntFunc = function(X: Double): Double;
function TrapezeInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
implementation
function TrapezeInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
var
 // S - площадь на предыдущей итерации,
 // x - текущее значение аргумента
 // base - высота трапеции
 // n - число трапеций, удваивается на каждой итерации
 S, x, base: Double;
 i, n: Integer;
begin
 // Сначала приближение одной трапецией
 base := b-a;
 Result := (IntF(a) + IntF(b)) / 2 * base;
 eps := eps / 10; // Вообще говоря, величина делителя зависит от функции
 n := 1;
 repeat
 S := Result;
 base := base / 2;
 n := n * 2;
 // Новая площадь вычисляется на основе старой
 Result := Result / 2;
 // Ниже - просто вычисляем площади новых трапеций
 for i := 1 to n div 2 do
 begin
 x := a + base * (i * 2 - 1);
 Result := Result + IntF(x) * base;
 end;
 until abs(S-Result) <= eps;
end;
end.
Пример использования:
uses intFunc;
function intSin(x: Double): Double;
begin
 Result := sin(x);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text := FloatToStr(TrapezeInt(0, Pi, 0.00001, intSin));
 // результат у меня получился 1.99999990195429 - с запасом
 // Точный ответ - 2.0
end;
Author: Romkin
ID: 04203
Category:Алгоритмы
Вычисление площади одноконтурного несамопересекающегося многоугольника

{ **** UBPFD *********** by kladovka.net.ru ****
>> Вычисление площади одноконтурного несамопересекающегося многоугольника
1.Для многоконтурных или самопересекающихся многоугольников функция вернет неверный результат.
2.Площадь всегда положительна (т.е. не зависит от направления обхода).
Зависимости: нет
Автор: Виктор Щербаков, shherbakov@yandex.ru, Нижний Новгород
Copyright: Виктор Щербаков
Дата: 18 апреля 2002 г.
********************************************** }
// Точка
type
 TFloatPoint = record
 X, Y: Double;
 end;
// Точки полигона
type TPolygonPoints = array of TFloatPoint;
// Сама функция
function PolygonSquare(Poly: TPolygonPoints): Double;
var
 I, J, HP: Integer;
begin
 Result := 0;
 HP := High(Poly);
 for I := Low(Poly) to HP do
 begin
 if I = HP then
 J := 0
 else
 J := I + 1;
 Result := Result + (Poly[I].X + Poly[J].X) * (Poly[I].Y - Poly[J].Y);
 end;
 Result := Abs(Result) / 2;
end;
Author: Виктор Щербаков
ID: 04123
Category:Алгоритмы
Category:Графика
Category:Геометрия
Вычисление простого хеш-кода для блока данных

{ **** UBPFD *********** by kladovka.net.ru ****
>> Вычисление простого хеш-кода для блока данных
Вычисляет значение простой хеш-функции (xor + циклический сдвиг) для блока
данных.
Описание параметров:
Data - указатель на блок данных
DataSize - размер блока
Возвращаемое значение - значение хеш-функции
Зависимости: нет
Автор: vuk, vuk@fcenter.ru
Copyright: Алексей Вуколов
Дата: 18 апреля 2002 г.
********************************************** }
function CalcHash(Data: Pointer; DataSize: Integer): Integer; register;
asm
 push ebx
 push esi
 push edi
 mov esi, Data
 xor ebx, ebx
 or esi, esi
 jz @@Exit
 mov edx, DataSize
 or edx,edx
 jz @@Exit
 xor ecx,ecx
@@Cycle:
 xor eax,eax
 mov al,[esi]
 inc esi
 rol eax,cl
 xor ebx,eax
 inc ecx
 dec edx
 jnz @@Cycle
@@Exit:
 mov eax,ebx
 pop edi
 pop esi
 pop ebx
end;
Пример использования:
// вычисление хеш-кода для строки
var
 i: Integer;
 s: string;
begin
 s := 'test';
 i := CalcHash(PChar(S), Length(S));
end;
Author: vuk
ID: 04020
Category:Алгоритмы
Где TServerSocket и TClientSocket в Delphi 7?

Компоненты TClientSocket и TServerSocket отсутствуют в Delphi 7?
Нужно добавить пакет dclsockets в IDE. 
* Component
* Install Packages
* Add (/bin/dclsockets70.bpl).
ID: 03555
Category:Связь
Category:Сокеты
Где взять примеры использования Indy?

В стандартную поставку Дельфи примеры работы с компонентами Indy отсутствуют, но это не значит, что их нет. Надо обратиться на официальные сайты разработчиков этих компонентов:
* http://www.indyproject.org/
* http://www.nevrona.com/indy
Author: Vit
Source: http://forum.sources.ru
ID: 03580
Category:Связь
Category:Web
Category:Indy
Где можно найти документацию на WebBrowser?

Перевод материала с сайта members.home.com/hfournier/webbrowser.htm
Вопрос: Где можно найти документацию на WebBrowser?
Ответ: Можно заглянуть на сайт Microsoft в раздел WebBrowser overview, а так же на страницу WebBrowser object.
Source: http://blackman.km.ru/myfaq/cont4.phtml
ID: 03445
Category:Связь
Category:WebBrowser