

Makale numarası: 199824 - Bu makalenin geçerli olduğu ürünleri görün.
Bu işlem için düşük düzey bellek adresini gibi bir değişken bilgi elde etmeniz bir Visual Basic Programcı sık olur. Ancak, bu bilgilere gerek duyan bazı API işlevleri vardır. Bu makalede, bu bilgileri edinmesi bir Visual Basic Programcı yardımcı olabilecek aşağıdaki Visual Basic işlevleri:
VarPtr-, değişken adresini döndürür.
VarPtrArray - dizi adresini döndürür.
StrPtr - UNICODE dize arabelleğinde adresini döndürür.
VarPtrStringArray - dize dizisi adresini döndürür.
Bir nesne değişkeni tarafından başvurulan bir arabirim için işaretçiyi ObjPtr - verir.
UYARı: bir veya daha fazlası aşağıdaki işlevleri; bu makalede açıklanan VarPtr, VarPtrArray, VarPtrStringArray, StrPtr, ObjPtr. Bu işlevler, Microsoft Teknik destek tarafından desteklenmiyor. Visual Basic belgelerindeki belgelenmemiştir ve sağlanan bu Knowledge Base makalesinde "olduğu gibi." Microsoft, Visual Basic gelecekteki sürümlerde kullanılabilir olduğunu garanti etmez.
VarPtrBu işlev bir değişken veya bir dizi öğesinin adresini almak için kullanılabilir. Bu işlem, değişken adını veya dizi öğesinin parametresi olarak alır ve adresini döndürür. Ancak, bir <a0>dizi</a0> öğesinin adresini almak için VarPtr kullanırken çok dikkatli olmalısınız; böylece kilidi dinamik Arrays Visual Basic tarafından yeniden olduğunu bilmeniz gerekir.
Aşağıdaki örnek, bir değişkenin adresi alır:
Bu örnek, dizinin dördüncü öğe adresini alır:
Kısıtlamalar: VarPtr işlevi bir dizi adresini almak için kullanılamaz. Daha fazla bilgi için bkz: VarPtrArray işlevi.
VarPtrArrayVisual Basic'te bir dizi SAFEARRAYs depolanır. SAFEARRAY yapısının adresini almak için <a0></a0>, VarPtrArray işlevini kullanmanız gerekir. Visual Basic 5.0 ve Visual Basic 6. 0'ın bildirimleri sırasıyla şunlardır:
Bir SAFEARRAY adresini almak için <a0></a0>, VarPtrArray işlevine (parantez dahil) SAFEARRAY adı geçir:
Kısıtlamalar: çünkü UNıCODE/ANSı dönüştürme dizeleri için Visual Basic yapar VarPtrArray işlevi, bir dize dizisi adresini almak için kullanılamaz. Bir dize dizisi VarPtrArray kullanırsanız, dizinin geçici bir ANSI kopyasını adresini alır. Daha fazla bilgi için bkz: VarPtrStringArray işlevi.
StrPtrVisual Basic'te dizeleri BSTR kişinin depolanır. Bir değişkeni dize türünde VarPtr kullanırsanız, dize işaretçisi bir işaretçi olan BSTR, adresini alır. Dize arabelleğinde adresini almak için <a0></a0>, StrPtr işlevini kullanmanız gerekir. Bu işlev, dizenin ilk karakterin adresini döndürür. Visual Basic'te UNICODE olarak depolanan dizeler dikkate alın.
Ilk karakter dizesinin adresini almak için <a0></a0>, dize değişkeni, StrPtr işlevine geçirir.
ÖRNEK:
Bir API çağrısı UNIOCODE dize işaretçisi aktarmak istediğinizde bu işlevi kullanabilirsiniz.
VarPtrStringArrayVarPtrStringArray bir dize dizisi adresini alır. Visual Basic tarafından gerçekleştirilen bir iç UNıCODE/ANSı dönüştürme önlemek için <a0></a0>, bir tür kitaplığında tanımlanması bildirim yok.
Alternatif olarak, aşağıdaki dosyaları .odl kendi bir tür kitaplığından derleme için MIDL derleyici kullanabilirsiniz.
Visual Basic 6.0 için aşağıdaki içeriğe sahip VB6ptrlib.odl adlı bir metin dosyası oluşturun:
Visual Basic 5.0 için aşağıdaki içeriğe sahip VB5ptrlib.odl adlı bir metin dosyası oluşturun:
Önceki .odl dosyalarını, sırasıyla, bir Visual Basic 6.0 veya Visual Basic 5.0 türü kitaplığı (.tlb) dosyası oluşturmak için MIDL Derleyici ile aşağıdaki komut satırlarını kullanın:
MIDL /t VB6ptrlib.odl MIDL /t VB5ptrlib.odl
Projenizde VarPtrStringArray işlevini kullanmak için oluşturduğunuz türündeki kitaplığa bir başvuru oluşturmanız gerekir.
ÖRNEK:
ObjPtrObjPtr parametre olarak bir nesne değişkeni adı alıp, bu nesne değişkeni tarafından başvurulan arabirimin adresini alır.
Nesnelerin bir birleşimini yapmak istediğinizde bu işlevi kullanarak, bir senaryodur. Nesnenin anahtar olarak adresini kullanarak dizin oluşturma, koleksiyon izlenecek ve kullanarak daha hızlı erişim elde edebilirsiniz işletmen iş. Çoğu durumda bir nesnenin anahtar olarak kullanmak için yalnızca güvenilir bir şey adresidir.
ÖRNEK:
Makale numarası: 199824 - Last Review: 1 Temmuz 2004 Perşembe - Gözden geçirme: 2.1
Bu makaledeki bilginin uygulandığı durum:
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:199824
(http://support.microsoft.com/kb/199824/en-us/ )

