3

圧力に応じて蒸気の特性を保存するために配列を使用しています。現在、正確に9つの圧力のプロパティがあるため、静的配列を使用しています。より柔軟になりたいので、動的配列に切り替えたいと思います。

ループで使用するReDim foo(1 to i, 1 to 10)と、最後の行を除くすべてのデータが完全に失われます。
を使用しReDim Preserve foo(1 to i, 1 to 10)たり、ReDim Preserve(i,10)プログラムが「ランタイムエラー '9':添え字が範囲外です」というエラーをスローした場合。i1から9になります。

データを失うことなく、データでいっぱいの配列に行/列を追加するにはどうすればよいですか?

4

1 に答える 1

6

VB6多次元配列の最終次元のみを再保存できます。これがMSDNからの情報です:

Preserveキーワードを含めると、VisualBasicは要素を既存の配列から新しい配列にコピーします。Preserveを使用する場合、サイズ変更できるのは配列の最後の次元のみであり、他のすべての次元については、既存の配列にすでにある同じサイズを指定する必要があります。

たとえば、配列に1つの次元しかない場合、その次元のサイズを変更しても、配列の内容は最後で唯一の次元であるため、保持できます。ただし、配列に2つ以上の次元がある場合、Preserveを使用すると、最後の次元のみのサイズを変更できます。

次の例では、配列内の既存のデータを失うことなく動的配列の最後の次元のサイズを増やし、次に部分的なデータ損失でサイズを減らします。

 Dim IntArray(10, 10, 10) As Integer 
 ReDim Preserve IntArray(10, 10, 20) 
 ReDim Preserve IntArray(10, 10, 15)
于 2011-06-08T09:43:20.603 に答える