passer un tableau en parametre dans un thread

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

passer un tableau en parametre dans un thread

Message par Atomo »

Salut à tous, je souhaiterais passer un tableau à 1 dimension en paramètre dans un thread mais cela ne marche pas de la même façon que dans une procédure apparemment.

J’utilise ce code :

Code : Tout sélectionner

Dim tableau.s(2)
tableau(0) = "pierre"
tableau(1) = "paul"
tableau(2) = "jack"

Procedure list(array.s(1))
  For x=0 To 2
    Debug array(x)
  Next x
EndProcedure

CreateThread(@list(), tableau())
Delay(1000)
End
Cela me renvoi une erreur invalide memory acces.
Je vous remercie d'avance :)
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

je crois qu'on ne passer en paramètre à un Thread un String
ton tableau est de type String
:wink:
référence à ce post du forum anglais
http://www.purebasic.fr/english/viewtop ... ing+thread
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message par Atomo »

ok merci pour ta réponse.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Normalement ça doit être possible avec les pointeurs en transmettant uniquement l'adresse du tableau au thread (@Tableau()) et en récupérant avec *array. Après il faut jouer avec PeekL et PeekS

Ou autre méthode mettre le tableau en global...
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

a mon avis mettre le tableau en global est une bonne idée :)
Anonyme

Message par Anonyme »

Code : Tout sélectionner

Dim tableau.s(2)
tableau(0) = "pierre"
tableau(1) = "paul"
tableau(2) = "jack"



Procedure list(*Tab)
  For x=0 To 2
  AdresseDuString = PeekL(*Tab+(x*4)) 
     Debug PeekS(AdresseDuString)
  Next x
EndProcedure

CreateThread(@list(), tableau())
Delay(1000)
End
Ton tableau de string contient uniquement les adresses mémoire des string stockés. au cas ou tu cherches à jouer des coups de poke et peek
Donc , ce n'est pas vraiment un tableau de string, mais un tableau de long contenant des pointeurs vers des adresses qui elles même contiennent des char , tout cet ensemble forme les "string" :D
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message par Atomo »

Merci pour vos réponses, je vais utiliser un tableau global ca sera plus simple :)
Anonyme

Message par Anonyme »

Le global n'est pas un problème :

Code : Tout sélectionner

Dim T(1)

Procedure Test(Ptr,Number)
  PokeL(Ptr,Number)
EndProcedure

Test(@T(1),50)

Debug T(1)
Répondre