Использование многомерных массивов в процедурах и функциях из Math.pas
Falk0ner, вс, 06/07/2008 - 15:35.
Использование многомерных массивов в процедурах и функциях из Math.pas
{ **** UBPFD *********** by kladovka.net.ru ****
>>
Многим процедурам и функциям из Math.pas в качестве одного из параметров требуется одномерный открытый массив, например:
function Mean(const Data: array of Double): Extended;
function Sum(const Data: array of Double): Extended;
function MinValue(const Data: array of Double): Double;
function MaxValue(const Data: array of Double): Double;
Эти процедуры и функции можно применить также для работы с многомерными массивами или подмассивами одномерного массива, приводя их тип и заменяя описание открытого массива на пару "Data: pointer; Bound: integer", где первый параметр - указатель на первый обрабатываемый элемент массива, второй - количество обрабатываемых элементов минус 1.
Например, для доступа к функции MaxIntValue можно использовать тип:
TMaxIntValue = function(Data: pointer; Bound: integer): integer;
Зависимости: Math
Автор: Александр Шарахов, <a href="mailto:alsha@mailru.com">alsha@mailru.com</a>, Москва
Copyright: Александр Шарахов
Дата: 18 января 2003 г.
********************************************** }
type // Тип для доступа к MaxIntValue
TMaxIntValue = function(Data: pointer; Bound: integer): integer;
>>
Многим процедурам и функциям из Math.pas в качестве одного из параметров требуется одномерный открытый массив, например:
function Mean(const Data: array of Double): Extended;
function Sum(const Data: array of Double): Extended;
function MinValue(const Data: array of Double): Double;
function MaxValue(const Data: array of Double): Double;
Эти процедуры и функции можно применить также для работы с многомерными массивами или подмассивами одномерного массива, приводя их тип и заменяя описание открытого массива на пару "Data: pointer; Bound: integer", где первый параметр - указатель на первый обрабатываемый элемент массива, второй - количество обрабатываемых элементов минус 1.
Например, для доступа к функции MaxIntValue можно использовать тип:
TMaxIntValue = function(Data: pointer; Bound: integer): integer;
Зависимости: Math
Автор: Александр Шарахов, <a href="mailto:alsha@mailru.com">alsha@mailru.com</a>, Москва
Copyright: Александр Шарахов
Дата: 18 января 2003 г.
********************************************** }
type // Тип для доступа к MaxIntValue
TMaxIntValue = function(Data: pointer; Bound: integer): integer;
Пример использования:
type // Тип для доступа к MaxIntValue
TMaxIntValue = function(Data: pointer; Bound: integer): integer;
var
a: array[1..2,1..2,1..2] of integer;
b: integer;
begin
// Эквивалент для b:=MaxIntValue(a); если бы так можно было писать
b:=TMaxIntValue(@MaxIntValue)(@a,SizeOf(a) div SizeOf(integer)-1);
end;
TMaxIntValue = function(Data: pointer; Bound: integer): integer;
var
a: array[1..2,1..2,1..2] of integer;
b: integer;
begin
// Эквивалент для b:=MaxIntValue(a); если бы так можно было писать
b:=TMaxIntValue(@MaxIntValue)(@a,SizeOf(a) div SizeOf(integer)-1);
end;
Отправить комментарий