• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB6のTYPE文をVB.NETのStructureに変えるとき)

VB6のTYPE文をVB.NETのStructureに変えるとき

このQ&Aのポイント
  • VB6のTYPE文をVB.NETのStructureに変換する際の注意点についてお教えください。
  • VB6のTYPE文をVB.NETのStructureに変換する際、*20,*50の表現方法を教えてください。
  • VB6のType文をVB.NETのStructureに変換する際に、String * 20とString * 50の終わりを示す方法を教えてください。

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

  • ベストアンサー
  • OMEGAT
  • ベストアンサー率70% (455/642)
回答No.1

私も詳しくは知らないのですが、以下などを参考にすると、 VBFixedStringAttribute属性を使用するといいようです。 [参考] http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_14/vbnet2_14_01.html

obone
質問者

お礼

ありがとうございました。 下記でなりました。 Structure kouzou1 Dim i As Integer Dim j As Integer <VBFixedString(20)> Dim a As String <VBFixedString(50)> Dim b As String End Structure

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB2005で、Structureの配列を返すプログラムを以下のように書きたい

    VB2005で、Structureの配列を返すプログラムを以下のように書きたいのですが、そもそもVB6しか使ったことが無いもので、以下のような素数の結果を返すこのプログラムの書き方はVB2005らしいでしょうか? Module Module1 Public Structure SosuuStatus Public num As Integer Public status As String End Structure Class Sosuu Function SosuuCheck(ByVal st As Integer, ByVal ed As Integer) As SosuuStatus() Dim i As Integer, j As Integer Dim sosuu(0 To ed - st) As SosuuStatus Dim cnt As Integer = 0 For i = st To ed sosuu(cnt).num = i sosuu(cnt).status = "" '初期化 If 1 = i Then sosuu(cnt).status = "素数ではない" ElseIf 0 = (i Mod 2) Then sosuu(cnt).status = "素数ではない" Else For j = 3 To Math.Sqrt(ed) If 0 = (i / j) Then sosuu(cnt).status = "素数ではない" End If Next j End If If sosuu(cnt).status = "" Then sosuu(cnt).status = "素数である" End If cnt = cnt + 1 Next i SosuuCheck = sosuu End Function End Class End Module

  • VB.NETのStructureの使い方を教えてください。

    Publicの宣言をしてStructureを使いたいのですが、 2重になっているStructureを使う正しい方法を教えて頂きたいです。 現在 Structure OYA Dim zzz As String Structure KO_1 Dim No1 As String Dim No2 As String Dim No3 As String End Structure End Structure Public TESTOYA As OYA Public TEST_1 As OYA.KO_1 Sub ABCDE() TEST_1.No1 = 1 TESTOYA.KO_1.No1 = 1 End Sub というようになっているのですが、 Sub ABCDE()内の TESTOYA.KO_1.No1 = 1 という使い方をしたいのですが、この状態だとエラーになってしまいます。 TEST_1.No1 = 1 とすれば大丈夫なのですが、これだと OYAを入力してメンバを出すことが出来ないので、2重にする意味がなくなってしまいます。 KO_1は実際はKO_50くらいまであって 実際は連番ではないので、OYA.と入力したら、KOのメンバが出て その後、No1などのメンバが出て欲しいです。 (入力しやすいように) この様な使い方があれば正しい記入方法をご教授願えないでしょうか。 それと、最初の変数zzzの宣言は要らないのですが、 これを省くとエラーになってしまいます。 この部分も正しい使い方ではないように思うのですが、 ご教授頂ければ幸いです。

  • VB6.0 →VB2005 のアップグレードでエラー表示

    VB6.0の標準モジュールでは Private Type typset a As String b As String c As Integer End Type Public make() As typset と記述してエラーもなく正常なのですが、VB2005にアップグレードしたときに、 Option Strict Off Option Explicit On Module Module1 Private Structure typset Dim a As String Dim b As String Dim c As Integer End Structure Public make() As typset←▼エラー▼            End Module 【エラー内容】 'make' は、module 'Module1' をとおして型 'typset' を namespace 'WindowsApplication1' で公開することはできません。 structure部をPublicなどにしてもエラーは消えますが、参照先に影響が出てしまいます。 根本的な解決方法が分かりません。 教えていただけないでしょうか?

  • VB.NETのメモリ領域について

    VB.NETのメモリ領域について 以下の(1)~(12)の変数のために、 スタック領域、静的領域、ヒープ領域のどこのメモリが使われるか教えてください。 Class Sample   Dim a As Integer '(1)   Dim b As String = "BBB" '(2)   Shared c As Integer '(3)   Shared d As String = "DDD" '(4)   Sub X()     Dim f As Integer '(5)     Dim g As String = "GGG" '(6)     Static h As Integer '(7)     Static i As String = "III" '(8)   End Sub   Shared Sub Y()     Dim k As Integer '(9)     Dim l As String = "LLL" '(10)     Static m As Integer '(11)     Static n As String = "NNN" '(12)   End Sub End Class それぞれこんな認識で合ってますか? スタック領域 (1)(5)(9) スタック領域にポインタ+ヒープ領域に実体 (2)(6)(10) 静的領域 (3)(7)(11) 静的領域にポインタ+ヒープ領域に実体 (4)(8)(12)

  • VB 2008: Do Whie...Loop文について

    Function FileGetChar(ByVal f As String, ByVal p As Integer) As String   Dim i As Integer = 1   Dim j As Integer = 0   Dim l As Integer   Dim n As Integer = FreeFile()   Dim c As Char   If File.Exists(f) Then     FileOpen(n, f, OpenMode.Random, OpenAccess.Read, , 1)     l = FileLen(f)     Do While (i + j <= l)       FileGet(n, c, i + j)       j = j - (Math.Abs(Asc(c)) > 255)       i = i + 1       If i > p Then         Exit Do       Else         c = ""       End If     Loop     FileClose(n)   End If   Return c End Function [イミディエイトウインドウ] ? FileGetChar("D:\Temp\Test.txt",1) "1" ? FileGetChar("D:\Temp\Test.txt",2) "2" と、一応は動作しています。 l------->ファイル長 i+j----->読み込みのカレントポジション p------->読み込み指示ポジション 今、悩んでいるのはDo...Loop文中のIf Else End If の追放。 何か妙手があれば教えて頂きたい。

  • 構造体配列

    こんにちわ。VB.NET初心者です。伝授お願いします。 VB6では Type Tpn_Index IdxSu As Integer idx(MAXTPN-1) As Integer End Type と定義できますが、VB.netでは構造体の中の配列部分が定義できません。 どのように書けばよろしいでしょうか? Public Structure Tpn_Index Dim IdxSu As Integer Dim idx() As Integer End Structure 上記の Dim idx() As Integer の部分です 宜しくお願いします

  • VB2005の構造体で配列を含む構造体へアクセスするプロパティの記述方法

    VB2005の構造体で、以下のように Dantaiという配列を含む構造体があり、 プロパティを記述する方法で困っています。 Structure Person Dim namae As String Dim toshi As Integer end Structure Structure Dantai Dim m_DantaiMei As String Dim m_Hito() As Person Public Sub New(mei As String) m_DantaiMe = mei Redim m_Hito(100) End Sub '団体名 Public Property Dantai_Mei() As String Get Return m_DantaiMei End Get Set(ByVal value As String) m_DantaiMei = value End Set End Property '人 Public Property ???  '???????????? どのようにプロパティを設定したらよいのでしょうか? '???? '???? 配列で、しかも構造体です。 '???? '???? End Property End Structure Dim dantai As New Dantai("A") MessageBox(dantai.Dantai_Mei) MessageBox(人100人を表示させたい) '?????????????????????????? あと、構造体のDimはデフォルトで、PublicでしょうかPrivateでしょうか? VB2005の構造体について、VB6との違い、クラスとの違いなど詳しく書かれている サイトなどご存じの方教えて下さい。

  • VB.NETで、配列をテーブルに変換する。

    VB.NETで、一次元配列string()にあるデータを、DataTableに変換 したいのですが、「型'String'の値を'System,Data,DataTable'に変換できません。」 と、エラーが発生してしまいます。 s1に、配列データが入っています。 Dim dt As DataTable Dim cnt As Integer Dim i As Integer dt = New DataTable count = s1.Length For i = 0 To cnt - 1 dt = CType(s1(i), DataTable) Next 解決方法が見つからず、行き詰っております。 宜しくお願い致します。

  • vb.netでCreateEventの引数

    vb.netでCreateEventの引数 CreateEventを実行後、OpenEventをすると失敗してしまいます。 CreateEventの第一引数に問題があるような気がするのですが、vb.Netでのサンプルが少なく悩んでいます。 CreateEventの第一引数のSECURITY_ATTRIBUTESにはなにを指定してあげればよいでしょうか。 Structure SECURITY_ATTRIBUTES nLength As Integer lpSecurityDescriptor As Integer bInheritHandle As Integer End Structure lpSecurityDescriptor ってなにものでしょうか。

  • VB6→VS2005アップグレード後

    いつもお世話になっております。 VBを勉強中です。 VB6→2005にアップグレード後、下記のエラーが発生しました。 "オブジェクト参照がオブジェクト インスタンスに設定されていません。" 以前もこちらでアドバイスをいただき、 デザインの中でADDされているかどうかを確認し、解決に結びついたので 今回も同様かと思い、色々と行ったのですが解決しません。 frmapli_S3のデザイナ内に下記が存在しましたが 原因はここでしょうか? CType(Me.Frame1, System.ComponentModel.ISupportInitialize).EndInit() 以下はVB6での正常稼動時のソースです。 Public Sub ShowPermValue() Dim Textbox As Textbox Dim i As Long: Dim j As Long: Dim k As Long For i = 0 To 19 For j = 1 To 8 k = i * 10 + j Set Textbox = frmapli_S3.Controls("text" & k) Textbox.Text = PermValue(k) Next Next End Sub Public Sub SetPermValue() Dim Textbox As Textbox Dim i As Long: Dim j As Long: Dim k As Long For i = 0 To 19 For j = 1 To 8 k = i * 10 + j Set Textbox = frmapli_S3.Controls("text" & k) PermValue(k) = Textbox.Text Next Next 下記はVB2005アップグレード時のソースです。 Public Sub ShowPermValue() Dim Textbox As TextBox Dim i, j, k As Integer For i = 0 To 19 For j = 1 To 8 k = i * 10 + j Textbox = CType(frmapli_S3.Controls("text" & k), TextBox) TextBox.Text = PermValue(k) Next Next End Sub Public Sub SetPermValue() Dim Textbox As TextBox Dim i, j, k As Integer For i = 0 To 19 For j = 1 To 8 k = i * 10 + j Textbox = CType(frmapli_S3.Controls("text" & k), TextBox) PermValue(k) = Textbox.Text   ←ここでエラー Next Next End Sub

このQ&Aのポイント
  • ThinkPad L560でWindows10 proのリカバリーを試みていますが失敗してしまいます。USBからの起動メニューでリカバリーを実行すると、『Product Recoveryはシステムを復元中です…』の途中で必ず『リカバリーは失敗しました』となります。
  • Lenovoホームページから32GBのリカバリーUSBを作成し、ThinkPad L560をF12キーの起動メニューから起動し、リカバリーを開始しますが、途中で必ず失敗してしまいます。
  • メモリ増設やSSD換装は行っていないため、原因は他にあるのでしょうか?リカバリーに失敗する問題の解決方法を教えてください。
回答を見る

専門家に質問してみよう