VB6時代の固定長変数

タグの編集
投稿者 さんじ  (社会人) 投稿日時 2023/3/22 13:26:47
VB6からVB.NETへマイグレーションする際に,

Dim A As String *4

などという文字数固定のプログラムがありますが、

VB.NETはどう記述すればよいでしょうか?
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/3/22 15:46:52
Microsoft.VisualBasic.Compatibility.VB6 名前空間に FixedLengthString クラスが用意されています。
https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.visualbasic.compatibility.vb6.fixedlengthstring?view=netframework-4.8.1
https://chaipa.hateblo.jp/entry/20070828/1188305793


目的が、VB6 の Get # / Put # ステートメントによる ランダム アクセス ファイルの
入出力であれば、構造体フィールドに VBFixedString 属性を付与しておくことで、
FileGet / FilePut によるファイル入出力時に、固定長文字列相当のやり取りが行われます。
https://atmarkit.itmedia.co.jp/fdotnet/vb6tonet2/vbnet2_03/vbnet2_03_02.html


ただし、VBFixedString 属性による指定は、標準の System.IO 名前空間のクラスを用いた
ファイル入出力では無視されます。VB6 互換機能に頼りたくない場合には、
VB6 側を「固定長文字列を使わない実装」に直してからマイグレーションするか、あるいは
対象がテキストファイルなら、全体を文字列あるいはバイナリとして読み取ってから
文字位置あるいはバイト位置を切り出して読み書きするためのコードを自作するといった
回避策がとられることもあります。