Mathユニットの統計ルーチンの関数、例えば、
function StdDev(const Data: array of Double): Extended;
function Sum(const Data: array of Double): Extended; register;
などを動的配列に対して簡単な処理(キャスト?みたいな感じ)だけで使用することはできるでしょうか?
やはり、動的配列の場合は、自分で関数を作ることになるのでしょうか?
Delphi6 Personal,Windows2000の環境です。
オープン配列パラメータの引数は、
動的配列でも静的配列でもOK。
でも性的配列はダメ。
type
TArrayOfDouble = array of Double;
var
Tmp: TArrayOfDouble;
i: Integer;
begin
SetLength(Tmp, 10);
for i:=0 to 9 do Tmp[i] := i+1;
Memo1.Lines.Add(FloatToStr(Sum(Tmp)));
Memo1.Lines.Add(FloatToStr(StdDev(Tmp)));
Memo1.Lines.Add(FloatToStr(MaxValue(Tmp)));
Memo1.Lines.Add(FloatToStr(Mean(Tmp)));
end;
みすきゃすと?さん、早速の回答どうも有難うございました。
まだ、typeでの宣言の意味など仕組み的な理解は出来ていませんが、実現方法は理解できました。
ありがとうございました。
解決にしましたが、質問の元が勘違いに近いものだったようなので、経緯を追加しておきます。
今回の質問は、array of Singleと既に宣言していた動的配列に統計ルーチン関数を適用しようとした場合に、
「'Array'と'dynamic array'には互換性がありません」
とのエラーメッセージが出てきたことが発端でした。指定されているのが、Doubleで、Singleではないことは認識していましたが、エラーメッセージから動的配列がいけないと考えましたが、そうではなく、単純にDoubleにすればよかっただけだったのですね。
ツイート | ![]() |