View RSS Feed

Han Raas

Problemen met doorgeven van argumenten van functions in 64-Excel VBA naar dll-functie

Rate this Entry
Beste collega Delphi lefhebber,

Laat ik me even voorstellen. Mijn naam is Han Raas, scheikundig ingenieur die aardig wat vakkennis heeft ondergebracht in programmacode (vanaf 1987). De taal die hiervoor is gebruikt is Pascal (in het begin Turbo Pascal, vanaf 1995 Delphi). Van de keuze voor Pascal/Delphi heb ik nooit een moment spijt gehad. Mijn ervaring is Delphi voor een ingenieur gewoon een extreem productieve programmeertaal omdat de code zo helder en overzichtelijk kan worden geschreven en omdat de de compiler waanzinnig snel is.
Veel van mijn werk bestond uit flowsheeting, dat wil zeggen het doorrekenen van de massa- en energiebalans van energetische en chemische processen. Veel van die schema's waren behoorlijk ingewikkeld. Deze schema's zijn allemaal uitgerekend met Delphi waarbij gebruik werd gemaakt van uitgebreide, zelf ontwikkelde procestechnische bibliotheken (in de vorm van dcu's). Een processchema zelf werd gecodeerd in de vorm van een eenvoudig te schrijven Delphi-unit. Anders gezegd: voor de flowsheetberekeningen werd de Delphi-omgeving niet verlaten. Dit bleek een uiterst productieve gang van zaken. De berekeningsresultaten waren er vaak veel eerder dan die welke werden verkregen bij de inzet van vele duizenden euro's kostende standaard flowsheetpakketten zoals Hysys of Aspen Plus. Het flowsheetpakket dat ik heb ontwikkeld heeft de naam Enssim (van Energy Systems Simulation).

Ik merkte wel dat ik collega's niet over kon halen om te werken met mijn programmatuur. De simpele reden was dat men geen zin had om een programmeertaal te leren, zelfs wetende dat voor het flowsheetgebruik binnen Enssim basiskennis van Delphi meer dan voldoende was. Wel werkten mijn collega's allen met Excel. Om die reden heb ik een subset van Ensssim ontwikkeld die geschikt is voor gebruik binnen Excel. Dat pakket heet EnssimForExcel. De functionaliteit van EnssimForExcel is vervat is een dll die via een gebruikelijke VBA-interface wordt gekoppeld aan Excel. Het ontwikkelen van EnssimForExcel ging probleemloos tot het moment dat ik moest overstappen van 32-bits Excel naar 64-bits Excel. Toen kreeg ik grote problemen met de op de juiste wijze doorgeven van functieargumenten van VBA naar de (Delphi)dll. Op internet heb ik oplossingen gevonden voor dit probleem en heb ik de bestaande VBA-code om de dll-functionaliteit te importeren op de juiste manier kunnen aanpassen.

Echter toen ik nieuwe code wilde toevoegen kwam ik (opnieuw) in de problemen met het juist doorgeven van functie argumentwaarden van VBA naar de dll terwijl ik toch dezelfde systematiek toepaste die eerder succes gaf. Ik gebruik ook enkel toegestane eenvoudige datatypes voor de parameters van alle functies (alleen double, integer en Olevariant).
Heeft iemand ervaring met en een oplossing voor genoemde problemen? Ik kan een dll-project en een bijbehorend Excel-bestand toesturen waarin het probleem duidelijk wordt.


Groeten,
Enssim Software

Han Raas

Submit "Problemen met doorgeven van argumenten van functions in 64-Excel VBA naar dll-functie" to Digg Submit "Problemen met doorgeven van argumenten van functions in 64-Excel VBA naar dll-functie" to del.icio.us Submit "Problemen met doorgeven van argumenten van functions in 64-Excel VBA naar dll-functie" to StumbleUpon Submit "Problemen met doorgeven van argumenten van functions in 64-Excel VBA naar dll-functie" to Google

Comments