Skip to main content

AccessTr.neT


VarPtr TypeMismatch Hatası

VarPtr TypeMismatch Hatası

#1
Merhaba
Programda Giriş butonuna bastığımda basMoueseHook modülü içerisindeki "Public Function NewMouseHook(ByRef Form As Access.Form) As Object" içerisinde "Call CastToObject(MouseHookLoader, VarPtr(VarPtr(LoaderVTable)), SIZEOF_PTR32)" satırında bulunan "VarPtr" için "TypeMismatch" hatası veriyor. Bunu nasıl düzeltebilirim. Yardım edebilir misiniz?
Not:64 bit işletim sistemi kullandığımdan dolayı program içerisinde Declare ifadelerinden sonra Ptrsafe eklemesi yaptım.
Son Düzenleme: 11/02/2017, 07:35, Düzenleyen: zzr.
Cevapla
#2
Merhaba, VarPtr kodunu LongPtr ile değiştirerek deneyiniz.
Cevapla
#3
sayın zzr,

Alıntı:Not:64 bit işletim sistemi kullandığımdan dolayı program içerisinde Declare ifadelerinden sonra Ptrsafe eklemesi yaptım.

ifadenize yönelik olarak;

sadece,PTRSAFE düzeltmesi yapmanız yeterli gelmeyecektir.

kod içerisinde yer alan ve DECLARE edilecek olan Fonksiyondaki LONG ifadesinin de LONGPTR oalrak değiştirilerek kullanılması gerekmektedir.

ÖRNEK

Declare Function VarPtr Lib "vbrun100.Dll" (Var As Any) As Long

yukarıdaki kod satırının,

Declare Ptrsafe Function LongPtr Lib "vbrun100.Dll" (LongPtr As Any) As LongPtr

benzeri bir kod satırı olarak kullanılması gibi.kısacası,64 bit kodlarının yazılı olacağı kısımda yer alacak olan bütün LONG değerleri için LONG PTR ifadesini kullanmalısınız.

son olarak;
içeriğinde farazi gerçek dışı uydurma olacak halde ve sonuçları görebilmek adına da birkaç kayıt barındıracak şekilde örnek uygulamanızı konunuza dahil edebilirsiniz.

bilginize...iyi çalışmalar,saygılar.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#4
Daha önceden fascioğlu'nun paylaştığı https://accesstr.net/konu-personel-progr...gram%C4%B1 adresindeki Personel İşlemleri programını kullanmak istediğimde bu hatayı aldım.  

ozanakkaya verdiği bilgi doğrultusunda VarPtr kodunu LongPtr ile değiştirdim ancak olumlu sonuç alamadım.

atoz112  verdiği bilgi doğrultusunda LONG ifadelerini LONGPTR olarak değiştirilerek denediğimde
"Err.Raise ERR_OUT_OF_MEMORY" satırında "TypeMismatch" hatası veriyor.


fascioğlu'nun paylaşımından indirdiğim dosyayı orjinal şekli ile yeniden ekliyorum.
.rar Personel İşlemleri.rar (Dosya Boyutu: 179,5 KB | İndirme Sayısı: 4)
Son Düzenleme: 11/02/2017, 14:24, Düzenleyen: zzr.
Cevapla
#5
sayın zzr,

EK'te;
bahsettiğiniz talebinize yönelik olarak,
ilgili örnek üzerinde gerekli düzeltmelerin yapılması sureti ile hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.

bilginize...iyi çalışmalar,saygılar.
.rar Personel İşlemleri-ATOZ.rar (Dosya Boyutu: 198,7 KB | İndirme Sayısı: 31)
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#6
Sayın atoz112 ,

Öncelikle ilginiz için çok teşekkür ederim.

    Eklediğiniz dosyayı açtığımda "Mdl_AccessGizle" modülü içerisinde "degistir()" fonksiyonunda bulunan "rgn1 = CreateRectRgn(0, 0, 1, 1)" satırında CreateRectRgn  ifadesinde "TypeMismatch" hatası verdi (resim1). Bunun Access menüsünün gizlemesi ile ilgi olduğunu düşündüğümden FRM_LOGON formunun yüklendiğinde olayından kaldırarak programı tekrar çalıştırdım.

Kullanıcı adı ve şifresini girerek Giriş butonuna bastığımda "basmousehook" modülünde "MouseHookAddr = VirtualAlloc(0, Len(NativeCode), MEM_RESERVE_AND_COMMIT, PAGE_EXECUTE_RW)" satırında "TypeMismatch" hatası verdi(resim2).


resim1: [Resim: do.php?imgf=148681538387991.jpg]

resim2: [Resim: do.php?imgf=148681538397932.jpg]
Son Düzenleme: 12/02/2017, 10:47, Düzenleyen: zzr.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da