Kwai chang caine a écrit :Tu veux dire que c'est normal
Que ça viens pas de mon code ?
je ne dit pas que c'est normal, personellement , je trouve ton code logic !!
en principe , ça devrai marcher , c'est peut etre un bug !!
pour testé j'ai remplacé ton tableau par une chaine, et ça marche !! !!
donc , dans l'absolu, cela devrai marcher avec un tableau (qui reste une sorte de variable), ta demarche est logic et clair, c'est donc PureBasic qui est mal foutu ou qui bug !
on peut faire :
Code : Tout sélectionner
; code de la dll
ProcedureDLL.s RempliTablo()
test$="dobro"
ProcedureReturn test$
EndProcedure
Code : Tout sélectionner
; Voici le programme client qui utilise la DLL
;
Dim tablo.s(5)
If OpenLibrary(0, "dll_test.dll")
*AdresseTablo = CallFunction(0, "RempliTablo")
Debug *AdresseTablo
Debug PeekS(*AdresseTablo)
CloseLibrary(0)
EndIf
on peut meme recuperer le premier element d'un tableau
Code : Tout sélectionner
; code de la dll
ProcedureDLL.s RempliTablo()
Dim tableau.s(5)
For t=0 To 5
tableau(t)="phrase"+Str(t)
Next t
ProcedureReturn tableau(0)
EndProcedure
Code : Tout sélectionner
; exploite la dll
Dim tablo.s(5)
If OpenLibrary(0, "dll_test.dll")
*AdresseTablo = CallFunction(0, "RempliTablo")
Debug PeekS(*AdresseTablo)
CloseLibrary(0)
EndIf
alors , je ne comprends pas que l'on ne recupere pas les autre element, c'est ça que j'appelle le cloisonage , des murs invisible qui empeche de tourner en rond !!
ce genre de probleme sera résolu lorsqu'on pourra retourner plusieurs
paramètre d'une procédure
pouvoir mettre plusieurs procedure return dans la meme procedure
car dans mon exemple on aurai pu faire
comme en GFA de memoire :
Code : Tout sélectionner
; code de la dll
ProcedureDLL.s RempliTablo()
Dim tableau.s(5)
For t=0 To 5
tableau(t)="phrase"+Str(t)
ProcedureReturn tableau(t)
Next t
EndProcedure
qui retourne a chaque appel l'element suivant
ou bien
Code : Tout sélectionner
; code de la dll
ProcedureDLL.s RempliTablo()
Dim tableau.s(5)
For t=0 To 5
tableau(t)="phrase"+Str(t)
Next t
if tartampion
ProcedureReturn tableau(5)
else if toto
ProcedureReturn tableau(2)
endif
EndProcedure
qui retourne un element en fonction d'une condition !!
pour moi le pure sera puissant seulement lorsqu'il pourra faire ça !!
ainsi que
ça a l'air idiot, mais c'est indispensable !
