Les DLL avaient été codées dans l'urgence.
Tim me les avait demandées le 28 mars 2009, et il avait obtenu des premières fonctions opérationnelles le 30 mars 2009 (après 2 jours de codage forcené).
Depuis, plus aucune nouvelle ...
Je vais remanier toutes ces fonctions:
CALL_DLLn(), ADR(), HANDLE(), HANDLE_CANVAS() pour les rendre plus faciles à utiliser.
Je ferai ça calmement, en prenant mon temps, mais surement.
Pour le moment ADR() d'une variable entière fonctionne, mais ne fonctionne pas pour des variables réelles ou string.
Les adresses des variables entières en effet ne sont pas juxtaposées car plusieurs informations sont stockées: la valeur, le nom, le type (1=entier, 2=chaine, 3=réel, 4=entier à 1 indice, 5=chaine à 1 indice, 6= réel à 1 indice, 7=entier à 2 indices, 8=chaine à 2 indices, 9= réel à 2 indices), etc...
L'exemple que tu donnes sera tout à fait réalisable quand ADR(a$) fonctionnera:
- Code:
-
i% = dll_call2("ma_routine_DLL",adr(a$),len(a$))
La plupart des DLL codées en C++ et qui utilisent des strings utilisent en fait un pointeur sur ce string. C'est le rôle de adr(a$) qui est un véritable pointeur sur a$.
Attention, en C++ un string se termine par la valeur 0.