2017年10月 / 09月≪ 12345678910111213141516171819202122232425262728293031≫11月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2008.07.23 (Wed)

VB6のプロジェクトをVB.NETにアップグレードしたい

もう時代はVB6よりVB.NETなんですよ多分。

仕事でVB6のプロジェクトを動かしたいけど、VB.NETしか入って無かったので、
VB.NETで動くようにプロジェクトを変換したかったんですよ。

まずVB.NET付属の変換機能で大体変換してもらう。

ファイル(F)>開く(O)>変換(C)

またはファイル(F)>開く(O)>プロジェクト/ソリューション
で.vbpファイルを選択。
b000022.jpg
b000023.jpg
アップグレードウィザードで変換
b000024.jpg
変換元.vbpファイルを指定
b000025.jpg
後は適当に保存先を指定するなりして「次へ」で進めると変換が開始される。
b000027.jpg
できあがり。
b000028.jpg
とりあえずビルドしてみると
b000029.jpg
エラーがでまくるので、今度はこのエラーつぶしの作業へ。
b000030.jpg

長いので続きは↓へ

【More・・・】

まず上から
エラー

'As Any' は、'Declare' ステートメントではサポートされていません。

エラー元

'UPGRADE_ISSUE: パラメータ 'As Any' の宣言はサポートされません。 詳細については、'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="FAE78A8D-8978-4FD4-8208-5B7324A8F795"' をクリックしてください。
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer

このByVal lpKeyName As Anyの部分がエラー。
KeyNameなんでAny->Stringに変えればOKかな。
あと、lpReturnedString As Stringの部分もエラーは出てないけどできたらSystem.Text.StringBuilderに変えたほうがいい。
けどそうするとコードも修正しなくちゃいけなくなるのでとりあえずほっとくなり変えるなりGetPrivateProfileStringをオーバーロードするなりする。

次。
エラー

'App' は宣言されていません。

エラー元

'UPGRADE_ISSUE: App プロパティ App.PrevInstance はアップグレードされませんでした。 詳細については、'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="076C26E5-B7A9-4E77-B69C-B4448DF39E58"' をクリックしてください。
If App.PrevInstance Then
'終了
End
End If

多重起動防止用のコードなので、ググって.net用の多重起動防止用コードに置き換える。

'UPGRADE_ISSUE: App プロパティ App.PrevInstance はアップグレードされませんでした。 詳細については、'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="076C26E5-B7A9-4E77-B69C-B4448DF39E58"' をクリックしてください。
'If App.PrevInstance Then
' '終了
' End
'End If
If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) <> 0 Then
Application.Exit()
End If


エラー

'LeftB' は宣言されていません。

VB.NETにはLeftBが無いようなので、
文字列の一部をバイト単位で取り出す (LeftB, MidB, RightB)
ここのコードを適当な場所に貼り付けて使用するようにすればOK。
メソッドのみを貼り付けて使用する場合は「Shared」を抜いて。

エラー

'vbFromUnicode' は宣言されていません。
'vbUnicode' は宣言されていません。

エラー元

str = StrConv(LeftB(StrConv(resStr, vbFromUnicode), ibyte), vbUnicode)

VB.NETではStrConvは使えるけどvbFromUnicode、vbUnicodeは定義されていない。
上のコードではややこしいけど、つまりは半角1バイト、全角2バイトの文字コードでLeftBをしたいってこと。
VB.NETではもう消しちゃって大丈夫だと思う。
↓こんな感じで

str = LeftB(resStr, ibyte)

純粋に文字コードを変換したい場合は
System.Text.Encodingで。


エラーを取り終えて、いざ実行するとすぐ終了してしまう場合。
VB.NETでは、Main()が終わるとアプリケーション自体が終わってしまう。
Mainの中にfrmMain.Show()こんなのがあった場合は
frmMain.ShowDialog()に変えればフォームが終わるまでMainが待ってくれる。

 |  11:14  |  VB.NET  |  トラックバック(0)  |  コメント(1)  |  Top↑

Comment

2008年にもなって、、、
あらら |  2009.09.30(水) 23:05 |  URL |  【コメント編集】

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。