Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト|サインイン
Visual Studio 2005*
マイクロソフト サイトの検索:
|MSDN ライブラリ|デベロッパー センター|ダウンロード情報|開発ツール製品|コミュニティ|ご意見・ご要望|サイトマップ


MSDN Home   MSDN Home
MSDN Home > Visual Studio > 旧バージョンからの移行 > VB マイグレーション Tips > 配列と固定長文字列を使用していた場合のアップグレード時の注意点

配列と固定長文字列を使用していた場合のアップグレード時の注意点


サンプル コードのダウンロード (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 への移行を考え、固定長文字列を使用しないようにすると良いでしょう。


Microsoft