- 締切済み
★変数の属性について(VB.net 2005以上)
とあるプログラムの解析を行っています。 1997年に作られた古いもので 何回もバージョンアップや改造がされているプログラムの一部です。 Public structure Localkanri <VBFixedstring(5),system.runtime.interopservices.marshalAs(system.runtime.interopservices.unmanagedtype.byvaltstr,Sizeconst:=5)> Public End_checkNo as string Public hh as string Public BB as integer End structure 上記の属性の指定されている内容の意味が知りたいのですが・・・・ VBFixedstring(5), は5バイトの固定長です。の宣言。後ろのカンマの意味は何でしょうか? カンマで区切られ MarshalASの指定にてCLRが管理しないunmanagedtype で指定されたbyvaltstr 型。 またカンマで区切られていて Sizeconst:=5 この意味はなんでしょうか? どなたかご教授ください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- himajinTest
- ベストアンサー率47% (8/17)
- oboroxx
- ベストアンサー率40% (317/792)
まず1997年だとVB.NETはまだないです。 VB 6.0か5.0ぐらいかと思います。 marshalとか出てくるのは、APIに変数を渡したい時によく出てきたのを覚えています。 unmanagedtypeってのもAPI絡みだと思われるところです。 Sizeconstってのは、バッファのサイズじゃないのかなと思います。 あてずっぽうですみません。
「5行目に問題があるよ」って読みました。 Byval ではなく、Byref で、C言語でいう ポインタ であれば構造体のメンバに登録できます。(と読みました) アセンブラで言えば hh[256] ・・・・ んと、hh*256 とか・・めんどくせー(すみません、前後が分からないのでここまで)
補足
>>まず1997年だとVB.NETはまだないです。 >>VB 6.0か5.0ぐらいかと思います。 その通りですが、勘違いしていませんか? 現状ではVb.net2010で動作しています。 その当時作られマイグレーションを経て今に至っています。 その際にマイグレーションの能率を上げるために新たなツールでVB6から vb2003 などに引き上げ、さらにマイグレーションを重ねて今に至る状態です。 それらのツールで自動生成され書き加えられているからこのようなことになっているのだと思います。 下記の参考サイトを私は読みました。それでも理解不能です。 そういった事情をご理解ください。 参考サイト Insider.NET > 連載:VB.NETプログラミング > 第28回 属性(前編) http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet28/vb6tonet28_01.html Insider.NET > 連載:VB.NETプログラミング > 第29回 属性(後編) http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet29/vb6tonet29_01.html