• ベストアンサー

VB6のLSETをVB2005で実現するには?

VB6の下記ソースをVB2005のアップグレードツールで変換したらエラーになってしまいました。VB2005ではサポートされてないみたいで、どのように変更したらよいか途方にくれております。 どなたかご教授下さい。よろしくお願い致します。 --ソース抜粋-- A:構造体変数 B:構造体変数 VB6: LSET A = B VB2005: ?????

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

単一命令での置き換えは出来ないようです 双方の構造体のメンバーを個別に代入するといった具合に変更しないといけないようです Structure typeA  Dim num as Integer  Dim name as String End Type Structure typeB  Dim num as Long  Dim name as String End Type といった具合なら Dim a as typeA, b as typeB a.num = 3 a.name = "hoge" b.num = CLng( a.num ) b.name = a.name といった具合でしょう

zin_zin1
質問者

お礼

ありがとうございました。 やはり地道に設定するしかないみたいですね。 かなりの数があるので何か抜け道でもないかと 模索しておりましたが。。

関連するQ&A

  • VB6からVB2010への変換

    VB6の資源をVB2010に移行することになりました。 とりあえずVS2010Proの評価版をダウンロードして準備をしている段階です。 色々な資料を参考にするとVB6からVB2010への変換ツール(VBUPGRADE.EXE)があることがわかりました(完全な変換はもちろん無理だとは思いますが)。 そして、VB6のプロジェクトを開くと自動的にアップグレードウィザードが起動され、変換されるとありましたが、起動しませんし、普通に開くを選択しても拡張子VBPは選択できないか、テキストとしてしか開くことが出来ません。 何か設定が必要なのでしょうか? よろしくお願いいたします。

  • VB6からVB2010への変換について

    今、WindowsXP上のVB6プログラムを、Windows7上のVB2010プログラムへ変換作業をしています 手順は 1.VB2008Expressのアップグレードウィザードを使って、一度VB2008版を造りました   その時に、フォームサイズを変えるステートメントが次のように変わりました Imports VB = Microsoft.VisualBasic ・ Me.Width = 16000 → VB6.TwipsToPixelsX(16000) Me.Height = 12250 → VB6.TwipsToPixelsY(12250) 2.次にWindows7上のVB2010で上記プログラムを読み込むと.       VB6.TwipsToPixelsX(16000) のところに波型のアンダーラインが引かれ     これは「旧形式です」のメッセージが出ました  そこで、Microsoftのフォームページ(http://go.microsoft.com/fwlin/?linkid=160862')を参考に 下記のように修正しました Imports Microsoft.VisualBasic.Compatibility.VB6 ・ Me.Width = Support.TwipsToPixelsX(16000) Me.Height = Support.TwipsToPixelsY(12250)       と修正しましたが波型アンダーラインは消えませんでした そこで質問ですが  この波型アンダーラインは無視して良いのか、  それともまだ使い方が間違っているのか分かりません  そこのところご教授願えれば幸いです   

  • 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に移行するにあたって、よく説明している書籍など(あるのかな?)ありましたら教えてください。

  • VB6の開発支援ツール?

    VB6を使っています。開発環境はVBを使えばよいのですが、他のベンダー製品でVBソースをリフレクタor解析するツールはありますか? VBのソースから仕様書を作成したり、JavaやCやASPに変換するようなツールが知りたいです。

  • C++のコードをVB6に変換

    C++で書かれたソースコードをVB6に変換する事は可能でしょうか? また、変換ツールみたいのがありましたら 教えて頂きます様お願い致します。

  • VB6で、変数の値を別ファイルの変数に引き継ぎたい

    AというVBのソースファイル(.frm)内に関数の呼び元があり、 その関数がBというファイルにあります。 その関数内で値が設定される変数を、Bファイルのグローバル変数とし、 また、Aファイルのグローバル変数として同じ名前の変数を宣言したとしても、 やはりB内で関数の実行が終了し、Aに戻った際には、変数は別のものとみなされている ようで、B内関数で設定された値がAファイル内での同名変数に引き継がれません。 どのようにすればよろしいでしょうか? ご存知の方、お願いします。

  • VB2005でバイト配列をコピーするには

    どなたかご教授下さい。 VB6で作成したプログラムをVB2005にコンバートしました。構造体からなる配列変数を一つの配列変数にコピー したいのですが、構造体の最初のメンバーだけ値が同じで以降の値は正しくセットされていませんでした。 どのように記述したらよいのでしょうか。またCopymMemory以外で良い方法があればご教授下さい。 よろしくお願い致します。 ===概略=== Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As Byte, ByRef Source As Byte, ByVal Length As Short) 構造体定義 (コピー元) <StructLayout(LayoutKind.Sequential)>Structure ST_MOTO <MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Dim byte_strTranCd() As Byte <MarshalAs(UnmanagedType.ByValArray, SizeConst:=5)> Dim byte_strTanSeq() As Byte <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Dim byte_strTxtNo() As Byte <MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Dim byte_strTxtSeq() As Byte End Structure Dim A As ST_MOTO (コピー先) <StructLayout(LayoutKind.Sequential)> Structure ST_SAKI Dim lngrecLen As Integer 'データのLength <MarshalAs(UnmanagedType.ByValArray, SizeConst:=100)> Dim bytrecData() As Byte 'データ End Structure Dim B As ST_SAKI Call CopyMemory(B.bytrecData(0), A.byte_strTranCd(0), 14) 出力結果 '最初の構造体のメンバーの値は正しく設定されている B.bytrecData(0) =80    A.byte_strTranCd(0) =80 B.bytrecData(1) =50    A.byte_strTranCd(1) =50 B.bytrecData(2) =57    A.byte_strTranCd(2) =57 B.bytrecData(3) =50    A.byte_strTranCd(3) =50 'これ以降は正しくない。(VB6だと正しく設定されている) B.bytrecData(4) =0     A.byte_strTanSeq(0) =80 B.bytrecData(5) =0     A.byte_strTanSeq(1) =87 B.bytrecData(6) =0     A.byte_strTanSeq(2) =48 B.bytrecData(7) =0     A.byte_strTanSeq(3) =48 B.bytrecData(8) =6     A.byte_strTanSeq(4) =55     ・              ・     ・              ・

  • VB6でマウスでポイントした変数の中身が見えなくなった

    VB6 で、ブレークを掛けたとき、そのスコープ内の変数をマウスで ポイントすると変数の中身がツールチップの形で見えます。 ですが、ある日突然この機能が働かなくなってしまいました。 なにか情報が御座いましたらご教授願います。 VB6 SP6 Windows2000 sp4

  • DLLで格納された値をVBに渡す方法

    <VC++で作成したDLLをVBで呼ぶ処理> VBから変数をDLLに渡して値を格納してVBで受け取りたいのですが、 文字列が格納されている先頭アドレスをVBに渡したい場合の 方法を具体的に教えてください。 構造体を使用する方法はできたのですが、使わない方法(引数が変数)を 教えてください。 よろしくお願いします。

  • CSVファイルのバッチまたはVBでの編集

    バッチおよびVBのドがつくほどの初心者です。 環境:Windows7 Pro 下記のような行が数百行ほど記載されているCSVファイル(xyz.csv)があります。 "(桁数不定の変数a)-(1桁の変数b)(1桁の変数c)","yyyymm" これをバッチまたはVBにて (1桁の変数b),(桁数不定の変数a),(1桁の変数c),yyyymm に自動的に変更したいと考えています。 例 "1234567890-12","201409" ↓ 1,1234567890,2,201409 「-」を「,」に変更したり「"」の削除、また桁数が不定でなければ指定の位置に「,」を入れることは出来そうなのですが 桁数が不定ということで、行き詰ってしまいました。 システム上 "(a)-(b)(c)","yyyymm"を "(a)-(b)(c)","(a)-(b)(c)","(a)-(b)(c)","yyyymm" に変更することは出来そうなので、先頭から検索して「-」の個数と位置で指定の文字列を消すという方法もあるのかなと思ったのですが こちらについてもやり方がまったくわからなくお手上げ状態になってしまいました。 (桁数固定なら、こちらで指定の位置だけ削除できればと思っていたのですが……) 上記処理を行えるバッチまたはVBで編集するコマンドをご教示いただければと思います。 ご回答お願いいたします。

専門家に質問してみよう