お世話になります。
Public Type TestDat
aa As String * 11 '①
End Type
Public T_TestDat As TestDat
を、標準モジュールModule1に作成し
Private Sub Form_Load()
Open "TESTFILE" For Random As #1 Len = Len(T_TestDat)
T_TestDat.aa = "1234 東京都中央区" '②
Debug.Print T_TestDat.aa '③
Put #1, 1, T_TestDat
Get #1, 1, T_TestDat
Debug.Print T_TestDat.aa '④
Close #1
End Sub
を実行しますと、③と④は同一(イコール)なのですが、①を仮に16バイト
に変更しますと同一になりません。
③と④を同一にしたいのです。
①を奇数値(11,13等)にすると正常の様です。
②のデータ形式は半角・全角が混在し一定ではありません。
プログラムがおかしいのでしょうか。
お教えをお願いします。
「固定長文字列型を持つユーザー定義型」によるランダムアクセスは、
Unicode 処理の関係上、32bit 版ではそのような結果となります。
(16bit 版では結果が一致しますが、2バイト文字の分断などの問題が出ます)
> プログラムがおかしいのでしょうか。
固定長文字列型を使わず、Byte 型配列で読み書きし、文字列操作の際に
StrConv での変換などを組み合わせるなどの対応が必要です。
魔界の仮面弁士 様 ありがとうございました。
半角と全角が混在すると結構面倒なのですね。
素人考えでは同じMicrosoft製なのだから何とかならないのかと思いますが
漢字文化国では仕方ないのでしょうね。
この様にお教えいただきますと本当に助かります。
ありがとうございました。
ツイート | ![]() |