セクションで表現できる方法でポイントをコード本体で表現できないため、できませんconst
。
ただし、特に妥当な数のポイントを持っている場合は、生活を楽にするためにいくつかのトリックを行うことができます.
次のような簡単な手順を実装できます (コードはテストされていません)。
procedure BlendDimensions(aXArray, aYArray: TIntegerDynArray; var aResult: TPointArray);
var
nCount: integer;
i: integer;
begin
nCount:=High(aXArray);
if nCount <> High(aYArray) then
Exception.Create('The two dimension arrays must have the same number of elements!');
SetLength(aResult, nCount);
for i:=0 to nCount do
begin
aResult[i].X:=aXArray[i]; //simple copy
aResult[i].y:=aYArray[i];
end;
end;
...ここで、TIntegerDynArray は RTL の整数の動的配列です。(実際、どの動的配列でも機能します)。また、上記の例の TPointArray も動的です。
したがって、あなたの仕事をするために、次のようにすることができます:
procedure Foo;
var
myXCoords, myYCoords: TIntegerDynArray; //temp arrays
myPoints: TPointArray; //this is the real thing
begin
myXCoords:=TIntegerDynArray.Create( 1, 2, 3, 4, 5, 6, 7, 8, 9,10);
myYCoords:=TIntegerDynArray.Create(21,32,34,44,55,66,65,77,88,92); //...for example
BlendDimensions(myXCoords, myYCoords, myPoints); //build the real thing
//use it...
end;
注意事項:
- あなたはあなたのポイントがはっきりとわかります
- このようにして、非常に生産的になることができます
BlendDimensions
これだけでなく他のものにも使えます
BlendDimensions
3 つ (またはそれ以上) の次元に簡単に拡張できます
- ...しかし、コピーが含まれているため注意してください。:-) 今日の PC では、弱点は圧倒的にあなたの手です。:-) コピーの時間が気になるまでは、もっと速くタイプするのに疲れるでしょう。
HTH