tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: ini.ファイルの設定
投稿日: 2004/02/11(Wed) 13:16
投稿者魔界の仮面弁士
> Geberalとは書かれてないのでどこに書いていいのでしょうか?(^^; (VB6.0は書いてあったような)
Geberal ではなく、General ですよね。

VS.NET 2003では、リスト中の (全般) というのが VB6 の General に相当します。

ただ、VB6では、全てのプロシージャの前(かつ、Option Explicitの後)に宣言文を書く必要が
ありましたが、VB.NETでは、ModuleやClassの内側であればどこでもOKとなっています。
(プロシージャ内での宣言はできませんが)

例えば、
  Public Class Form1 : Inherits System.Windows.Forms.Form
    Private Declare ……  '★★ここに記述★★
    Private Sub Form1_Load(…)…
       '
       '
    End Sub
  End Class
のような書き方もできますし、
  Public Class Form1 : Inherits System.Windows.Forms.Form
    Private Sub Form1_Load(…)…
       '
       '
    End Sub
    Private Declare ……  '★★ここに記述★★
  End Class
などと書く事も出来るという事です。


> ByVal lpKeyName As Anyの
あれ? この引数を Any型にしている理由は何ですか?
たとえVB6だとしても、この引数を Anyにする必要性が感じられないのですが…。


> 'As Any' は、'Declare' ステートメントではサポートされていません。というエラーが返ってきてしまいます
引数型のオーバーロードがサポートされたため、Anyは廃止されました。
適切な型(As Stringなど)に置き換えてください。

例えば、「Stringを渡すこともあるし、整数を渡すこともある」というAPIなら、
   'for VB6
   Private Declare Sub hage Lib "hige" (ByVal hoge As Any)
と書くかわりに、
   'for VB.NET
   Private Declare Sub hage Lib "hige" (ByVal hoge As String)
   Private Declare Sub hage Lib "hige" (ByVal hoge As Int32)
のように、同じ関数名を異なる引数宣言で2重定義すればOKです。


# ちなみにVB6の場合は、オーバーロードができないため、Anyを使わずに対処する場合は、
#   Private Declare Sub hageByString Lib "hige" Alias "hage" (ByVal hoge As String)
#   Private Declare Sub hageByLong   Lib "hige" Alias "hage" (ByVal hoge As Long)
# のように、関数名そのものを変更する必要がありました。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。