Software 32/64 come capire se compilato a 32 o 64 bit?

di il
5 risposte

Software 32/64 come capire se compilato a 32 o 64 bit?

In rari casi ho programmi che operano con lo stesso sorgente a 32 e a 64 bit.
Per le Api uso i costrutti tipo:

#If VBA7 Then
Declare PtrSafe ...
#Else
Declare Function ...
#End If

Quindi lo stesso sorgente compilato o nella macchina reale a 64 bit con Office2021 è compilabile nella virtuale con Office2019 a 32 bit, funziona perfettamente per chi ha Office32 e per chi ha Office64.
Vorrei però da codice capire se sto usando la versione compilata a 32 o 64.
Questo per poter dire if 32 ecc. ecc.
Avevo provato ad inserire una costante globale in

#If VBA7 Then
...
#Else
...
#End If

Ma non funziona.
Qualche idea?

5 Risposte

  • Re: Software 32/64 come capire se compilato a 32 o 64 bit?

    Non funziona cosa? Cosa hai scritto?

    Uno spunto ...
    
    Public Sub test()
        #If VBA7 Then
           MsgBox "64"
        #Else
            MsgBox "32"
        #End If
    End Sub
    
  • Re: Software 32/64 come capire se compilato a 32 o 64 bit?

    paoloholzl ha scritto:


    ...Ma non funziona.
    Non ho capito l'esatta portata della richiesta, porta pazienza. Prova a rispiegarlo. Parli comunque di file mde/accde o di "normali" mdb/accdb?
  • Re: Software 32/64 come capire se compilato a 32 o 64 bit?

    Per quanto ne so non è possibile dall'esterno capire se quel file è Compilato in 32/64bit se non come ti ha suggerito Antonio, anche usando un sistema fruibile dall'esterno magari...

    Tieni presente anche che la versione creata in 32 funziona anche sul 64, ma non viceversa.

    https://stackoverflow.com/questions/43687469/how-to-tell-if-ms-access-file-was-created-as-32-bit-or-64-bit

    Aggiungo tuttavia una valutazione su cui ho sempre avuto qualche "dubbio/perplessità"... ovvero la variabile VBA7, che non indica se il sistema sia 32 o 64, ma solo se la versione dell'IDE è nuova o vecchia, in sostanza se richiede il PTRSAFE o meno.
    Da quì alla compatibilità al 64bit è un'altra cosa...
    Questo infatti dovrebbe essere supportato da questo:
    
    #if Vba7 then 
    '  Code is running in the new VBA7 editor 
         #if Win64 then 
         '  Code is running in 64-bit version of Microsoft Office 
         #else 
         '  Code is running in 32-bit version of Microsoft Office 
         #end if 
    #else 
    ' Code is running in VBA version 6 or earlier 
    #end if 
     
    #If Vba7 Then 
    Declare PtrSafe Sub... 
    #Else 
    Declare Sub... 
    #EndIf 
  • Re: Software 32/64 come capire se compilato a 32 o 64 bit?

    Corretto perché se è vero che se gira con versioni precedenti alla 7 è a 32 bit, non è detto nulla se la versione è la 7
  • Re: Software 32/64 come capire se compilato a 32 o 64 bit?

    Non ho più scritto perchè ho aggirato il problema.

    In pratica dato che ho una procedura di autoaggiornamento dei clients, mi serviva sapere se era a 32 o 64 bit la postazione.
    A questo punto l'ho inserita nel file INI dei mie clients, e ciascuno va a tirarsi su la versione che serve a lui.

    E comunque dopo tante prove, il mio sorgente compilato con access 2021 a 64 e ricompilato con Access 2019 a 32 bit, non mi davano esiti differenti lanciati sullo stesso PC.
    Anche perché non mi serviva sapere se la macchina è a 64 bit, ma se il programma è stato compilato per i 64 bit.
    Grazie comunque
Devi accedere o registrarti per scrivere nel forum
5 risposte