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

VB2005です。(以前はVB6で開発していました。)
文字列(VB6で 「test as string * 5」 などとしていたもの)を任意のレコードに保存、読込、変更などをしようとしています。

VB6ではうまくできたものが、VB2005になったとたん、まったくVB6での知識が通用せず困っています。ヘルプを読んでみたものの「2 バイトの記述子」やらなんやらとわけのわからないことばかりで、行き詰まりました。

VB6で
type test
test1 as string * 5
test2 as string * 5
test3 as string *5
end type

と定義していたものを、VB2005でレコード番号を指定して書込、読込などをするにはどのようにすればよいでしょうか。

A 回答 (2件)

VB2005では 固定文字列の宣言方法が変わりました


VBFixedString属性をつけて宣言しないと固定文字列にはなりません

Structure Test
<VBFixedString(5)> dim s1 as String
<VBFixedString(5)> dim s1 as String
<VBFixedString(5)> dim s1 as String
End Structure
といった具合に構造体を宣言します

読み取りイベントにおいて
dim objTest as new Test
dim ff as Integer = FreeFile()
FileOpen( ff, "ファイルパス", OpenMode.Ramdom, OpenAccess.Read)
FileGet( ff, objTest, レコード番号)
FileClose(ff)
といった具合で 読み込みできると思います

# 付属のMSDNの
VisualBasic
  Visual Basic 6.0ユーザー向けヘルプ
    言語の変更点
      プログラミング要素のサポートに関する変更の概要
辺りを熟読してみましょう

この回答への補足

ありがとうございます。よく読んでみたつもりなのですが、馬鹿なものでいろいろと理解に苦しんでいます。

取り合えづ教えていただいたコードも参考しながら少し考えてみたいと思います。

補足日時:2007/11/15 11:08
    • good
    • 0
この回答へのお礼

試してみた結果、書込みはできたのですが、読込の時にFileGet( ff, objTest, レコード番号)のところで「objTestの値をstringに変換できません。」というエラーが発生しました。

ヘルプを確認したところ、エラーを解消するには・・・
●式のデータ型が変換先のデータ型に変換できるものであることを確認します。(私の考え->全部stringで宣言した変数しか使っていないのになぜ?)
●<type2> が配列の場合は、New 句で型名の後にかっこと中かっこの両方を指定します。次のコードは、配列の正しい初期化方法を示します。 (私の考え->配列ではないし、これとは違う・・・)

と書いてあったのですが、この意味すら理解できない状況です。

お礼日時:2007/11/15 13:40

具体的にどこが分からないのでしょう?



> VB6での知識が通用せず
> ヘルプを読んでみたものの「2 バイトの記述子」やらなんやらとわけのわからないことばかりで、行き詰まりました。

「2 バイトの記述子」に関する記述は、VB6でもありましたよ・・・
つまり、「VB6の知識」ですけど・・・

例えば、以下は「VB6のヘルプ」の「Get ステートメント」からの抜粋です。
----------------------------------------------------------
ユーザー定義型の要素でない可変長文字列を使う場合、
Get ステートメントはデータ長を示す 2 バイトの記述子を認識せずに
文字列変数の持つ値の文字数と同じバイト数を読み込みます。
----------------------------------------------------------

この回答への補足

え?・・・ VB6の時にはまったく意識していませんでした・・・
VB6では、ほとんど昔のBASICの知識と、本やネットでのサンプルコードだけでなんとかしていたので、まったく初耳でした・・お粗末でごめんなさい。もう少し考えて見ます。

補足日時:2007/11/15 11:01
    • good
    • 0
この回答へのお礼

dsuekichiさん、redfox63さん、お騒がせいたしましたがいろいろ試した結果うまくできました。

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

お礼日時:2007/11/15 21:10

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