アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

出来るような気がするのですが・・・


どのように出来ないのか、補足願います。

この回答への補足

失礼致しました。補足致します。

一度以前のファイルの最後のレコードの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

補足日時:2004/11/17 11:16
    • good
    • 0

Randomファイルはレコード単位で扱うべきです。



Open File For Random As #1 Len = len(構造体)
レコード数 = (LOF(1) \ len(構造体)) + 1
Get #1, レコード番号, 構造体
Put #1, レコード番号, 構造体
Close #1
    • good
    • 0
この回答へのお礼

todo36さん

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

お礼日時:2004/11/17 15:24

#1です。


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

kachimiさん

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

お礼日時:2004/11/17 15:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!