色彩を教える人になるための講座「色彩講師養成講座」の魅力とは>>

VBの「As String * 128」とは?

Visual Basic 2010 Expressでコンソールアプリケーションを作成しています。

OSのヴァージョンを取得する機能を作成したかったので、

http://hanatyan.sakura.ne.jp/vbhlp/Version.htm

を参考にして、OSVERSIONINFOの構造体を定義しました。

しかし
szCSDVersion As String * 128

「* 128」
の部分で、ステートメントの終わりを指定してくださいとエラーが出ます。

「* 128」とは、いったいどういう意味ですか?

また、エラーを無くす方法はありますか?

いろいろ検索しましたが、調べ方が悪いのか、分かりませんでした。

よろしくお願いします。

gooドクター

A 回答 (4件)

参考にされたサイトはVB6.0用のソースですね。


VB6.0とVB2010(=VB.NET)は色々な部分が変わってますので、VB.NET用のサンプルを見た方が良いと思います。

http://dobon.net/vb/dotnet/system/osversion.html

ちなみに一応、質問に答えると…

> 「* 128」とは、いったいどういう意味ですか?

VB6.0(VB2010の5世代前のバージョン?)で固定長文字列を表す定義です。
* 128と記述すると128文字以上の文字列を入れても自動的に128文字でカットされます。

> また、エラーを無くす方法はありますか?

VB2010(=VB.NET)では以下のように記述します。
<VBFixedStringAttribute(128)> Private szCSDVersion As String
    • good
    • 4
この回答へのお礼

ご回答ありがとうございます。

「* 128」の意味などが分かりました。
勉強になりました。

お礼日時:2010/10/29 13:47

極く旧い時代のBasic(VB Basicよりずっと前の当初の、特にビジネスで使うBasic)時代から、文字列の長さを許容長以下で定義するとき、ありました。

文字列長を指定するものです。構造体と言う考えは無いが、私の使っていたものは、ビジネス向けだったのでたしか
Recdef
simei*16
jyusho*60
keisuu
Recend
などとフィールド長を定義して、レコードを読むと、このインプトエリアに読み込んでくれました。
具体的な文字列を代入すると、その長さを超えない文字列が左詰めでセットされたように記憶する。
ーー
VB6->VB.NETでは
http://msdn.microsoft.com/ja-jp/library/f47b0zy4 …
http://msdn.microsoft.com/ja-jp/vbasic/cc707243. …
のユーザー定義型記憶領域の固定長文字列。
VB6からVB.NET移行の際の、大きなテーマ(修正項目)の1つのようです。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

詳しいご説明で、とても勉強になりました。

お礼日時:2010/10/29 13:50

Win32APIを利用しなくてもNET Frameworkにあるみたいです。



http://dobon.net/vb/dotnet/system/osversion.html

> System.Environment.OSVersion

Win32APIを利用して取得する方法も同じページに記されているので、
下手にVB6用のページを参照するより、こちらを見たほうが分かり易いと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Win32APIは難しそうなので、変える方向で検討いたします。

お礼日時:2010/10/29 13:49

お調べのページは、コメントに記述してあるとおり「VB6.0」のソースです。


~As String * 128
というのは、VB6.0の時代にあった「固定長(この場合は128バイト)の文字列型」です。
VB2010では固定長はサポートされていません。そもそも、VB2010でAPIを使う事自体がナンセンスです。
OperatingSystemオブジェクトで調べるべきでしょう。

http://dobon.net/vb/dotnet/system/osversion.html
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

Vb6.0の機能がVb2010でも使えるわけではないのですね。
見当違いなところを探していたようです。

お礼日時:2010/10/29 13:45

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング