Page 1 sur 1
Pointeur sur une chaine
Publié : mer. 28/mai/2008 16:31
par lepiaf31
Bonjour tout le monde !
J'ai un petit probleme avec les pointeurs sue chaines. Comme je n'arrive pas bien a expliquer mon probleme je vais d'abord faire une exemple :
Code : Tout sélectionner
procedure Turc(*RetourChaine)
...
endprocedure
Chaine = space(100)
Truc(@Chaine)
Comme vous le voyez, je suis obligé de faire un 'space(100)' sur la variable Chaine pour pouvoir reserver de l'espace en memoire. Le probleme c'est que dans la pratique, je ne sais pas quelle taille fera la chaine renvoyée par la fonction Trcu().
Y a t-il donc une autre moyen que faire un space(9999999) pour eviter de ne pas avoir assé de memoire ?
Publié : mer. 28/mai/2008 17:11
par Octavius
Quel est le but de ta manoeuvre ? Je ne comprends pas bien.
Est-ce qu'un code dans ce genre te conviendrait ?
Code : Tout sélectionner
Procedure Truc()
...
ProcedureReturn *Resultat
EndProcedure
*AdresseDeLaChaine=Truc()
Sinon tu as aussi la fonction ReAllocateMemory() pour changer la taille allouée pour une mémoire.
Publié : mer. 28/mai/2008 18:03
par nico
T u peux faire ça:
Code : Tout sélectionner
Procedure Truc()
Static chaine.s
chaine="Ce que tu veux"
ProcedureReturn @chaine
EndProcedure
*Adresse=Truc()
chaine.s=PeekS(*Adresse)
Debug chaine
;-----------------ou----------------
Procedure.s Truc()
Static chaine.s
chaine="Ce que tu veux"
ProcedureReturn chaine
EndProcedure
chaine.s=Truc()
Debug chaine
Publié : mer. 28/mai/2008 19:30
par lepiaf31
Non en fait ma fonction fait une recherche dans un fichier et retourne 1 c'est tout c'est bien passé. Mais je voudrais aussie que la fonctions retoure d'autres informations (type chaine):
Code : Tout sélectionner
procedure Truc(*Nom, *Description, *Texte)
... ;on fait des manip
;on renvoi plusieurs infos
peeks(*Nom, Nom$)
peeks(*Description, Description$)
peeks(*Texte, Texte$)
procedurereturn 1 ;on retourne 1 quand tout c'est bien passé
endprocedure
Publié : mer. 28/mai/2008 19:42
par Oliv
Passe par une structure
Code : Tout sélectionner
Structure retour
Nom.s
Description.s
Texte.s
EndStructure
Procedure Truc(*arg.retour)
*arg\Nom = "Babar"
*arg\Description = "Elephant"
*arg\Texte = "Habite dans la savane"
ProcedureReturn 1
EndProcedure
Variable.retour
Truc(Variable)
Debug Variable\Nom
Debug Variable\Description
Debug Variable\Texte
Publié : mer. 28/mai/2008 19:42
par Backup
tu peux mettre des ProcedureReturn dans des conditions aussi
par exemple:
Code : Tout sélectionner
Procedure.s Truc()
Static chaine.s
chaine="Ce que tu veux"
If chaine<>""
ProcedureReturn chaine
;( ProcedureReturn 1)
Else
ProcedureReturn "la chaine est vide"
EndIf
EndProcedure
