dポイントプレゼントキャンペーン実施中!

.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も見ています