Jeg har lavet følgende kode som virker på en 32-bit computer:
#If VBA7 And Win64 Then Declare PtrSafe Function Be06Calc Lib "Be10Eng.dll" (ByVal a As String, ByVal B As LongPtr, ByVal C As LongPtr) As String Declare PtrSafe Function Be06Keys Lib "Be10Eng.dll" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String #Else Declare Function Be06Calc Lib "Be10Eng.dll" (ByVal a As String, ByVal B As Long, ByVal C As Long) As String Declare Function Be06Keys Lib "Be10Eng.dll" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String #End If
Sub TEST() '-------------------------------------' ' Stien brugt Dim myPath As String Dim folderPath As String
'-------------------------------------' 'Oprettelse af diverse variable Dim objXML As MSXML2.DOMDocument Dim maxkey, max Dim cc As String, keys As String, keyxml As String, xmlFileName As String Set objXML = New MSXML2.DOMDocument objXML.async = False objXML.validateOnParse = False Static Bibliotek As String
Bibliotek = "C:\Program Files (x86)\SBi\Be10\7,12,8,12\" ChDir Bibliotek ' Necessary to run Be06Calc()
'-------------------------------------' ' Generating Be10 key-, log- and res-files
cc = Be06Calc(xmlFileName, 1, 0) maxkey = 3500 max = maxkey keys = String(maxkey, " ") keyxml = Be06Keys(objXML.xml, keys, max, 0) keys = "" Set objXML = Nothing
End Sub
Det scriptet skal gøre er at åbne "Be10Eng.dll" og køre de to funktioner på en xml-fil. Som sagt virker det i 32-bit, men jeg kan ikke få det til at virke på 64-bit, selvom jeg har brugt "PtrSafe" og "LongPtr".
Jeg tvivler virkelig, eftersom det virker på en 32-bit computer. Desuden er det et program så jeg har installeret på min computer som kører sin beregningskerne igennem denne dll og programmet virker fint på både 32-bit og 64-bit. Jeg tænker lidt på om det er fordi det er det forkerte antal byte som sendes gennem LongPrt istedet for Long. Det kan jo ske at beregningskernen er lavet til 32-bit og dermed forventer 4 byte. Men kan bare ikke finde en måde at få sendt 4 byte i 64-bit version, så kan ikke teste min teori.
prøv lige at kopiere dll'en fra en virkende maskine en gang til. Det undrer mig mht entry-point fejl. Kan dll'en være 16-bit kode - det kan en 64'er jo ikke.
Kontakt sbi.dk de må vide mere end vi andre om programmet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.