私は多次元配列を持っています:
TBMArray = TArray<array of byte>;
そして再帰関数
function goForSolve(bData: TBMArray; const iSize: integer): TBMArray;
この関数
tempData: TBMArray;
では、bData の値を変更せずに tempData を変更する必要があります。しかし、tempData を変更すると、bData も変更されます。関数で bData を tempData にコピーしてみた
procedure copyData(Source: TBMArray; var Dest: TBMArray);
var
iCurEl, iLen: integer;
begin
iLen := length(Source);
setLength(Dest, iLen);
setLength(Dest[0], 1);
for iCurEl := 1 to iLen - 1 do
setLength(Dest[iCurEl], iCurEl + 1);
for iCurEl := Low(Source) to High(Source) do
Dest[iCurEl] := Source[iCurEl];
end;
しかし、結果は同じです
tempData := bData;
値ではなく関数コピー ポインターのようです。