少し異なるタイピングを使用して、高レベルのアプリケーションと低レベルのサブシステムの間にラッパー層を実装する必要があります。
アプリケーションは、単一ベクトルの配列を生成します。
unit unApplication
type
TVector = record
x, y, z : single;
end;
TvectorArray = array of Tvector;
procedure someFunc(): tvectorArray;
[...]
一方、サブシステムは double ベクトルの配列を想定しています。また、tvector から Tvectord への型キャストも実装しました。
unit unSubSystem
type
TVectorD = record
x, y, z : double;
class operator Implicit(value : t3dVector):t3dvectorD;inline;
end;
TvectorDArray = array of TvectorD;
procedure otherFunc(points: tvectorDArray);
implementation
class operator T3dVecTorD.Implicit(value : t3dVector):t3dvectorD;
begin
result.x := value.x;
result.y := value.y;
result.z := value.z;
end;
私が現在やっていることは次のようなものです:
uses unApplication, unsubsystem,...
procedure ConvertValues
var
singleVecArr : TvectorArray;
doubleveArr : TvectorDArray;
begin
singleVecArr := somefunc;
setlength(doubleVecArray, lenght(singlevecArr));
for i := 0 to length(singlevecArr) -1 do
doubleVecArray[i] := singleVecArr[i];
end;
これらの種類の変換を実行するより効率的な方法はありますか?