VB6コードからVB.NETへのアップグレードにおける注意点とは?

このQ&Aのポイント
  • VB6コードをアップクレードウィザードで変換すると、Upgrade_Warningメッセージが表示されます。これは、VB.NETではパラメータのない既定プロパティをサポートしないため、宣言された変数が機能しないことを示しています。
  • VB6コードをアップクレードウィザードで変換して、VB.NETでコンパイルするとWarningメッセージが表示される場合、VB.NETでサポートされないステートメントや制約がある可能性があります。これにより、関数がすべてのコードパスで値を返さないという警告が表示されることがあります。
  • 指定されたファイル属性やファイルRWモードは、ファイルのアクセスや操作に関する情報です。これらの値はレジスター情報ではなく、ファイルの属性やモードを示しています。
回答を見る
  • ベストアンサー

VS 2008(VB.NET)

質問がございます。 1. VB6コードをアップクレードウィザードで変換すると、Upgrade_Warningメッセージがでます。 これは、VB.NETでは"パラメータのない既定プロパティはサポートしない"とあります。 これは宣言した変数を示してますが、機能しないとうことですか? >'UPGRADE_WARNING: オブジェクトXXXXXXXX の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword= "6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。 2. VB6コードをアップクレードウィザードで変換して、VB.NETでコンパイルするとWarningメッセージがでますが、これは、VB.NETでサポートしないステートメントや制約があるのでしょうか? インパクトが解りません。 >warning BC42105: 関数'XXXXXXXX'は、すべてのコードパス上では値を返しません。 3. ファイル属性(&H1)、ファイルRWモード(&H80000000)などの指定がございますが、これらのアドレスは何ですか? 何かのレジスター情報ですか? 宜しくお願い致します。

noname#187796
noname#187796

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Q1 VB 6.0 のコードの書き方が悪い。(というか禁止されてなかったけれど) 既定のプロパティを省略して作ってあるため、アップグレード ウィザードがそれを明示的なプロパティ名に変換できなかったってこと。 たとえば Textbox の既定のプロパティ Text プロパティを省略して MsgBox Form1.Textbox1 と書いても許されていたが MsgBox Form1.Textbox1.Text って書いてないので変換できないとか。 特に遅延バインディングしてるオブジェクトの既定のプロパティを省略してる場合は最悪。 たとえば VB 6.0 のアプリから Excel を CreateObject してて MsgBox hogeSheet.Cells(i, j) とか。 MsgBox hogeSheet.Cells(i, j).Value って書いてないとアウトかと。 http://msdn.microsoft.com/ja-jp/library/2yxx3hed(VS.90).aspx Q2 その関数の作りが悪いってこと。 場合によっては値を返さないケースがあるんじゃない? という警告。 値を返さないってことは、呼び出し元に Null が返されることがあり、意図しない戻り値でエラーになるかもしれないってこと。 http://msdn.microsoft.com/ja-jp/library/87x5f80y(v=vs.80).aspx Q3 どこの場面での話なのか分かりません。 質問の流れで言うとコンパイラが吐き出した警告ですか? 内容としてはファイルに対する操作での定数なんじゃないですかね。 質問するまでもなく検索ですぐに出てきますけどね。 VB 6.0 のコードをアップグレードする意味って知ってますか? .NET に変換して再度コンパイルして配布して、昔から使ってる業務アプリをそのまま最新 OS で継続利用できますよ。って意味じゃないです。 ただ単純に、最新の Visual Studio で開くことができるようになるから、.NET 対応でゼロから書き直すための参考にしてね。って意味です。 http://www.microsoft.com/japan/msdn/vstudio/vbrun/ http://msdn.microsoft.com/ja-jp/vbasic/cc707263.aspx

関連するQ&A

  • VB6→VB2005アップグレードの際のエラー

    VBを勉強中です。段階としては書籍やサイトの見本プログラムを いくつか真似て作っているところです。 質問ですがVB6で作られたプログラムのバージョンアップを 行っています。VS2005を使いアップグレードを行った際 UPGRADE_WARNINGが発生し、デバッグできない状態です。 エラーを潰してデバッグしたいのですが、どう直して良いのか 教えて下さい。 "配列型の次元数が異なるため、型 'Object の 2 次元配列' の値を 'Object の 1 次元配列' に変換できません。" 構文は以下の通りです。 Public Sub Sort(ByRef Ar() As Object, ByRef rs As Integer, ByRef cs As Integer, ByRef Re As Integer, ByRef ce As Integer, ByRef keyc As Integer) Dim i As Integer Dim j As Integer Dim k As Integer Dim aa As Object For i = rs To Re - 1 For j = i + 1 To Re 'UPGRADE_WARNING: オブジェクト Ar(j, keyc) の既定プロパティを解決できませんでした。 'UPGRADE_WARNING: オブジェクト Ar(i, keyc) の既定プロパティを解決できませんでした。 If Ar(i, keyc) > Ar(j, keyc) Then For k = cs To ce 'UPGRADE_WARNING: オブジェクト Ar(i, k) の既定プロパティを解決できませんでした。 'UPGRADE_WARNING: オブジェクト aa の既定プロパティを解決できませんでした。 aa = Ar(i, k) 'UPGRADE_WARNING: オブジェクト Ar(j, k) の既定プロパティを解決できませんでした。 'UPGRADE_WARNING: オブジェクト Ar(i, k) の既定プロパティを解決できませんでした。 Ar(i, k) = Ar(j, k) 'UPGRADE_WARNING: オブジェクト aa の既定プロパティを解決できませんでした。 'UPGRADE_WARNING: オブジェクト Ar(j, k) の既定プロパティを解決できませんでした。 Ar(j, k) = aa Next End If Next Next End Sub

  • VB.NETでのネットワーク参照

    VB.NETを使用してファイルのコピーをしようと思っています。 そのソースはVB6で使用したソースをバージョンアップして使う予定です。 ファイルコピーをする際にSHFileOperationというAPIを使用していました。 .NETへ移行すると、実行時にエラーが帰ってきてしまいます。 VB6と.NETではAPIの宣言の仕方も異なるのでしょうか? バージョンアップ後に追加されたメッセージで、'UPGRADE_WARNING: 構造体 SHFILEOPSTRUCT に、この Declare ステートメントの引数としてマーシャリング属性を渡す必要があります。 詳細については、'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1050"' をクリックしてください。 Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer このように書き換わっていました。リンク先を見ても解決の糸口が見えません。 どなたかご指導お願いします。

  • VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?

    VB6.0で、例:StrConv(Text, vbFromUnicode)とかで使用する、 「vbFromUnicode」(文字列を Unicode からシステムの既定のコードページに変換する) は、VB.NETでは使用できないようです。(相当する定数はない?) 「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、 どうすれば良いでしょうか?

  • iPhoneの開発をやっている超初心者です。

    iPhoneの開発をやっている超初心者です。 今までVBはやったことありますが、XCODEとイメージが異なり だいぶはまっています。 やりたいことは、コード上でオブジェクトの高さを変えたいだけです。 VBのような高さのプロパティ(hight)があるようですが (sizeタブのsize&positionのHですよね?) コードの記載の仕方がわからず困っています。 イベントが発生してから高さを変更したいため コード上の設定方法を知りたいです。 質問もわかりにくいと思いますが、ご教授お願い致します また、メソッドやプロパティ(VB的な表現で適切かわかりませんが) がわかるようなわかりやすいリファレンスの本やサイトも ありましたら教えてください。

  • VB6 コントロールのプロパティ一覧の出力方法

    VB6プログラムをVB.NET2008に変換する作業を行っています。 アップグレードした際にActiveXコントロールのプロパティが正常に引き継がれず、手作業で設定しています。しかし、VB6のデザイナをいちいち見ながらプロパティを設定するのは、非常に時間がかかり困っています。 VB6のコントロールのプロパティをすべてファイルなどに出力する方法はあるでしょうか?

  • IE スクリプトエラー

    インターネットエクスプローラー 11を開こうとするとスクリプトエラーメッセージが出てwebページがまったく開けません。 原因と考えられるのはパワーポイントをインストールしているときにユーザー登録をネット上でしようとしたときに出てきました。まったく動かなくなったので共生的に再起動して終了しました。 その後、何度やっても同じメッセージが出ます。 ライン 15 文字  2 エラー オブジェクトは゛Redirect To LocalBandプロパティまたはメソッドをサポートしえいません。 コード 0 URL: file///C/Program%20Files/Microsoft% 20Office/Office12/INTLBANDHTM このページのスクリプトを実行しますか? はい いいえ インターネットエクスプローラーをアンインストールして再起動したらもどりますか? 新規で買ったばかりのPCなので,以前のバージョンがダウングレードできるかどうかわかりません。

  • VB6のComboBox関連の書き方をVB.NETに変換

    VB6のコードだと思うのですが Combo1.ItemData(Combo1.NewIndex) = &H1 というものを VB.NET用に書き直すとどうなりますか? よろしくお願いいたします。

  • VB.Net リビルド 意味不明なメッセージが・・

    お世話になります。 VB.Net 駆け出しの者です プロジェクトをビルド、リビルトすると、いつからか以下のメッセージが出るようになっていました。 ****************************************************** vbc : warning BC40059: アセンブリ 'Microsoft.VisualBasic.Compatibility' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。 ****************************************************** 上記のメッセージが出ても、デバックもしくは発行で実行することは可能なのですが、何か気持ち悪い気がしております。エラーメッセージならクリックすればそのコードに移りますが、実際にどこがという指定がないので、その問題の箇所にたどり着けないのです。 上記のメッセージ、もしくはそのほかの情報からなんとかメッセージの箇所を突き止める方法はありますでしょうか?何かご存知の方がいらっしゃいましたら何卒ご教授いただければと存じます。 よろしくお願いいたします。

  • VisualBasic6からVB2005に移行に難儀しています。

    .NETが流行りだした時期にパソコンから遠ざかっていましたので、昔作成したVB6のアプリケーションをVB2005に書き直そうと大それたことを考えています。 VB6のソースをVB2005に自動的に書き直すVisualBasic アップグレードウィザードで変換しましたが、案の定、変換エラーだらけでした。 Public easy(5) As Boolean等はそのまま変換していますが、Typeでユーザー定義型を作成した配列は、 以下のようにVB6だけの知識では理解不能な書き換えや説明が付加されていました。 StructureはTypeの意味だとわかりますが、<VBFixedArray((10))>や 変数を初期化する必要があるなど、どのタイミングで初期化する (追加記述しなければいけない部分が何なのか)わかりません。 また、ステートメントやメソッド?が異なる(アップグレード)されたとか 詳細についてクリックしてくださいとありますが、クリックしても無反応でした。 Structure AruKata Dim num As Byte <VBFixedArray((10))> Dim pos() As Byte 'char 'UPGRADE_TODO: この構造体のインスタンスを初期化するには、"Initialize" を呼び出さなければなりません。 ... Public Sub Initialize() ReDim pos(10) End Sub End Structure 'UPGRADE_WARNING: 配列 AruKata で各要素を初期化する必要があります。 詳細については... Public difficult(8) As AruKata このようにVB6からVB2005に移行するにあたって、よく説明している書籍など(あるのかな?)ありましたら教えてください。

  • vb.net で文字コード変換

    VB.netで 文字列の文字コードを変換する方法を教えてください。

専門家に質問してみよう