プロが教える店舗&オフィスのセキュリティ対策術

.NETで構造体をランダムファイルに書き込む処理を作成していますが、エラーになります。

構造体宣言は
Public Structure aaa
  Public aa as DateTime
  Public bb() as int16
  Public Sub Init()
    ReDim bb(100)
  End Sub
End Structure
Public wData As New aaa

ファイル登録時に
FileOpen(iFileNo, sFileName, OpenMode.Random, , , len(wData))
FileOut(iFileNo, wData, iRecord)

上記のFilePutを実行した時点で、
「レコード長が正しくありません」
とエラーが出ます。

オープンするファイルナンバーやレコードは、
初回登録時は共に、1で問題ありません。

VBのイメージで作成したのですが、どうもうまくいきません。
なにとぞ、お教えください。

A 回答 (2件)

構造体の構成に配列要素がある場合は、構造体の宣言で長さをあらかじめ宣言しなければなりません。



Public Structure aaa
  Public aa As DateTime
  <VBFixedArray(100)> Public bb() As Int16
  Public Sub Init()
    ReDim bb(100)
  End Sub
End Structure
    • good
    • 0
この回答へのお礼

ありがとうございます。

文字列の場合、VBFlexedをつけるのは頭にあったのですが、
配列の場合にも必要とは。
考えれば、可変長をサポートするためのものであるのだから、配列でも必要ですよね。

ありがとうございました。

お礼日時:2010/02/22 09:24

>ファイル登録時に


>FileOpen(iFileNo, sFileName, OpenMode.Random, , , len(wData))
>FileOut(iFileNo, wData, iRecord)

>上記のFilePutを実行した時点で、
FileOut になっていますが?
FileGet や wData への書き込みはどこでしているのですか?
VB6.0 でも書き込みは、Get 、Put していたはずですが。

この回答への補足

回答ありがとうございます。

FileOut=>FikePut
すみません。間違いです。

補足日時:2010/02/22 09:19
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています