動的配列の再構成(SetLength)について

解決


かなこ  2002-08-06 00:19:53  No: 1209

本当に度々、申し訳ないです(..)゛

今度は動的配列についてですが、引数で渡された関数内で
配列要素数を指定しようとしたら、『互換性のない型です』と怒られて
しまいました。参照渡しでも値渡しでも同じです。
渡す側で要素数を指定してから渡すしかないんでしょうか?
どうして怒られるのかもわかりません。

毎回初歩的な質問ばかりで申し訳ないですが、よろしくおねがいします (_、_)゛


hatena  2002-08-06 00:56:36  No: 1210

エラーが出たコードを書いてもらったほうが答えやすいのですが。。。

コードがないので推測ですが、
おそらく、

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;

というように、型宣言してから、引数にすればエラーはでなくなります。

推測で書いていますので、外していたら、ごめんなさい。


かなこ  2002-08-06 02:17:11  No: 1211

説明足らずですみません。推測どおりの質問でした。

教えていただいたように処理するとうまくいきいました。
ヘルプで『オープン配列パラメータ』を見るとちゃんと書いてありました。
(SetLengthは使えませんって。)
普通に引数にしていた配列は、実はオープン配列パラメータだったんですね!
ありがとうございます。

まだまだ基本的な部分の勉強が必要みたいです。本当に申し訳ない・・・
ここの人たちは丁寧に教えてくれるので、とてもありがたいです。
がんばっていきますので、今後ともよろしくお願いします(..)


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加