これは、ここにある私の以前の質問の続きです。基本的に、基本的な例で dll/関数をテストしようとしていますが、「E2010 - 非互換の型: AInteger/ADouble および Set」および「E1012 - 定数式がサブ範囲境界に違反しています」というエラーが配列で発生します。私はそれが言おうとしていることを(ある程度)理解していますが、何を修正すべきかわかりません。例えば:
var
n: Integer;
Ap, Ai: AInteger;
Ax, b: ADouble;
begin
// Initializations
n := 5;
Ap := [0, 2, 5, 9, 10, 12]; <- E2010
Ai := [0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4]; <- E2010
Ax := [2, 3, 3, -1, 4, 4, -3, 1, 2, 2, 6, 1]; <- E2010 and E1012
b := [8, 45, -3, 3, 19]; <- E1012
とタイプは私の配列ですAInteger
:ADouble
ADouble = array[0..High(Integer) div SizeOf(Double) - 1] of Double;
AInteger = array[0..High(Integer) div SizeOf(Integer) - 1] of Integer;
これらは C で記述されているため、この方法で初期化する必要があります (Rudy の Delphi ページやその他の C-to-Pascal ソースによると) double Ax[]
。 dll ですが、例/解決策が見つからないため、グーグルで間違っている可能性があります。したがって、質問形式で:
Q1 : E1012 は、
「そして、これらの[AInteger and ADouble]のようなことを行う場合、High(Integer) に近づきすぎないように注意してください。データ構造が大きすぎるとコンパイラが文句を言う可能性があるからです。」(Rudyのページより引用)
Q2 : このコードをどのように変更すればよいですか?
助けてくれてありがとう。