Pointeur sur une chaine

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Pointeur sur une chaine

Message 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 ?
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message 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.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Message 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
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Passe par une structure :wink:

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
Dernière modification par Oliv le mer. 28/mai/2008 19:42, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 


:)
Répondre