配列と固定長文字列を使用していた場合のアップグレード時の注意点
サンプル コードのダウンロード (vbmigtips_arrangement.exe, 90.7 KB)
同じ型のデータを一括して処理を行う場合には配列を利用し、入力可能な文字列の最大数を設定する場合には固定長文字列を宣言したりします。しかし、Visual Basic 6.0 と Visual Basic .NET では宣言方法は異なります。そこで今回、配列と固定長文字列について紹介します。
配列
図1 の「配列」ボタンをクリックすると、配列で使用されるのインデックス下限と上限をそれぞれメッセージボックスで表示させる EXE を作成します。Visual Basic 6.0 での実装コードは以下のとおりです。
  
図1
|
Private Sub Command1_Click()
Dim arr(1 To 3) As Integer
Dim data As String
data = "最小値は「" & LBound(arr) & "」" & Chr(13) & "最大値は「" & UBound(arr) & "」"
MsgBox data, vbOKOnly, "配列"
End Sub
|
リスト1
配列の宣言「Dim arr(1 To 3) As Integer」で指定しているように、配列で使用されるインデックスの下限は「1」、上限は「3」となります。
では、リスト1 を Visual Basic .NET ではどのように記述すればよいのでしょうか。今回は、アップグレードウィザードを活用して Visual Basic .NET に変換されたコードを参考に見ていきましょう。
Visual Basic 6.0 で作成したリスト1 にプロジェクトを、Visual Basic .NET で開きます。すると、自動的にウィザードが起動し、指示に従って操作を行うと、コードが変換されます。下記のコードは、アップグレードウィザードによって変更されたコードです。
|
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
Dim arr(3) As Short
Dim data As String
data = "最小値は「" & LBound(arr) & "」" & Chr(13) & "最大値は「" & UBound(arr) & "」"
MsgBox(data, MsgBoxStyle.OKOnly, "配列")
End Sub
|
リスト2
Visual Basic 6.0 では「Dim arr(1 To 3) As Integer」 (リスト1) のように、配列で使用されるインデックスの下限と上限を設定することできました。しかし、Visual Basic .NET ではインデックスの下限は 0 からと決められているため、「Dim arr(3) As Integer」 (リスト2) と変更されます。これにより、上記 (リスト2) を実装すると、配列で使用されるインデックスの下限は「0」、上限は「3」となります (図2) 。

図2
リスト1 の設定では「要素数 3」に対し、リスト2 では「要素数 4」となるため、Visual Basic .NET への移行を考え、インデックスの下限を 0 とし「Dim arr(2) As Integer」と宣言すると良いでしょう。
固定長文字列
図1 の「固定長文字列」ボタンをクリックすると、変数に格納されたデータが表示される (図3) EXE を作成します。Visual Basic 6.0 での実装コードは以下のとおりです。

図3
|
Private Sub Command2_Click()
Dim data As String * 12
data = "Visual Basic 6.0"
MsgBox (data)
End Sub
|
リスト3
Visual Basic 6.0 で作成したリスト3 をアップグレードウィザードを活用して Visual Basic .NET のコードに変更します。下記は、アップグレードウィザードによって変更されたコードです。
|
Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
Dim data As New VB6.FixedLengthString(12)
data.Value = "Visual Basic 6.0"
MsgBox(data.Value)
End Sub
|
リスト4
Visual Basic .NET では固定長文字列はサポートされていません。そのため、固定長文字列の動作を提供している互換性クラスを利用します。それにより Viual Basic 6.0 と同じように処理を行うことができます。しかし、互換性クラスを利用すると、アクセス速度が遅くなります。また、Visual Basic .NET と他の言語との互換性の問題が出てくる場合もあります。よって、Visual Basic .NET への移行を考え、固定長文字列を使用しないようにすると良いでしょう。
|