- ベストアンサー
命名規則 VB 構造体
VBの構造体の命名はどうすればいいですか? strXXX as string intYYY as integer ???ZZZ as 構造体 udtZZZ as 構造体 でいいのでしょうか? ユーザー定義型ということでいいのでしょうか?
- pokepotto
- お礼率78% (114/146)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。KenKen_SP です。 ご質問のように変数にプレフィックスを付ける表記をハンガリアン表記法 と呼び、MS がかつて推奨していたものです。特に Visual Basic 6.0 まで 広く使われていました。 これに従うならば、ご質問にある変数名で良いと思います。 しかし、現在は MS は推奨していません。それどころか、一転してハンガ リアン表記法はむしろ MSDN にある名前付けのガイドラインに違反した 表記法とされています。 詳しくは、MSDN ライブラリを参照して下さい。 これには賛否両論があり、どちらが良いのかは議論がなされている最中です が、今後 MS がハンガリアン表記法を推奨しないことを考えれば、いずれは 使われなくなく表記法ですね。 どちらが良いのか、その是非については述べません。ご自身が判断するべき ことだからです。何より大切なポイントは自分が見ても、他人がみても 「変数名はわかりやすく」 です。このような表記法の変化に振り回されて、このポイントがおろそかに なるようではどんな表記法も無意味です。その意味で #1 ご回答の > 1)見たら判る、(2)一貫している、ならばOKではと考えます。 は、的確でまさにその通りだと思います。 個人的な好みの話をすれば、私は通常変数にはプレフィックスを付け、 構造体のメンバには付けません。 Private Type STAFFINFO ID As Long Name As String Address As String Tel As String End Type Sub xxxx() Dim udtSI as STAFFINFO With udtSI .ID = 1 .Name = "名前" .Address = "住所" .Tel = "012-3456-7890" End With End Sub のような感じですが、プレフィックスを付けると With udtSI .lngID = 1 .strName = "名前" .strAddress = "住所" .strTel = "012-3456-7890" End With となって、通常変数なのか構造体のメンバなのか見難くなるからです。 余談ですが、構造体のことを VB では「ユーザー定義型」と表現してます。 私見でした。
その他の回答 (1)
マイクロソフトが推奨している命名規則に関する質問であれば、それで宜しいと思います。 が、私は、 Dim mudtMenu AS MENU_TYPE でなく Dim MyMenu As MENU としています。 Dim typMenu As MENU も、「ありかなー」と思います。 要は、(1)見たら判る、(2)一貫している、ならばOKではと考えます。 Private Type MENU TitleCaption As String * 24 ' トップメニュータイトル MenuCount As Integer ' メニュー総数 SubItems(5) As Integer ' 各メニューの項目数 MenuNames(5) As String * 16 ' 主メニュー名 ' ----+----1----+----2---- LargeIcons(5, 19) As String * 24 ' Icons\Large\xxxxxxxx.ico SmallIcons(5, 19) As String * 24 ' Icons\Large\xxxxxxxx.ico IconTexts(5, 19) As String * 12 ' アイコンテキスト AppTypes(5, 19) As String * 1 ' アプリケーションの種類 AppNames(5, 19) As String * 20 ' アプリケーション名 AppDescs(5, 19) As String * 32 ' アプリケーションの説明 ViewMode As Integer ' 表示モード End Type Dim MyMenu As MENU
お礼
PCが動かなくなり、IDが分からなくなってしまって お礼が遅れてしまいました。 ご回答どうもありがとうございました。 参考にさせていただきます(^^)
関連するQ&A
- 構造体配列
こんにちわ。VB.NET初心者です。伝授お願いします。 VB6では Type Tpn_Index IdxSu As Integer idx(MAXTPN-1) As Integer End Type と定義できますが、VB.netでは構造体の中の配列部分が定義できません。 どのように書けばよろしいでしょうか? Public Structure Tpn_Index Dim IdxSu As Integer Dim idx() As Integer End Structure 上記の Dim idx() As Integer の部分です 宜しくお願いします
- 締切済み
- Visual Basic
- バイト配列の構造体変換について
TCPの通信アプリケーションをて作成しています。 Recvbuff(1024) as byte と定義した変数に受信したデータを格納し以下のような構造体に格納 したいのです。 構造体A id as integer Usercode as string Username as string Filename as string このとき、共用体のような使いかたはVBではできないようなので すが、このような場合 整数なら「Recvbuff(1) * 256 + Recvbuff(0)」のように計算する。 文字列なら必要な文字のみ切り取ってGetStringで変換する。 といった方法しかないのでしょうか。 環境は VS2008 VB.NET です。
- ベストアンサー
- Visual Basic
- VB2005の構造体で配列を含む構造体へアクセスするプロパティの記述方法
VB2005の構造体で、以下のように Dantaiという配列を含む構造体があり、 プロパティを記述する方法で困っています。 Structure Person Dim namae As String Dim toshi As Integer end Structure Structure Dantai Dim m_DantaiMei As String Dim m_Hito() As Person Public Sub New(mei As String) m_DantaiMe = mei Redim m_Hito(100) End Sub '団体名 Public Property Dantai_Mei() As String Get Return m_DantaiMei End Get Set(ByVal value As String) m_DantaiMei = value End Set End Property '人 Public Property ??? '???????????? どのようにプロパティを設定したらよいのでしょうか? '???? '???? 配列で、しかも構造体です。 '???? '???? End Property End Structure Dim dantai As New Dantai("A") MessageBox(dantai.Dantai_Mei) MessageBox(人100人を表示させたい) '?????????????????????????? あと、構造体のDimはデフォルトで、PublicでしょうかPrivateでしょうか? VB2005の構造体について、VB6との違い、クラスとの違いなど詳しく書かれている サイトなどご存じの方教えて下さい。
- 締切済み
- Visual Basic
- VBからVCへ渡す構造体の設定について
VB2005からVCで作られたDLLをコールするときにエラーが出て困ってます。 関数のパラメータに構造体を指定して、構造体のメンバの文字列を渡したいけれど、なんかうまく行かないんですよね。 VB2005だと固定長文字列ってのがサポートされていないとか何とか言うのは分かったけれど、 解決方法が不明となっています。 アドバイスをお願いします。 コードはこんな感じ。 *VC2005******************************************************* typedef struct{ int iTemp; char cTemp[256]; }tag_strTemp; void __declspec(dllexport) WINAPI TestFunction(tag_strTemp* pstrTemp) { MessageBox(NULL, pstrTemp->cTemp, "", 0); } *VC2005******************************************************* *VB2005******************************************************* Moduel Module1 Public Structure tag_strTemp Public iTemp as Integer Public cTemp as String ←ここの定義に問題があるんだと思ってます。 End Structure End Module Public Class Form1 Private Sub Form1_Load(・・・) Dim strTemp as tag_strTemp strTemp.cTemp = "ABCDE" TestFunction(strTemp) End Sub End Class *VB2005*******************************************************
- ベストアンサー
- Visual Basic
- 構造体のコピー
VB6ですが、構造体のコピーは正しくできるのでしょうか type a test1(0 to 5) as byte test2 as integer test3 as string end type dim b1 as a dim c1 as a b1.test = 2 c1 = b1 私はここで、c1.test2が0だった
- ベストアンサー
- Visual Basic
- VB6で構造体(ユーザー定義型)の比較でエラーになります。
VB6で構造体(ユーザー定義型)の比較でエラーになります。 仕様でしょうか? type TEST_STRUC x as integer y(0 to 10) as byte end type a as TEST_STRUC b as TEST_STRUC a.x = 1 b.x = 1 if a = b then <--- ここでエラー msgbox("同じ") end if 強引でも比較できる方法があれば知りたいです。 項目ごとに比較するしかないのでしょうか if a.x = b.x then のように、長々と記述するのが間違えそうで・・・ 簡単に比較できると、楽です。
- ベストアンサー
- Visual Basic
- 構造体配列の並べ替え
いつもお世話になっております。 VB6で構造体の配列をソートしたいと考えています。 具体的やりかたは調べたいと思うのですが、ヒントとしてひとつ教えてほしいことがありまして質問させていただきました。 たとえば 名前(string) 身長(integer) 体重(single) 何人分かを仮にprofileという名の構造体に入れて、普通の配列と同じ様に体重だけをソートしたとします。 すると体重だけがソートされてしまうのでしょうか? それとも構造体ごとソートされてくれるのでしょうか? 前者だとかなり悩むことになりそうなので、そこだけ教えていただきたく質問させていただきました。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- VB6のTYPE文をVB.NETのStructureに変えるとき
VB6のTYPE文をVB.NETのStructureに変えるとき 下記VB6のコードをVB.NETのStructureに変える場合 Type kouzou1 i As Integer j As Integer a As String * 20 b As String * 50 End Type を下記にしてみたのですが *20,*50のところは、どのように表現するのでしょうか。 Structure kouzou1 Dim i As Integer Dim j As Integer Dim a As String * 20 <- ステートメントの終わりを示してくださいのエラーになる。 Dim b As String * 50 <- ステートメントの終わりを示してくださいのエラーになる。 End Structure お教え下さい。
- ベストアンサー
- Visual Basic
- ファイル読み込みと構造体について
Q1 VB始めたばかりの超初心者です。クイズゲームを作成したく、構造体を用意したいのですが、同じ構造体を100個用意したい場合どのように宣言するのでしょうか? Public Type mondai_REC Question As String * 100 choice(5) As String * 30 justness(3) As Byte End Type ↑の構造体を100個用意したいのです。 また100個用意して、その中のchoice()を参照したい場合どのように使うのでしょうか? Q2 テキストファイルを読み込み、この構造体に格納したいと考えてます。ファイルをオープン・クローズドする、任意の文字(たとえば”。”)がみつかめまで読み込むなど、固定長でない文字列の入ったファイルを読み込むのに便利な関数を教えてください。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
お礼
貴重なご意見ありがとうございました。