Cette extension ressemble énormément à Call DLL avec quelques options en plus et une bonne documentation. Je me sens maintenant à la maison avec MMF 2 [img]/epicentre/images/%%GRAEMLIN_URL%%/grin.gif[/img] (l'affichage des paramètres de DLL Object dans le débogueur est pratique d'ailleurs)
J'ai migré une petite appli de MMF 1.5 + Call DLL à MMF 2.0 + DLL Object et le tout fonctionne correctement.
Quelques remarques pour la route :
Lors de l'événement On Error, il n'y a aucune protection contre d'autres levées d'événements. C'est-à-dire, si une erreur se produit lors de l'utilisation de l'objet et que le traitement de cette erreur génère une autre erreur, il y a un risque d'appel récursif de cet événement finissant par crasher l'application.
Parfois il est préféreable de traiter une erreur juste après un appel plutôt que par levée d'événement. Le traitement est alors directement associé à l'appel précédent. Mais ce genre de traitement est difficile car la dernière erreur levée est conservée sans possibilité de l'effacer. Biensûr, en utilisant une variable quelconque il est possible de contourner le problème mais il serait plus simple d'avoir une action du genre Clear last error.
L'utilisation de messages d'erreur plutôt que des codes d'erreur est à réfléchir... L'avantage des messages d'erreur est qu'ils présentent directement une explication du problème, l'inconvénient est que dissocier le traitement d'une erreur d'une autre peut devenir problématique. Il suffit que la chaîne soit modifiée pour qu'un traitement ne soit plus déclenché (problème de maintenance).
L'action Unload DLL lève une erreur si aucune DLL n'est chargée. A mon goût, cette action devrait décharger sans discuter l'objet qu'il y ait une DLL chargée ou non. En effet le résultat final est le même : il n'y a pas/plus de DLL chargée après l'appel de cette action. Ou alors au moins ajouter une condition du genre A DLL is loaded.
Une question :
Est-ce qu'il est nécessaire d'effectuer un déchargement manuel des DLLs chargées à la fin de la scène ou est-ce que l'extension s'en charge ?
Par exemple la DLL user32.dll peut être utilisée relativement fréquemment. Afin d'éviter de charger-décharger celle-ci sans cesse, je la charge au début de la scène. Est-ce qu'il faut que je la décharge manuellement à la fin de la scène ?
Tant que j'y suis :
Contrairement à Call DLL, l'extension de la librairie (.dll) doit être spécifiée lors du chargement. Ce n'est pas plus mal mais à savoir.
Puisqu'il est possible d'ajouter des arguments, il serait intéressant de pouvoir déterminer le nombre d'arguments définis actuellement dans l'objet. Bon pour ma part je préfère le placement explicite des arguments que je trouve plus sûr [img]/epicentre/images/%%GRAEMLIN_URL%%/wink.gif[/img]





Reply With Quote






