本当に度々、申し訳ないです(..)゛
今度は動的配列についてですが、引数で渡された関数内で
配列要素数を指定しようとしたら、『互換性のない型です』と怒られて
しまいました。参照渡しでも値渡しでも同じです。
渡す側で要素数を指定してから渡すしかないんでしょうか?
どうして怒られるのかもわかりません。
毎回初歩的な質問ばかりで申し訳ないですが、よろしくおねがいします (_、_)゛
エラーが出たコードを書いてもらったほうが答えやすいのですが。。。
コードがないので推測ですが、
おそらく、
procedure MyProc(Ary: Array of integer);
begin
SetLength(Ary, 10);
end;
のような感じで、引数を宣言していると思われます。
が、引数でこの様に宣言すると、オープン配列パラメータ になり、
動的配列ではないので、『互換性のない型です』と怒られます。
(ヘルプで オープン配列パラメータ で調べると詳しく説明してあります。)
type MyArray = Array of integer;
procedure TestProc(Ary: MyArray);
begin
SetLength(Ary, 10);
end;
というように、型宣言してから、引数にすればエラーはでなくなります。
推測で書いていますので、外していたら、ごめんなさい。
説明足らずですみません。推測どおりの質問でした。
教えていただいたように処理するとうまくいきいました。
ヘルプで『オープン配列パラメータ』を見るとちゃんと書いてありました。
(SetLengthは使えませんって。)
普通に引数にしていた配列は、実はオープン配列パラメータだったんですね!
ありがとうございます。
まだまだ基本的な部分の勉強が必要みたいです。本当に申し訳ない・・・
ここの人たちは丁寧に教えてくれるので、とてもありがたいです。
がんばっていきますので、今後ともよろしくお願いします(..)
ツイート | ![]() |