|
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
プログラム実行中に動的に配列の大きさを変えたいのですが、どうするの
でしょう?
VBではReDimで配列の大きさを実行時に変更できまが、Delphiではどうや
るのでしょう?
[A]
Delphiでは基本的に配列の大きさは固定です。
但し、ポインターを使って動的配列を実現する事が出来ます。
例えば、Integer型の配列を考えます。
先ず、Typeのところで、
type
TIntArray = array[0..9999] of Integer;
PIntArray = ^TIntArray;
とし、Varで配列を宣言します。
Var
IntArray : PIntArray;
実際に配列が必要になったら、
IntArray := AllocMem(Kosuu * SizeOf(Integer));
{Kosuuには配列に確保したい要素数を指定}
とし、各要素にアクセスするには、
IntArray^[n] := 5;
等とします。
配列の大きさを変えるには、
Ver 1.0の場合
IntArray := ReallocMem(IntArray, Kosuu * SizeOf(Integer),
NewKosuu * SizeOf(Integer));
Ver 2.0の場合
ReallocMem(IntArray, NewKosuu * SizeOf(Integer));
とします。Kosuuには以前の要素数、NreKosuuには新しい要素数を
指定します。
必ず最後にはFreeMemで確保した領域を開放してください。
FreeMem(IntArray, Kosuu * SizeOf(Integer));
Kosuuには、最後に確保した配列の要素数を指定します。
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|