Bonjour,
Jbloque sur un truc relativement con, c'est le passage en argument d'une liste à une fonction, avec la possibilité que la fonction puisse modifier les valeurs.
Bon j'ai vu que y a moyen de le faire avec les pointeurs, mais si y a une solution plus pratique je suis preneur. J'ai le meme probleme avec les listes chainé d'ailleurs.
Sinon c'est pas non plus possible de declarer une liste en global ??
Bah voila c'est tout, merci pour vos reponses...
Passage d'une liste en argument a une fonction
-
- Messages : 3
- Inscription : ven. 12/nov./2004 2:47
Re: Passage d'une liste en argument a une fonction
C'est quoi au juste une liste ? Si c'est un tableau, c'est déclaré global donc accessible dans toutes les procédures.queskispace a écrit :Bonjour,
Jbloque sur un truc relativement con, c'est le passage en argument d'une liste à une fonction, avec la possibilité que la fonction puisse modifier les valeurs.
Bon j'ai vu que y a moyen de le faire avec les pointeurs, mais si y a une solution plus pratique je suis preneur. J'ai le meme probleme avec les listes chainé d'ailleurs.
Sinon c'est pas non plus possible de declarer une liste en global ??
Bah voila c'est tout, merci pour vos reponses...
Les listes chainées sont basées à l'origine sur des variables globales. Les listes chainées sont connues par toutes les procédures d'un programme.
On ne peut passer en arguments que des valeurs sur 1, 2 ou 4 octets.
Pas de problème pour les byte, long etc mais on peut pas pas une chaine entière. D'ailleurs, comment faire pour passer une chaine dont lors de la programmation, son contenu n'est pas connu. La chaine peut avoir une longueur de 10 octets tout comme elle peut avoir 60 Ko. On passe son adresse à la fonction, de la même manière on ne peut pas passer une variable entière bassée sur une structure, on passe soit l'adresse de la variable, soit un pointeur. La notation par pointeur pemet permet d'accéder aux champs d'une variable basée sur une structure ou sur une liste chainée (il n'y a que cette méthode qui le permet).
Bonjour à tous
Désolé de te contredire Denis mais on peut passer une chaine de longueur trés importante. De plus ont peut utiliser un séparateur, ici "#" pour morceller une chaine.
Désolé de te contredire Denis mais on peut passer une chaine de longueur trés importante. De plus ont peut utiliser un séparateur, ici "#" pour morceller une chaine.
Code : Tout sélectionner
Procedure affiche(texte.s)
Sep=FindString(texte,"#",1)
MessageRequester(Left(texte,Sep-1),Mid(texte,Sep+1,1000))
EndProcedure
Chaine.s="Message passé en paramètre # Ceci me parait être une Chaine assez longue non ?"+Chr(13)+Chr(10)+"Si ce n'est pas le cas je peux faire plus long encore !"
affiche(Chaine)
Denis
Bonne Jounée à tous
Bonne Jounée à tous
Salut brossdenbrossden a écrit :Bonjour à tous
Désolé de te contredire Denis mais on peut passer une chaine de longueur trés importante. De plus ont peut utiliser un séparateur, ici "#" pour morceller une chaine.
Non vraiment je ne vois pas ou tu me contredis.
Bien sur que l'on 'peut passer une chaine' même longue mais le vocabulaire est impropre.
On ne passe pas une chaine à la procédure mais son adresse codée sur 32 bit, après que la chaine fasse 0 caractère ou 5000, ça ne change rien.
Heureusement d'ailleurs car c'est pratique le 'passage de chaine' à une procédure.
Lorsque l'on passe des paramètres à une procédure, on met sur la pile les valeurs correspondantes aux paramètres, 32 ou 16 bit.
Denis je pense que tu cherches la petite bête, on se fou complètement de comment est traitée ou codée l'information pour le passage de données à une procedure, mais ce qui est sûr c'est que dans la syntaxe on passe bien une chaine en paramètre, > Chaine < dans mon exemple et non son adresse qui aurait été > @Chaine <. On fait du basic ici pas du laguage machine.
Denis
Bonne Jounée à tous
Bonne Jounée à tous