☆配列のサイズ変更で・・・。
Highが配列の要素数を返していると思い込んでしまい、 こんなことでずっと悩んでいました。
ちょっと情けないかも(^^;
// 間違ったコード procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin // 配列要素数を取得しているつもり → 実際は、配列要素数-1 I := High(TestArr); // 配列要素数を一つ増やしたつもり → 実際は、前のまま Inc(I); SetLength(TestArr, I); // 増えていることを確認するためにHighを使った。 I := High(TestArr); // 一つ増やした要素に代入しているつもり → 実際は、要素の最後に代入 TestArr[I] := 1000; // 結果として増えていない! end;
// 正しいコード procedure TForm1.Button3Click(Sender: TObject); var I: Integer; begin I := Length(TestArr); Inc(I); SetLength(TestArr, I); I := High(TestArr); TestArr[I] := 1000; end;
| 固定リンク