![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列の最大値を抽...
-
Msgboxの×が押されたとき
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列をtxtファイル...
-
VBの「As String * 128」とは?
-
アクセスで特定の数字以外(複...
-
grepで検索行以外の行を抽出す...
-
ORCLEでの小数の表示方法の変更...
-
Pro c/c++ でホスト変数の後に....
-
変数内に入った文字列の結合 UWSC
-
【excel】複数のセルを対象に特...
-
MS SQLServer のSQLで文字列の...
-
同一セル内に関数と文字列を同...
-
CStringの文字列検索&抜き出し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列の最大値を抽...
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列をtxtファイル...
-
Left関数とRight関数を合わせた...
-
【Excel VBA】複数ある特定の文...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
エクセル 数値データを桁をそ...
-
Msgboxの×が押されたとき
-
Excelはなんで先頭の0を消すん...
-
16進数を10進数に簡単に変換す...
-
Pro c/c++ でホスト変数の後に....
-
[C言語]fputsとfprintfの違い
おすすめ情報