Ptrsafe Kullanımı

01/06/2020, 15:57

accessman

bazı modüllerde "#If VBA7 Then" kullanarak hem 32 hem 64 bit için  Function Declare  ediliyor
ben üşenmediğim bir ana denk gelirse 32 bit olan kısmı silip sadece Ptrsafe olanı bırakıyorum
şimdilik bir sıkıntı çıkmadı. Ama Bir akıllı ben olmadığıma göre her ikisini birden yazanların bir bildiği vardır diye düşünüyorum
o bildikleri şey nedir
01/06/2020, 16:23

ozanakkaya

Sadece ptrsafe kullanırsan 32 bit accessde kodu çalıştıramazsın. ptrsafe olmazsa 64 bitte çalıştıramazsın. Bu yüzden

#If VBA7 Then
Private Declare PtrSafe Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#Else
Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#End If

şeklinde yazılıyor.
01/06/2020, 16:29

accessman

bende 32 bit de ptrsafe çalışıyor. şimdiye kadar hiç problem çıkmadı
01/06/2020, 17:46

berduş

VBA7 desteklediği için -32/64 fark etmez- sorun çıkarmaz, ama yanılmıyorsam VBA7 öncesi eski sürümlerde hata vermesi gerek
01/06/2020, 18:02

accessman

teşekkürler sn. @berduş