注間違ったファイルの長さを書き込みます - 私は、問題を単純化するために一から書き直さこの質問を持っている...は、最初のレコードのみ
次の関数は、バイナリファイルにレコードを書き出します:
このコードをステップ実行するとき私は関数を呼び出すと、一つのレコードを書き出す場合は注意Len(EmpRec) = 6
こと
Public Type TestRecord
Available As Boolean
Inidcator As String
End Type
Private Sub WriteTestRecord(ByVal RecCount As Integer)
Dim Fn As Integer, CN As Integer
Dim filename As String
Dim EmpRec As TestRecord
Dim clk() As TestRecord
ReDim clk(1 To RecCount)
Debug.Print Len(EmpRec)
filename = "C:\TestRecFile.bin"
If Len(Dir(filename)) > 0 Then Kill filename
Fn = FreeFile
Open filename For Random As #Fn Len = Len(EmpRec)
For CN = 1 To RecCount
EmpRec = clk(CN)
Put #Fn, , EmpRec
Next CN
Close #Fn
End Sub
- それは唯一の4バイトの書き出し:
をCall WriteTestRecord(1)
「ファイルの長さが、私は関数を呼び出すと、複数のレコードを書き出す場合は4バイト
である - それは(RecCount*6) - 2
バイトを書き出す:
Call WriteTestRecord(10)
」ファイル長これは58バイト
です私のタイプでは長さの固定されていない文字列がありますが、最初のレコードの長さは他のレコードの長さとは違うのはなぜですか?
ファイルを調べて、最初のレコードと他のレコードの違いを確認しましたか?とにかく、あなたのInidcatorフィールドにコンテンツを入れ始めると、コードは実際には破損します。なぜなら、レコードは本当に異なる長さになるからです。 – tcarvin
ランダムなファイルは、VB6ではいつものようなものです。 Jetデータベースは、使用するのが安価であり、削除の索引付けと管理から並行処理の処理まで、多くの機能と柔軟性を提供します。もちろん、リレーショナル機能も便利です。 ADOとJet 4.0はWin2KからWindowsにネイティブですので、MDACとJetを使用してそれらを使用する必要はありません。 – Bob77
@BobRiemersma - VB6は従来の期間ですが、これは、古いバージョンのアプリケーションが終了したときにこのデータが書き出される現実の世界なので、読み込む方法が必要です。 –