Visual Basic では変数のアドレスを取得するには、方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:199824
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
そのメモリ アドレスなど、変数の低レベルの情報を取得する必要がありますは、Visual Basic のプログラマは一般的です。ただし、このような情報を必要とする一部の API 関数があります。この資料は、Visual Basic のプログラマはこの情報を取得する可能性があります、次の Visual Basic の関数について説明します。

VarPtr - 変数のアドレスを返します。

VarPtrArray - 配列のアドレスを返します。

StrPtr - UNICODE の文字列バッファーのアドレスを返します。

VarPtrStringArray - 文字列の配列のアドレスを返します。

ObjPtr - オブジェクトによって参照されるインターフェイスには、ポインターを返します変数です。
詳細
警告: 1 つまたは複数、次の機能をについて説明この記事では。VarPtr, VarPtrArray, VarPtrStringArray, StrPtr, ObjPtr.これらの機能は、Microsoft テクニカル サポートではサポートされていません。Visual Basic のマニュアルには記載されていませんし、「として」このサポート技術情報」資料に記載されてマイクロソフトでは、Visual Basic の将来のリリースで利用されることは保証されません。

VarPtr

この関数は、変数または配列要素のアドレスを取得する使用できます。変数名またはパラメーターとしての配列の要素を取るし、そのアドレスを返します。ただし、VarPtr を使用して、配列要素のアドレスを取得するときは十分に注意する必要がありますので Visual Basic では、動的配列のロックを解除再する可能性がありますに注意してください。

次の使用例は、変数のアドレスを取得します。

Dim lngVariableAddress as LongDim dblMyVariable as DoublelngVariableAddress = VarPtr(dblMyVariable)				

次の使用例は、配列の 4 番目の要素のアドレスを取得します。

Dim lngElementAddress as LongDim lngArrayOfLongs(9) as Long' following will get address of 4th elementlngElementAddress = VarPtr(lngArrayOfLongs(3))				

制限: VarPtr 関数は配列のアドレスを取得するのには使用できません。詳細については、「マイクロソフト関数」を参照してください。

VarPtrArray

Visual Basic で配列を Safearray として格納されます。SAFEARRAY 構造体のアドレスを取得するのには、マイクロソフトの機能を使用する必要があります。次の Visual Basic 5.0 および 6.0 の Visual Basic の宣言それぞれです。

Declare Function VarPtrArray Lib "msvbvm50.dll" Alias "VarPtr" _(Var() as Any) As LongDeclare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" _(Var() as Any) As Long				

Safearray 型のアドレスを取得するのには、SAFEARRAY 名前 (かっこを含む) をマイクロソフト関数に渡します。

Dim lngSafeArrayAddress as LongDim lngArrayOfLongs(9) as LonglngSafeArrayAddress = VarPtrArray(lngArrayOfLongs())				

制限: Visual Basic で文字列を UNICODE と ANSI 変換を実行するため、マイクロソフトの機能は、文字列の配列のアドレスを取得するのには使用できません。マイクロソフトを文字列の配列を使用する場合は、一時コピーを ANSI の配列のアドレスが表示されます。詳細については、「テクニカル関数」を参照してください。

StrPtr

Visual Basic で文字列を BSTR に格納されます。String 型の変数で、VarPtr を使用すると、文字列のポインターへのポインターで、BSTR のアドレスになります。文字列バッファーのアドレスを取得するのには StrPtr 関数を使用する必要があります。この関数は、文字列の最初の文字のアドレスを返します。Visual Basic で unicode 文字列が格納されていることに考慮します。

文字列の最初の文字のアドレスを取得するのには、文字列変数、StrPtr 関数に渡します。

使用例:

Dim lngCharAddress as LongDim strMyVariable as StringstrMyVariable = "Some String"lngCharAddress = StrPtr(strMyVariable)				

API 呼び出しに UNIOCODE 文字列へのポインターを渡す必要がある場合、この関数を使用できます。

VarPtrStringArray

テクニカルには文字列の配列のアドレスを取得します。Visual Basic での実行、組み込みの UNICODE と ANSI 変換を回避するのには、宣言、タイプ ライブラリに定義する必要があります。

代わりに、MIDL コンパイラを使用して、次の .odl ファイル ファイルから個人所有のタイプライブラリをコンパイルできます。

Visual Basic 6.0 では、以下の内容をもつ VB6ptrlib.odl という名前のテキスト ファイルを作成します。

#define RTCALL _stdcall[uuid(C6799410-4431-11d2-A7F1-00A0C91110C3),lcid (0), version(6.0), helpstring("VarPtrStringArray Support for VB6")]library PtrLib{importlib ("stdole2.tlb");[dllname("msvbvm60.dll")]module ArrayPtr   {   [entry("VarPtr")]   long RTCALL VarPtrStringArray([in] SAFEARRAY (BSTR) *Ptr);   }}				

Visual Basic 5.0 で、VB5ptrlib.odl 以下のコンテンツで、テキスト ファイルを作成します。

#define RTCALL _stdcall[uuid(6E814F00-7439-11D2-98D2-00C04FAD90E7),lcid (0), version(5.0), helpstring("VarPtrStringArray Support for VB5")]library PtrLib{importlib ("stdole2.tlb");[dllname("msvbvm50.dll")]module ArrayPtr   {   [entry("VarPtr")]   long RTCALL VarPtrStringArray([in] SAFEARRAY (BSTR) *Ptr);   }}				

上記の .odl ファイル ファイル、Visual Basic 6.0 や Visual Basic 5.0 タイプ ライブラリ (.tlb) ファイルを作成するのにと、MIDL コンパイラでコンパイルするのには、次のコマンドラインを使用します。

MIDL/t VB6ptrlib.odlMIDL/t VB5ptrlib.odl

テクニカル プロジェクトで使用するには、作成したタイプ ライブラリへの参照を作成する必要があります。

使用例:

Dim MyArrayOfStrings(2) As StringDim AddressOfArray As LongMyArrayOfStrings(0)="AAA"MyArrayOfStrings(1)="BBB"AddressOfArray = VarPtrStringArray ( MyArrayOfStrings() )				

ObjPtr

ObjPtr は、パラメーターとしてオブジェクト変数名を取得し、このオブジェクト変数によって参照されるインターフェイスのアドレスを取得します。

オブジェクトのコレクションを行う必要がある場合はこの関数を使用するシナリオの 1 つです。そのアドレスとしてキーを使用して、オブジェクトのインデックスを作成してコレクションをウォークしてより高速なオブジェクトのアクセスを取得することができますの演算子です。多くの場合、オブジェクトのアドレスをキーとして使用するのには、唯一の確実なことです。

使用例:

objCollection.Add MyObj1, CStr(ObjPtr(MyObj1))...objCollection.Remove CStr(ObjPtr(MyObj1))				
kbDSupport

警告: この記事は自動翻訳されています

プロパティ

文書番号:199824 - 最終更新日: 12/05/2015 10:25:39 - リビジョン: 5.0

Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition

  • kbnosurvey kbarchive kbhowto kbmt KB199824 KbMtja
フィードバック