mouse74
Messages postés2Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention13 novembre 2006
-
10 nov. 2006 à 11:11
mouse74
Messages postés2Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention13 novembre 2006
-
13 nov. 2006 à 11:18
Bonjour,
J'ai un gros problème. Voilà, mon programme VB fait appel à une dll fortran, tout fonctionne bien sauf que si je lance deux calculs de suite, l'application VB me réstitue les résultats du premier calcul à chaque fois. J'ai réinitialiser tous les valeurs, et je suis sûre que celle envoyé à la dll lors du deuxième calcul corresponde. Je suis donc en train de me demander, si c'est pas la dll qui garde les résultats en cache. Je souhaiterais donc decharger/recharger la dll avant chaque calcul pour être sure que ça ne vienne pas de ça.
Merci d'avance pour votre aide, je suis complétement largué.
Slts
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 nov. 2006 à 11:34
Que fait ta dll exactement ?
En principe, une fonction retourne une valeur.
Si tu as mis cette valeur dans une variable, c'est elle qu'il faut réinitialiser en appelant à nouveau ta fonction.
Pour faire plus court :
sans ton code et le descriptif de la dll concernée, je vois mal quelle réponse éclairée tu pourrais recevoir...
mouse74
Messages postés2Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention13 novembre 2006 13 nov. 2006 à 11:18
Bonjour,
En fait, je declare ma DLL et ma fonction de la manière suivante :
Declare Sub SGLEPT Lib "C:\Program Files\Rep Prog\nom.dll" _
(MAX_TOW As Double, V1 As Double, VR As Double, V2 As Double, n1 As Double, _
ACCEL_ALTITUDE As Double, MAX_AT_S As Double, FLEX As Boolean, TO_RUN As Double, TO_DISTANCE As Double, ACC_STOP_DISTANCE As Double, _
ByRef SEC_SEG_NET_GRAD As Double, STATUS As Long, LIMITING_OBSTACLE As Long, _
ByVal SCAP_ERROR_FLAG As String, ByVal L_SCAP_ERR_FLAG As Long, _
ByVal LIMIT_CODE As String, ByVal L_LIM_CODE As Long, _
ByVal REVISION_NUMBER As String, ByVal L_REVISION_NUMBER As Long)
Et ensuite j'appelle ma sub avec les paramètres tous initialisé à 0 et ma dll me restitue les valeurs.
Call fortran_interface.SGLEPT(MAX_TOW, V1, VR, V2, n1, ACCEL_ALTITUDE, MAX_AT_S, FLEX, TO_RUN, _
TO_DISTANCE, ACC_STOP_DISTANCE, SEC_SEG_NET_GRAD, STATUS, LIMITING_OBSTACLE, SCAP_ERROR_FLAG, _
Len(SCAP_ERROR_FLAG), LIMITATION_CODE, Len(LIMITATION_CODE), _
REVISION_NUMBER, Len(REVISION_NUMBER))
Toutes les autres variables sont bonnes sauf une MAX_AT_S, elle est bien reinitialisé à 0 avant l'appel de la procédure et aussi dans le programme fortran qui compose la DLL, mais j'ai l'impression que c'est la DLL qui garde la valeur.
Merci beaucoup pour votre aide