• ベストアンサー

バイナリーファイルの追記

VB初心者です。 3レコードからなる90バイトのバイナリーファイルの 最後のレコードだけを上書きしたいのですが、うまく いきません。どう書けば良いのでしょうか? 宜しくお願い致します。 '------------------------------------------------ Public Type REC_INFORMATION AA As Long BB As Single CC As Single DD As Single EE As Single FF As Single GG As Single HH As Integer End Type Public RecInfo As REC_INFORMATION '------------------------------------------------------------- Dim ByteCNT as Long RecInfo.AA = CLng("123") RecInfo.BB = CSng("123") RecInfo.CC = CSng("123") RecInfo.DD = CSng("123") RecInfo.EE = CSng("123") RecInfo.FF = CSng("123") RecInfo.GG = CSng("1") RecInfo.HH = CInt("1") Open "c:\TEST.bin" For Binary As #1 ByteCNT = LOF(1) Seek #1, (ByteCNT - 29) Put #1, , RecInfo Close #1

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

Randomファイルはレコード単位で扱うべきです。 Open File For Random As #1 Len = len(構造体) レコード数 = (LOF(1) \ len(構造体)) + 1 Get #1, レコード番号, 構造体 Put #1, レコード番号, 構造体 Close #1

retsu
質問者

お礼

todo36さん ありがとうございました。 大変勉強になりました。

その他の回答 (2)

  • kachimi
  • ベストアンサー率40% (12/30)
回答No.3

#1です。 GETしているのであればシーク位置が移動するため再度SEEKする必要があると思います。 しかし、#2さんの言われるようにRandomでレコード単位でされたほうがいいですよ!

retsu
質問者

お礼

kachimiさん ありがとうございました。 また見かけたら宜しくお願い致します。

  • kachimi
  • ベストアンサー率40% (12/30)
回答No.1

出来るような気がするのですが・・・ どのように出来ないのか、補足願います。

retsu
質問者

補足

失礼致しました。補足致します。 一度以前のファイルの最後のレコードのRecInfo.AAを取得し、 今回取得した123と同一であれば上書き,違うのもであればファイルの最後に新しく今回のレコードと追加するという仕様です。 そのコーディングの途中段階であり、"GET"している部分が抜けていました。この先がうまくできないので困っています。 宜しくご指導願います。 '-------------------------------- Open "c:\TEST.bin" For Binary As #1 ByteCNT = LOF(1) Seek #1, (ByteCNT - 29) Get #1, , RecInfo.AA '補足部分 Put #1, , RecInfo Close #1

関連するQ&A