
Bon, je vais donc essayer, au debut, j'avais pas mis le zero, et ça me retournait des hieroglyphe et des carrés

Je vais reessayer.

Code : Tout sélectionner
hø€ø
Code : Tout sélectionner
Macro Ubound(Array)
; Rings sur le forum anglais
; http://www.purebasic.fr/english/viewtopic.php?t=8267
(PeekL(Array-8))
EndMacro
ProcedureDLL.l LeTablo(element.l)
Dim Tablo.s(3) ; 3 = 4 éléments
Tablo(0) = "Pure"
Tablo(1) = "is "
Tablo(2) = "your"
Tablo(3) = "friend"
; on controle que la valeur n'est pas supérieure à la valeur max
If element<0 Or element> = Ubound(Tablo())
ProcedureReturn -1
Else
ProcedureReturn @Tablo(element)
EndIf
EndProcedure
Code : Tout sélectionner
For i = 0 To 3
Debug.Print StringDLL(i)
Next
Code : Tout sélectionner
Macro Ubound(Array)
; Rings sur le forum anglais
; http://www.purebasic.fr/english/viewtopic.php?t=8267
(PeekL(Array-8))
EndMacro
ProcedureDLL.l LeTablo(element.l)
Dim Tablo.s(3) ; 3 = 4 éléments
Tablo(0) = "Pure"
Tablo(1) = "is "
Tablo(2) = "your"
Tablo(3) = "friend"
; on controle que la valeur n'est pas supérieure à la valeur max
If element<0 Or element> = Ubound(Tablo())
ProcedureReturn -1
Else
ProcedureReturn @Tablo(element)
EndIf
EndProcedure
Code : Tout sélectionner
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString1 As Any) As Long
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As Any) As Long
Private Declare Function LeTablo Lib "c:\EssaiTablo.dll" () As Long
Public Function StringDLL(Variable)
Dim RetourAdresse As Long, RetourDll As String
RetourAdresse = Variable
RetourDll = Space$(lstrlen(RetourAdresse))
lstrcpy RetourDll, RetourAdresse
StringDLL = RetourDll
End Function
Private Sub Form_Load()
Dim EssaihWnd As Long, RetourDll As Long
EssaihWnd = LoadLibrary("c:\EssaiTablo.dll")
For i = 0 To 3
Debug.Print StringDLL(i)
Next
FreeLibrary (EssaihWnd)
End Sub
C'est la faute a FRED(ca marchait bien sous PB)
Oui super idée, avec VBA ça devrait marcher pour les essais.Je n'ai pas VB, je vais essayer avec VBA sous excel
Surement pas, si c'est simple et sur, alors bilou il aime pasDe plus, je ne sais pas si les tableaux VB MS sont gérés comme ceux de PB
déjà que les tableaux sont souvent un calvaire pour VB alors si en plus tu ne déclares ni ne types quoi que ce soit, çà risque de poser problème en effet
Code : Tout sélectionner
Macro Ubound(Array)
; Rings sur le forum anglais
; http://www.purebasic.fr/english/viewtopic.php?t=8267
(PeekL(Array-8))
EndMacro
ProcedureDLL.l LeTablo(element.l)
Global Dim Tablo.s(3) ; 3 = 4 éléments
; on controle que la valeur n'est pas supérieure à la valeur max
Tablo(0) = "Pure"
Tablo(1) = "is "
Tablo(2) = "your"
Tablo(3) = "friend"
If element<0 Or element> = Ubound(Tablo())
ProcedureReturn -1
Else
ProcedureReturn @Tablo(element)
EndIf
EndProcedure
Code : Tout sélectionner
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString1 As Any) As Long
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As Any) As Long
Private Declare Function LeTablo Lib "c:\EssaiTablo.dll" (ByVal element As Long) As Long
Public Function StringDLL(Variable)
Dim RetourAdresse As Long, RetourDll As String
RetourAdresse = Variable
RetourDll = Space$(lstrlen(RetourAdresse))
lstrcpy RetourDll, RetourAdresse
StringDLL = RetourDll
End Function
Private Sub Form_Load()
Dim EssaihWnd As Long, RetourDll As Long
For i = 0 To 4
Debug.Print StringDLL(LeTablo(i))
Next
FreeLibrary (EssaihWnd)
End Sub
Code : Tout sélectionner
Macro Ubound(Array)
; Rings sur le forum anglais
; http://www.purebasic.fr/english/viewtopic.php?t=8267
(PeekL(Array-8))
EndMacro
Code : Tout sélectionner
Dim toto(45)
Macro Ubound(Array)
; Rings sur le forum anglais
; http://www.purebasic.fr/english/viewtopic.php?t=8267
(PeekL(Array-8))
EndMacro
Debug Ubound(toto())
Debug ArraySize(toto())+1
c'est pour ça que je préfère Ubound(Array) qui est à mon sens la vraie dimension, mais je ne polémique pas la-dessus, Arraysize est bien dans certains cascomtois a écrit :avec la 4.30 tu peux te passer de cette macro
Tu peux utiliser ArraySize().
C'est balot , la valeur retournée est fausse, il faut ajouter +1.