
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でレコード番号を指定して書込、読込などをするにはどのようにすればよいでしょうか。
No.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ユーザー向けヘルプ
言語の変更点
プログラミング要素のサポートに関する変更の概要
辺りを熟読してみましょう
この回答への補足
ありがとうございます。よく読んでみたつもりなのですが、馬鹿なものでいろいろと理解に苦しんでいます。
取り合えづ教えていただいたコードも参考しながら少し考えてみたいと思います。
試してみた結果、書込みはできたのですが、読込の時にFileGet( ff, objTest, レコード番号)のところで「objTestの値をstringに変換できません。」というエラーが発生しました。
ヘルプを確認したところ、エラーを解消するには・・・
●式のデータ型が変換先のデータ型に変換できるものであることを確認します。(私の考え->全部stringで宣言した変数しか使っていないのになぜ?)
●<type2> が配列の場合は、New 句で型名の後にかっこと中かっこの両方を指定します。次のコードは、配列の正しい初期化方法を示します。 (私の考え->配列ではないし、これとは違う・・・)
と書いてあったのですが、この意味すら理解できない状況です。
No.1
- 回答日時:
具体的にどこが分からないのでしょう?
> VB6での知識が通用せず
> ヘルプを読んでみたものの「2 バイトの記述子」やらなんやらとわけのわからないことばかりで、行き詰まりました。
「2 バイトの記述子」に関する記述は、VB6でもありましたよ・・・
つまり、「VB6の知識」ですけど・・・
例えば、以下は「VB6のヘルプ」の「Get ステートメント」からの抜粋です。
----------------------------------------------------------
ユーザー定義型の要素でない可変長文字列を使う場合、
Get ステートメントはデータ長を示す 2 バイトの記述子を認識せずに
文字列変数の持つ値の文字数と同じバイト数を読み込みます。
----------------------------------------------------------
この回答への補足
え?・・・ VB6の時にはまったく意識していませんでした・・・
VB6では、ほとんど昔のBASICの知識と、本やネットでのサンプルコードだけでなんとかしていたので、まったく初耳でした・・お粗末でごめんなさい。もう少し考えて見ます。
dsuekichiさん、redfox63さん、お騒がせいたしましたがいろいろ試した結果うまくできました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
変数内に入った文字列の結合 UWSC
-
“丸(〇/○/◯)”に似た文字…
-
OnTime 使用時のプロシージャへ...
-
漢数字に変換するプログラム
-
コンソメの瓶
-
countif関数について質問
-
エクセルで文字列をtxtファイル...
-
php言語の脆弱性について
-
【ChatGTPのオープンソースソフ...
-
1 OR 1=1 は どんな論理(約束事...
-
UWSCに詳しい方簡単なテキスト...
-
VBA2005 16進を2桁で表示したい。
-
delphiにて 文字列の最後の改...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
textboxユーザーコントロールの...
-
VBAによるBinaryの置換後に先頭...
-
C言語 名前順にソートする方法
-
LEFT関数で文字数を指定しない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
Excelで3E8を3.00E+8にしない方...
-
Left関数とRight関数を合わせた...
-
アクセスで特定の数字以外(複...
-
Msgboxの×が押されたとき
-
MS SQLServer のSQLで文字列の...
-
Excelで指数表現しないようにす...
-
ORCLEでの小数の表示方法の変更...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
SQL の Update文(?) と ...
-
VBの「As String * 128」とは?
-
aaa.bbb.ccc という、「ドット...
-
同一セル内に関数と文字列を同...
おすすめ情報