- 題名: 任意の行に上書き処理する方法
- 日時: 2008/04/24 17:59:41
- ID: 21926
- この記事の返信元:
- (なし)
- この記事への返信:
- [21928] Re[1]: 任意の行に上書き処理する方法2008/04/24 20:45:38
- ツリーを表示
お二方返信ありがとうございます。動くようにはなりました。
知識的な部分では解決はしていませんが、
仕様通りの動作はしているということで解決済みにさせていただきます。
数日前からVB6から.NETへ作業が移って右往左往しておりました。
エラーの原因は当初からデバックが出来ないため、Msgboxで変数を表示させていたときにByte変数の表示でエラーになっていたためでした。
調べた結果、「.NET Compact Framework 2.0 SP2」をインストールすることによってデバッグで出来るようにはなりました。
「BinaryReader / BinaryWriter」についてもう少し調べてみます。
体試行錯誤の段階でのソースを掲載してしまったので、解釈に苦しむ点があったことをお詫びします。
FileStreamの解放処理については他のサイトのサンプルでは記述がなかったので、
fs.Close()だけいれてました。
'// alngGyo:あらかじめ特定された行
'// astrBuff:書き込む内容(半角13桁)バーコードです。
Private Function Dat_Write(ByVal alngGyo As Long, ByVal astrBuff As String) As Boolean
Dim fs As System.IO.FileStream
Dim byteBuff(13) As Byte
Try
'// ファイルオープン
fs = New System.IO.FileStream("ファイル名", IO.FileMode.Open, IO.FileAccess.ReadWrite)
'// Seek処理(一行117桁で24桁目から上書きを行うため)
fs.Seek(alngGyo * 117 + 24, System.IO.SeekOrigin.Begin)
'// Byte変換
byteBuff = System.Text.Encoding.GetEncoding("shift-jis").GetBytes(astrBuff)
'// 書き込み処理
fs.Write(byteBuff, 0, byteBuff.Length)
fs.Close()
Return True
Catch ex As Exception
'MsgBox("ファイル書き込みエラー", MsgBoxStyle.OkOnly)
fs.Close()
Return False
End Try
End Function
分類:[.NET]
開発環境:WindowsXP[HOME] 開発環境:VB.NET Compact Framework 2.0 使用環境:PDA 最大250KBほどのファイルに対して、上書き処理を行いたいと思っています。 上書き処理を行う行は事前に別のindexファイルにて取得しております。 また、その行の内容は別の変数にて持っている状態です。 以下のように仕組みとしては一部を書き換える仕様ですが、それは難しそうなので、 削除後、追記という形でいきたいと思っています。 書き込む前の内容「XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」 書き込みたい内容「XXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYXXXXXXXXXXXXXXXXXXXXXXXX」 ~~~~~~ 現在下記のようなソースで処理を行おうとしています。 ですが、バイト変換でエラーが出ます。 エラー内容は「引数'Prompt'は型'String'に変換出来ません。」 「strByte = System.Text.Encoding.Unicode.GetBytes(aobjBuff)」と変更しても駄目でした。 同じエラーメッセージが表示されます。 まとはずれなことを書いているかもしれませんが、 それも含めてレス頂けたら幸いです。 '// alngGyo = 書き込む行 '// astrBuff = 書き込む内容 Private Function Dat_Write(ByVal alngGyo As Long, ByRef astrBuff As String) As Boolean Dim fs As System.IO.FileStream Dim strByte() As Byte '// ファイルオープン fs = New System.IO.FileStream("ファイル名", IO.FileMode.Open, IO.FileAccess.Write) '// Seek処理 fs.Seek(alngGyo, System.IO.SeekOrigin.Begin) '// バイト変換 strByte = System.Text.Encoding.GetEncoding("shift-jis").GetBytes(CType(astrBuff, Byte)) '// 書き込み fs.Write(strByte, 0, strByte.Length) end Function