配列 – 可変サイズのvbscriptで配列を実装する方法

将来更新しやすくするために、Webページの一部を再設計しています。現在、それはハードコーディングされた一連のテーブルです。テーブルを再設計するには(たとえば、アルファベット順にするために)、HTML内の多数の値を手動で交換する必要があります。

これが私がやりたいことです。
表示名とURLをそれぞれ保持するために、titleとlink変数を使用してurl_Linkオブジェクトを作成します。
url_Linkオブジェクトの配列を作成し、それをページの.aspファイルの先頭に入力します。
それらの配列に対してforループを実行してテーブルを作成し、データを設定します。

これ自体はそれほど悪くありませんが、私は2つの問題に直面します。
1つは、配列サイズを定義する必要がないことです。これは、リンク数が変更されたときに変更する必要がある2番目の場所になるためです。
特定のurl_Linkオブジェクトが表示されないようにするロジックがいくつかあり(たとえば、一部のユーザーは特定のページにアクセスできないため、リンクが表示されないなど)、配列のサイズ設定時に問題が発生します。

大きなサイズの配列を作ることができることはわかっていますが、これは私には無駄に思えます(そして、各関数の方法がわからず、空の行が大量に表示されることも望ましくありません)。

これらの問題を解決するために私は何ができますか?私はvbscriptに精通していないし、私が取り組んできたコードの大部分は配列やオブジェクトを利用していません。

更新:
私は特大の配列の余分な脂肪を取り除くためにredim PRESERVEを使ってみました。問題は、場合によっては、if条件のために、配列に最大サイズよりも少ない数のオブジェクトが取り込まれることです。これは、forループを使用したときに問題を引き起こしています(for eachを機能させようとしましたが、現時点では発生していません)。 redim行に “この配列は固定されているか一時的にロックされています”というエラーが表示されます。

コード:

  dim systemSettingsArray(1) 
  arrayCounter = 0
  if ADMIN = "Y" then
      set systemSettingsArray(arrayCounter) = (new url_Link).Init("Account Administration","Maintenance/Account_Admin.asp")
      arrayCounter = arrayCounter + 1
  end if
  set systemSettingsArray(arrayCounter) = (new url_Link).Init("Time Approval","Maintenance/system_Time_Approval.asp")
  redim Preserve systemSettingsArray(arrayCounter)
ベストアンサー
アレイにredim preserveを使用してください。 UBoundを使って現在の要素数を見つけ、次のようなことができます。

ReDim Preserve myArrayName (UBound(myArrayName) + 1)

http://msdn.microsoft.com/en-us/library/c850dt17%28v=vs.84%29.aspx

転載記事の出典を記入してください: 配列 – 可変サイズのvbscriptで配列を実装する方法 - コードログ