« ☆TreeViewのアイテム高さを設定する。 | トップページ | ☆幅を指定したDocking »

☆動的配列のメモリ確保で・・・。

動的配列のメモリ確保を別処理にした場合に、 SetLengthのところでエラーになりました。

procedure Shori(var AOR: array of String);
begin
  SetLength(AOR, 10);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  AOR: array of String;
begin
  Shori(AOR);
end;

エラーメッセージの内容です。

[DCC エラー] Unit1.pas(30): E2008 互換性の無い型です



次のように array of StringTypes 名前空間で定義されている TStringDynArray に置き換えることにより解決しました。
uses Types;

procedure Shori(var AOR: TStringDynArray);
begin
  SetLength(AOR, 10);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  AOR: TStringDynArray;
begin
  Shori(AOR);
end;


[20071023追記]
この件は、動的配列の問題ではなく、正確にはオープン配列パラメータの仕様です。
タイトルが動的配列となっており、ややこしくてすみません。
詳しくはヘルプの オープン配列パラメータ をご覧下さい。 「オープン配列パラメータは SetLength には渡せません。」ときちんと載っています。

|

« ☆TreeViewのアイテム高さを設定する。 | トップページ | ☆幅を指定したDocking »