投稿時間:2004/01/16(Fri) 14:04 投稿者名:ak
Eメール:
URL :
タイトル:Re: 教えて下さい。
こんにちは。
サンプルでは256文字とってきていますが 1文字=1バイトではなく半角は1バイト、全角は2バイトです。
256文字中に全角が混じると256バイト以上になる為上手く いかなかった訳です。
バイト数は LenB(StrConv("文字列",vbFromUnicode)) で取得することができます。
参考までにサンプルを記述しておきます。
Public Sub Test() Dim ii As Integer Dim iFl As Integer Dim lLen As Long Dim lCutLen As Long Dim sData As String Dim sVal As String Dim sTmp As String Dim sTmp2 As String
'テストデータ作成 For ii = 1 To 26 If ii Mod 2 = 1 Then sData = sData & String(255, Chr(64 + ii)) Else sData = sData & StrConv(String(123, Chr(64 + ii)), vbWide) End If Next ii sTmp = sData 'フリーファイル番号取得 iFl = FreeFile() 'ファイル出力処理 Open "C:\Test.txt" For Output As #iFl Do Until Len(sTmp) = 0
sTmp2 = StrConv(sTmp, vbFromUnicode) lLen = LenB(sTmp2) If lLen > 256 Then sVal = StrConv(LeftB$(sTmp2, 256), vbUnicode) lCutLen = Len(sVal) If Right$(sVal, 1) = vbNullChar Then sVal = Left$(sVal, Len(sVal) - 1) & " " lCutLen = lCutLen - 1 End If Else sVal = sTmp & Space$(256 - lLen) lCutLen = Len(sTmp) End If sTmp = Right$(sTmp, Len(sTmp) - lCutLen) Print #iFl, sVal Loop Close #iFl
End Sub
|