VB6からVS2013へのマイグレーションで注意すること
マイグレーション時に遭遇した問題を覚えている範囲で書きました。
マイグレーション後に使えなくなる機能
REXEC
Socketクラスでrexecの仕組みを作成する必要があります。
Shell関数
TcpClinet?等を使ってTelnetを行う形などへ書き換えが必要です。
LenB関数
VB.NETでは存在しません。独自で用意する必要があります。
Oracle OO4O
ODP.NETへの書き換えが必要です。
PictureBox
ほどんとの機能が使えないので書き換える必要があります。
Microsoft公式サイトに互換表がありますが、サンプルがないので置き換えができません。
VB6とVB.NETで座標の単位が変わっています。
VB.NETでは単位がピクセルなので、単位変換等が不要でそのままの数値が使えます。
DDE
VB.NETには存在しません。
別途DDEライブラリを使用すれば使えます。
固定長文字列配列
VB.NETではサポートされていませんので書き換えが必要です。
VB6にしかない定数
VB.NETに対応しているものがあればそれに置換し、それ以外の場合修正が必要です。
Printer関連
コードアップグレードではエラー・警告が一切でないですが、印刷に関しては全く動きません。
VB.NETから仕組みが全く違うので全て書き換えるが必要です。
修正が必要になってくる機能
OnErrorGoTo?のエラー処理
基本的にVB.NETでも動作しますが、エラー発生時の詳細が取得できないので、どのクラスの何行目でどういったエラーが発生しているかがわかりません。
そのためTry-Catch-Finallyに書き換える必要が出てきます。
FormのActivatedイベント
VB.NETからVB以外の他のプログラムからの切替時にもイベントが動作するようになりました。
そのため、イベント発生回数が増え画面がちらついたり、意図しない動きが発生します。
なるべく使わないように修正する必要があります。
VB6.GetItemString
リストから文字を取得する関数ですが、.NETで使うとかなりパフォーマンスが悪くなります。
ListBox?.Items(index)の形に書き換える必要があります。
あるシステムで関係する部分を書き換えると、処理時間が2分→1秒未満になりました。
VB6系の関数
VB6系の関数は、パフォーマンスが悪いものが多いので、可能な限り.NETの仕組みに書き換えるようにしましょう。
見積り
見積の段階でアップグレードマイグレーションを行い、コンパイルエラーの確認、上記の事項がどれくらいあるのか確認しておきます。
マイグレーション作業は、実際にやってみないと隠れた作業がわかりません。
見積として出す時間は、多めに見ておいた方が良いでしょう。
実際、動作確認の段階で予期せぬ対応がでてきたので、余計に時間がかかったりしました。
参考
Visual Basic .NET におけるコントロールの変更点
VisualBasic2013パーフェクトマスター (Perfect Master SERIES)
- 作者: 金城俊哉
- 出版社/メーカー: 秀和システム
- 発売日: 2013/12/05
- メディア: 単行本
- この商品を含むブログを見る
VisualBasic2013パーフェクトマスター (Perfect Master SERIES)
- 作者: 金城俊哉
- 出版社/メーカー: 秀和システム
- 発売日: 2013/12/05
- メディア: 単行本
- この商品を含むブログを見る