класу, що дозволяє об'єкту зберігати інформацію
//про кількість свердловин куща на нафтовому промислі
TComponentClassOil=class (TComponent)
private//елементи класу, які видно тільки всередині класу
FOil: array of Integer;
Fn: Integer;
protected
{Protected declarations}
public
{Public declarations}
NWells: array of Real;
published//ці методи видно з інших модулів і доступні в Інспекторові об'єктів
//кількість свердловин
property n: Integer read Fn write Fn;
//динамічний масив під дебет кожної свердловини
Constructor Create (AOwner: TComponent); override;// Метод створює об'єкт класу
procedure GetValueWells (userval: string);// Вважати число свердловин в кущу
procedure SortWells (var n1, n2: Integer);// Сортування свердловин за дебетом
procedure ShowValue ();// Показує значення i
end;
//процедура реєстрації компонента на вкладці SampleRegister;
//розділ реалізації
//процедура реєстрації компонента на вкладці Sample
procedure Register;
RegisterComponents ( Samples raquo ;, [TComponentClassOil]);
end;
//конструктор класу - створює клас в пам'яті
constructor TComponentClassOil.Create (AOwner: TComponent);
begin
//наскільки нам відомо свердловин у кущі немає на момент створення об'єкту класу
Fn:=0 ;;
//сортування свердловин за дебетом для визначення 2-х свердловин
//з мінімальним дебетомTComponentClassOil.SortWells (var n1, n2: Integer);
//n1, n2- номера свердловин з мінімальним дебетом
i, j: Integer;// Допоміжна змінна
Temp: Integer;// Допоміжна змінна
//сортування методом бульбашки з допомогою індексного масиву
SetLength (FOil, n);// відвели місце в пам'яті під масив номерів
//заповнимо масив індексів порядковими номерами
for i:=0 to Fn - 1 do FOil [i]:=i;
//відсортуємо методом бульбашки індекси вихідного масиву
for i:=0 to Fn - 2 do
for j:=0 to Fn - 2 do
//якщо попереду виявляється більший елемент, зрушує його назад
if NWells [FOil [j]] gt; NWells [FOil [j + 1]] then begin
Temp:=FOil [j];
FOil [j]:=FOil [j + 1];
FOil [j + 1]:=Temp;
end;
//після сортування перший два елементи індексного масиву - мінімальні
//так як масив починається з 0 елемента, то додамо 1
n1:=FOil [0] +1; n2:=FOil [1] +1 ;; TComponentClassOil.ShowValue;
ShowMessage ( Число свердловин встановлено рівним + intToStr (Fn));
end;
//вважати число свердловин в кущу
Procedure TComponentClassOil.GetValueWells (userval: string);
kod: integer;
uservalue: integer;
begin
//перевіримо чи правильно ввели число (може бути ціле або не ціла)
val (userval, uservalue, kod);
if (kod=0) and (uservalue gt; 0) then begin
//конвертуємо рядок в ціле число
n:=StrToInt (userval);
ShowValue;// Звернутися до процедура яка показує число свердловин
end else begin
MessageDlg ( Невірно введено число свердловин raquo ;, mtWarning, [mbOK], 0);
n:=0;.
2.5 Лістинг програми поводження до модуля
unit UnitZad2;
//розділ описів, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ,, StdCtrls, Buttons, Grids, ComponentClassOil;
type
TFormZad2=class (TForm)//з модулем пов'язана форма з віз.елементамі
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;