Unter Windows 64 bit sind Pointer auch 64 bit groß. Verwendet man also API Funktionen in seinem Code, muss man diese daraufhin gehend fit machen. Es gibt dazu einen Artikel hier.
Es gibt 2 Komplilierungskonstanten:
VBA7: Diese Konstante ist neu und gibt daher nur True zurück wenn die Umgebung die sogenannte VBA 7-Codebasis unterstützt.
Im Grunde bedeutet dies:
-
neuer, spezieller Datentyp für Zeiger (LongPtr) existiert; dieser hat auf einem 64bit System den Datentyp LongLong / auf einem 32 bit System ist dieser weiterhin Long
-
neues PtrSafe-Attribut wird unterstützt; steht wörtlich für: "Declare-Anweisung gilt als 64 bit sicher"
Win64: Diese Konstante gibt Auskunft darüber ob das System ein 64 bit System ist.
Was so manche Leute daran verwirrt ist; eigentlich kann man ja davon ausgehen, das wenn VBA7 existiert - sprich die 64 bit Unterstützung - muss das System automatisch 64 bit sein - FALSCH !!!
Denn wie gesagt: VBA7 bedeutet lediglich, Declare-Anweisungen sind per Attribut PtrSafe als 64bit sicher markiert, sowie Pointer dank LongPtr - abhängig des Systems - entweder 32 bit oder 64 bit lang. Kurz: Code mit dem VBA7 Attribute läuft auf 32/64 bit gleichermaßen, ohne großartig Mehraufwand zu betreiben.
>> Es kann aber sein << das man sich auf einem 64 bit System befindet, auf dem keine VBA 7-Codebasis existiert. Und genau für diesen Fall existiert das Win64-Attribut. Denn auch hier muss man mit 64 bit Zeigern umgehen, hat aber kein LongPtr / LongLong - Datentyp zur Verfügung - man muss hier also eine andere Lösung finden.
LG
Trägheit
|