Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Код программы. Исходный код библиотеки DLL:






Исходный код библиотеки DLL:

 

library Project1;

 

uses SysUtils, Classes, UnitType in 'UnitType.pas';

 

function MidArray (Masr: TExt): extended; // среднее арифметическое положительных элементов массива

var mid, sym: extended;

col, n: integer;

begin

n: =0;

sym: =0;

for col: =0 to length(masr)-1 do

if masr[col]> 0 then

begin

sym: = sym + masr[col];

n: =n+1;

end;

if sym=0 then mid: =0 else

mid: = sym/n;

midarray: = mid;

end;

Function DiagSum (A: TMas): extended; //вход: 2мерный массив extended'ов выход: extended

var

Sum: extended;

i, j: integer;

begin

Result: =0;

if Length (A[0])> Length (A) then

for j: = 0 to Length (A)-1 do

result: =result+A[j, j]

else

for i: = 0 to Length(A[0])-1 do

result: =result+A[i, i];

DiagSum: =result;

End;

procedure GenMas(Ncol, Nrow: word; var Zap: TMas);

var col, row: integer;

begin

SetLength(Zap, Nrow, Ncol);

for col: =0 to Ncol-1 do

for row: = 0 to Nrow - 1 do

Zap[row, col]: =(random(100)-random(50));

end;

procedure GenMasO(Nocol: integer; var Zapo: TExt);

var col: integer;

begin

randomize;

SetLength(Zapo, Nocol);

for col: =0 to Nocol-1 do

Zapo[col]: =(random(100)-random(50));

end;

{$R *.res}

exports

MidArray name 'Mid',

DiagSum name 'D1',

GenMasO name 'Gen1',

GenMas name 'Gen2';

begin

end.

 

Исходный код программы:

 

procedure TForm2.Button1Click(Sender: TObject);

begin

H: =LoadLibrary('Project1.dll');

if H=0 then

showmessage('ошибка dll');

@Mid: =GetProcAddress(H, 'Mid');

if @Mid< > nil then

begin

ShowMessage('Ср. арифметическое положит элементов: '+FloatToStr(Mid(Mas2)));

end

else

showmessage('ошибка адреса');

exit;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

H: =LoadLibrary('Project1.dll');

if H=0 then

showmessage('ошибка dll');

@D1: =GetProcAddress(H, 'D1');

if @D1< > nil then

begin

ShowMessage('Сумма элементов главной диагонали: '+FloatToStr(D1(Mas1)));

end

else

showmessage('ошибка адреса');

exit;

end;

procedure TForm2.Button3Click(Sender: TObject);

var col: integer;

begin

H: =LoadLibrary('Project1.dll');

if H=0 then

showmessage('ошибка dll');

@Gen1: =GetProcAddress(H, 'Gen1');

if @Gen1< > nil then

begin

SG2.ColCount: =SE3.Value;

Gen1(SE3.Value, Mas2);

for col: = 0 to SE3.Value - 1 do

SG2.Cells[col, 0]: =FloatToSTR(Mas2[col]);

Button1.Enabled: = true;

end

else

showmessage('ошибка адреса');

exit;

end;

procedure TForm2.Button4Click(Sender: TObject);

var col, row: integer;

begin

H: =LoadLibrary('Project1.dll');

if H=0 then

showmessage('ошибка dll');

@Gen2: =GetProcAddress(H, 'Gen2');

if @Gen2< > nil then

begin

SG1.ColCount: =SE1.Value;

SG1.RowCount: =SE2.Value;

Gen2(SE1.Value, SE2.Value, Mas1);

for col: = 0 to SE1.Value - 1 do

for row: = 0 to SE2.Value - 1 do

SG1.Cells[col, row]: =FloatToSTR(Mas1[row, col]);

Button2.Enabled: = true;

end

else

showmessage('ошибка адреса');

Exit;

end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

begin

FreeLibrary(H);

end;

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.