Bug Threads et V4.20 Beta1

Archive.
popstatic
Messages : 83
Inscription : lun. 20/sept./2004 18:21
Localisation : derriere toi fais gaffe!

Bug Threads et V4.20 Beta1

Message par popstatic »

bug trouvé: quand on crée un thread avec une chaine de caractere en parametres, le compilateur produit une erreur de type
---------------------------
PureBasic
---------------------------
Ligne 14: Bad parameter type, number expected instead of string
---------------------------
OK
---------------------------
même si la procedure est bien déclarée avec le bon type....

exemple:

Code : Tout sélectionner

OpenConsole()

Declare.b hello(string.s)


Procedure.b hello(string.s)
    PrintN(string)
    ProcedureReturn 0
EndProcedure



Print("Appuyer sur RETURN pour afficher hello via un thread...")
Input()
CreateThread(@hello,"hello")

Input()
D'autre part, j'ai testé avec un type "long":

Code : Tout sélectionner

OpenConsole()

Declare.b hello(long.l)


Procedure.b hello(long.l)
    PrintN(Str(long))
    ProcedureReturn 0
EndProcedure



Print("Appuyer sur RETURN pour afficher hello via un thread...")
Input()
CreateThread(@hello,1234)

Input()

le résultat est curieux de même: le programme se compile cette fois, mais a l'éxécution j'ai droit a une erreur sur la ligne 1:
invalid memory access: write error at adress 1
...
voila. je n'ai pas regardé sur le forum anglais si le problème a deja été posé, donc au cas ou, comme je ne l'ai pas vu ici, je le poste.
Asus bien? asus tres bien!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tu as bien activer le parametre concernant les Threads, dans les options de compilation ?
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

On ne peux pas passer de chaîne de caractère en paramètre d'un thread, utilise les pointeurs : @variable . Pour ton deuxième problème, suis les conseils de notre Dobro vénéré :lol:
popstatic
Messages : 83
Inscription : lun. 20/sept./2004 18:21
Localisation : derriere toi fais gaffe!

Message par popstatic »

hello
alors oui effectivement j'ai bien activé la gestion des threads dans les options, et secundo, il me semblait (j'en suis sur a 99,9999%) que l'on peux passer des chaines a un thread, pour l'avoir fait un certain nombre de fois (je viens a l'instant de verifier dans 3 sources différentes qui marchent avec le compialteur 4.10).
J'en suis donc sur a 100%, maintenant ça a peut etre changé avec la version 4.20...
Asus bien? asus tres bien!
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Arf, c'est possible depuis quelle version ? :oops:
popstatic
Messages : 83
Inscription : lun. 20/sept./2004 18:21
Localisation : derriere toi fais gaffe!

Message par popstatic »

hmmmmm je me souviens plus mais ca fait lontemps, avant la 4.0 même...
Asus bien? asus tres bien!
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Tu as oublier les parenthèses après @hello:
CreateThread(@hello(),"hello")
popstatic
Messages : 83
Inscription : lun. 20/sept./2004 18:21
Localisation : derriere toi fais gaffe!

Message par popstatic »

oui c'est exact mais ca n'a pas de lien: j'ai tappé ce bout de code juste pour illustrer... ca ne marche aps avec les parenthèses..
Asus bien? asus tres bien!
Répondre