C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB6で作ったユーザコントロールをVBNET


(過去ログ 135 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■79433 / inTopicNo.1)  VB6で作ったユーザコントロールをVBNETに移行したい
  
□投稿者/ ミント (1回)-(2016/04/01(Fri) 17:55:44)

分類:[VB.NET/VB2005 以降] 

こんにちは

VB6で作られたユーザコントロールのプロパティ類を
VBNETのコンバートツールにてコンバートしたところ、
大量のエラーが発生しました。

例:'DrawMode' は 'System.Windows.Forms.ContainerControl' のメンバではありません
 :'BorderStyle'は'System.Windows.Forms.ContainerControl' のメンバではありません

いずれも「'System.Windows.Forms.ContainerControl' のメンバではありません」というエラーがほとんどで、
たしかに、MSDNで調べてみてもSystem.Windows.Forms.ContainerControlのメンバには存在してません。

たくさんバグがあるので、まずは修正の方向性を教えてほしいです。
MSDNの記事などみましたが、よくわかりませんでした・・・。






引用返信 編集キー/
■79434 / inTopicNo.2)  Re[1]: VB6で作ったユーザコントロールをVBNET
□投稿者/ daive (95回)-(2016/04/01(Fri) 19:02:43)
2016/04/01(Fri) 19:07:25 編集(投稿者)

>VB6で作られたユーザコントロールのプロパティ類を
>VBNETのコンバートツールにてコンバートしたところ、
>大量のエラーが発生しました。
極簡単な構造のプログラムは、VB2005 / 2008 のコンバート機能で
上手く動く場合もありますが、
大抵は、コンバート機能を使わずに、手作業で作り直した方が早いです。
1.VB6が動作する環境を確保する。
  ライセンス上の問題などで、物理PCが必要な場合:XP 専門 などのキーワードで、XP機を手に入れる
  仮想PCで良い場合、VirtualBOX / Hyper-V などで、XPの仮想環境を用意する。
  で、VB6-IDE 環境を用意して、動作確認しながら、VB.NETへ書換えていきます。
  いまからやるのでしたら、VB2010以後を使うのが、お勧め。
2.コントロール配列を使っている場合は、
  例:コマンドボタン
   ボタンオブジェクトを配列で確保し、登録していく方法や
   魔界の仮面弁士さんが、過去にも説明されていた方法など。
3.フォーム画面 は、作り直した方が早いです。
  通信系:232/422/485は、標準comm / PDQcomm/AcitveComm を使っている場合は、
  .NETの機能で置換てください。
  Active3D を使っている場合は、代替え手段が無いので、
  Java-CANVAS を使う、IE限定機能を使う、Flushを使う⇒WEB Browser コントロールへ依存する。
  Active3Dの処理だけ、VB6のままとする。(⇒後継会社は、インフラジスティックス・ジャパンだが、後継品が無い)
  ADO→ADO.NET に変更しますが、Active-X ADO? コントロールの機能が変わっているので、
  慣れる必要があります。
  ネットワーク通信系も、.NetFramework の機能で置換えてください。
4.計算方法や、考え方になる部分は、ロジックとして切出し出来るはずです。
  切出せ無いようであれば、もともとの作りが悪いです。
5.結論、VB6→VB2005 / 2008 の機能は、少し大きなプログラム以上では、k期待するように、正しくは動きません。
  結果、画面は作り直し、正しく書けているロジックは、多少の変更で移植可能、
     WindowsAPIに依存した機能は、.NetFramework の対応する機能で置換。
     特定メーカーのActive-X に依存している場合は、後継品の有無の確認。


引用返信 編集キー/
■79444 / inTopicNo.3)  Re[2]: VB6で作ったユーザコントロールをVBNET
□投稿者/ ミント (2回)-(2016/04/03(Sun) 02:09:26)
No79434 (daive さん) に返信

daive さん 詳細な回答ありがとうございますっ!
仰るとおり、作りなおしたほうが早いのでは?という状況になっています。

というのもVB6自体の知識が欠けているため、VB6→VBNETへのコンバートに関する記事を読んでも
ちんぷんかんぷんなのです。
VB6の仕組み自体を「知っている前提」で書かれている記事が多いですね。


>5.結論、VB6→VB2005 / 2008 の機能は、少し大きなプログラム以上では、k期待するように、正しくは動きません。
>  結果、画面は作り直し、正しく書けているロジックは、多少の変更で移植可能、
>     WindowsAPIに依存した機能は、.NetFramework の対応する機能で置換。
>     特定メーカーのActive-X に依存している場合は、後継品の有無の確認。
結局、こういう方向で進むしかないでしょうか。ハァ・・・
解決済み
引用返信 編集キー/
■79445 / inTopicNo.4)  Re[3]: VB6で作ったユーザコントロールをVBNET
□投稿者/ daive (96回)-(2016/04/03(Sun) 11:42:02)
2016/04/03(Sun) 11:55:36 編集(投稿者)

> というのもVB6自体の知識が欠けているため、VB6→VBNETへのコンバートに関する記事を読んでも
> ちんぷんかんぷんなのです。
> VB6の仕組み自体を「知っている前提」で書かれている記事が多いですね。
> 結局、こういう方向で進むしかないでしょうか。ハァ・・・
参照サイトは、VB6、VB.NETで、同じ手法が検索できるサイト、
例えば、
jeanne.wankuma.com
dobon.net
VB中学校の旧VB6コンテンツ、新VB.NETコンテンツ
レスキュー花ちゃん
NonSoft :通信系などの、VB6 / VB.NET サンプル
DB関連であれば、
Visual Basic 2010/2008 やさしいADO.NET DBプログラム
と、旧コンテンツ:mdb 系

他、

そこで、重要になるのが、元のVB6のコードを確認する環境です。
何か苦労しないでも、VB6が動作するOSは、
Windows XPx32 / Windows Server 2008x32 ( Windows Server 2008R2 は未検証 Win 2008 は延長サポート中です。)
各OS、VB6自体は、MSDN-ライセンスで取得可能、ヤフオクはグレーな物が多いですが、中古品市場で探します。
(MSDN/VisualStudio ライセンスは、WANKUMA同盟さんのサイトからでも、購入可能。)
VB6の各ファイルは、Vxエディタなどの、無料系エディタで開けますが、
メモ帳の使用は避けた方が無難です。(EOF除け機能が無い)
'
終わらないJOBは有りません。
「やりゃいいんだよ、何とかなる」、たぶん、きっと(^^♪

以下凹むかもな、書込み。
1.GUIと関連コードは、どのみち作り直し。
  特にコントロール配列部分は、オブジェクト使用に変更した方が、後々楽になります。
  見てくれだけでない部分の確認には、VB6の開発環境は必須。
2.ロジック部分、正しく作られているコードは、移植可能。
  クラス部分は、たぶん実装しなおしが吉。(思想が異なります。)
3.ファイルアクセス部分、.Netframework へ書直します。
  MID / SPLIT などは、代替があります。殆どの場合は、苦労しないで、書直しが可能
  MID$ など、DBCS コードを引きずった部分は、byte 処理も考慮する。
  Shift-JIS/MS-Unicode ⇒ UTF-8 、ソース保存文字コードだけでは無い部分の考慮。
  配列に文字列を入れている、Array を使っている場合は、
  List(Of T) / List(Of String) 他の使用を検討します。
  ⇒DataSource に成り得るデータ型にすると、応用、使用で楽ができます。
4.Windows API は、.Netframework に対応機能がある事が多いので、書換。
  INI ファイルの扱いなど、どうしてもWindows API であれば、
  VB.NET Windows API で検索されると、事例が見つかります。
5.MCI系で、Active-X コントロールは、どうしましょうかねぇ。
  代替方法はあるのですが、複数サウンドの同時再生は、面倒かも。
  DirectSound 系迄いくほどかどうか。
6.Active-X 系で、非サポート、メーカー後継品無に対しては、
  代替機能を探す、自分で実装する、
  画面、画像関係では、Directshow で解決できる場合も。
7.Active-X DOC / DHTML 系は、諦めて画面他UIは作り直し。
  (使うんじゃなかったと、悔やんだのは何年前だろう)
8.ネットDDE機能(DDEサーバー)など、廃止機能は、代替手段へ書直し。
9.DB系は、ADO⇒ADO.NET、他は、代替手段の調査から。
解決済み
引用返信 編集キー/
■79457 / inTopicNo.5)  Re[4]: VB6で作ったユーザコントロールをVBNET
□投稿者/ ミント (3回)-(2016/04/04(Mon) 09:44:00)
daiveさん、改めて回答ありがとうございます^^

そもそもVB6を動かす環境がなかったですね。
Win8のPCにVisualBasic6.0を入れて、とりあえず見ている・・・、という感じです。

提示していただいた、参考サイトありがとうございます。
検索しているとヒットするサイトが結構ありますね。やっぱこの辺に絞られてくるのかな。


>以下凹むかもな、書込み。
以下の内容については、「大変だぞ」ということはよくわかりました。
前回の回答でもそうですが、なんとなく方向性を指してくれてありがとうございます。




引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -