VB6における多次元配列の汎用的取扱い
いま仕事でVB6のコードを書いているんだけども、金曜日コードレビューしたら、ある部分は1次元配列じゃだめで2次元配列を使わないとダメだと言うことが発覚。まあそれはそれで直したんだけど、多次元配列の取扱を汎用的に記述できないか悩む。結局出来上がったコードは…
Sub StringArrayDumper(ByVal ArrayName As String,ByRef DumpTarget() As String) Dim TestIndex As Integer Dim ArrayDimension As Integer Dim AnElement As String Dim IDX1 As Integer Dim IDX2 As Integer Dim IDX3 As Integer On Error GoTo StringArrayDumper_TESTEXIT ArrayDimension = 1 Do While True TestIndex = LBound(DumpTarget, ArrayDimension) ArrayDimension = ArrayDimension + 1 Loop StringArrayDumper_TESTEXIT: On Error GoTo 0 ArrayDimension = ArrayDimension - 1 Select Case ArrayDimension Case 1 For IDX1 = LBound(DumpTarget, 1) To UBound(DumpTarget, 1) Debug.Print ArrayName & "(" & CStr(IDX1) & ")=" & DumpTarget(IDX1) Next IDX1 Case 2 For IDX1 = LBound(DumpTarget, 1) To UBound(DumpTarget, 1) For IDX2 = LBound(DumpTarget, 2) To UBound(DumpTarget, 2) AnElement = DumpTarget(IDX1, IDX2) If Not (IsEmpty(AnElement) Or Len(AnElement) = 0) Then Debug.Print ArrayName & "(" & CStr(IDX1) & "," & CStr(IDX2) & ")=" & AnElement End If Next IDX2 Next IDX1 Case 3 For IDX1 = LBound(DumpTarget, 1) To UBound(DumpTarget, 1) For IDX2 = LBound(DumpTarget, 2) To UBound(DumpTarget, 2) For IDX3 = LBound(DumpTarget, 3) To UBound(DumpTarget, 3) AnElement = DumpTarget(IDX1, IDX2, IDX3) If Not (IsEmpty(AnElement) Or Len(AnElement) = 0) Then Debug.Print ArrayName & "(" & CStr(IDX1) & "," & CStr(IDX2) & "," & CStr(IDX3) & ")=" & AnElement End If Next IDX3 Next IDX2 Next IDX1 Case Else Debug.Print ArrayName & " うえええぇえぇええ;;" End Select End Sub
配列の次元数を調べるOn Error GoToも糞だが、そのあとのCase文が本当にゴミ。私のスキルでは汎用的に取り扱うことは不可能! バカ! 生きる価値なし! She knooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooow
;y=ー(・ω・)・∵. ターン
…つーか、多次元の配列って配列の入れ子で表現してほしいんだけど、そうなっていないのはなぜ?>Microsoft そうなら再帰で終わりなんだが。