投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/10/22 16:54:44
> TextBov1に入力された
誤:TextBov1
正:TextBox1
の誤記かと思いますが、コードの表記はどちらでもなく、「Text1」になっているという罠…。


> 整数型
バイト型: VB6 では Byte    / VB.NET では Byte
  整数型: VB6 では Integer / VB.NET では Short
長整数型: VB6 では Long    / VB.NET では Integer

> 実数型
単精度浮動小数点型: VB6 では Single  / VB.NET では Single
倍精度浮動小数点型: VB6 では Double  / VB.NET では Double

※他の型の場合は、適宜読み替えてください。


> この次に計算結果の出力として以下のようなVB6で作られたコードをVB2019に移植したいと思います.
タブ区切りに変更した方が、Excel 等でも編集しやすいので便利そうですが、元のファイルフォーマットに互換性を持たせるなら、FileOpen などといった互換命令を使った方が早いかな…。

元コードが Option Base 0 ではなく Option Base 1 である場合は、配列の添字を調整してください。

Dim fno As Integer = FreeFile()
Dim filePath As String = $"C:\Users\mycomp\Desktop\{TextBox1.Text}.txt"
FileOpen(fno, filePath, OpenMode.Output)
PrintLine(fno, BNX + 1, BNZ + 1, DX, DZ)
Dim X1 = Xmin
For XX As Integer = 1 To BNX + 1
    Dim Z1 = Zmin
    For I As Integer = 1 To BNZ + 1
        PrintLine(fno, X1, Z1, MUD1(I), MUD2(I))
        Z1 += DZ
    Next I
    X1 += DX
Next XX
FileClose(fno)
fno = 0


さて上記では、出力したファイルを読み取るための VB6 や VBA が残っている可能性を考慮し、ファイルフォーマットを維持するために FreeFile / FileOpen / PrintLine / FileClose という互換命令を使いました。

しかし本来であれば FileOpen 等は非推奨となっている命令であり、 .NET Compact Framework や .NET Core や .NET 5 / .NET 6 等の環境では使用できない代物となっています。将来性を考えると、このままの移植を続ける事はあまりお奨めしません。(移植作業が今回限りであり、今後はもう次世代環境への移植は行わないというのであれば、互換命令に頼るのもアリですが)

ファイルの読み取り側も .NET 側に移行する予定であれば、フォーマットを維持する必要もなくなるので、よりプログラムから扱いやすい形式のファイルフォーマット(タブ区切りテキスト、CSV、XML、JSON 等)に切り替えることも検討してみると良いかもしれません。