Page 1 sur 1

Retour procedure avec un pointer

Publié : mar. 02/août/2022 16:19
par jph
Bonjour,

Dans le guide de PB en français on a un exemple de retour de procédure avec une adresse de pointer sur une structure. Ceci illustre la façon de retourner autre chose qu'un type de base avec une procédure.

Code : Tout sélectionner

Structure REPAS
	Dejeuner.s
	Diner.s
	Tea.s
EndStructure
Procedure.l GetRepas()
	Static Gary.REPAS
	Gary\dejeuner = "Cornflakes"
	Gary\Diner = "Sandwichs au fromage"
	Gary\Tea = "Spaghetti bolognaise"
	ProcedureReturn @Gary
EndProcedure
*Gary.REPAS = GetRepas()
Debug *Gary\dejeuner
Debug *Gary\Diner
Debug *Gary\Tea
Ma question est la suivante. Pourquoi le type de retour est un long au lieu d'être un int? Les long sont codés sur 4 octets et en 64 bits le type de retour devrait normalement être codé sur 8 octets comme un int ou un quad. Non? Est-ce que c'est faux d'écrire Procedure.i GetRepas() ou Procedure.q GetRepas()? Merci d'avance.

Re: Retour procedure avec un pointer

Publié : mer. 03/août/2022 11:05
par Ollivier
Ta ligne :

Code : Tout sélectionner

Procedure.l GetRepas()
indique un retour long. Enlève le trop...

Code : Tout sélectionner

Procedure GetRepas()
... Et ça donnera un entier.

Re: Retour procedure avec un pointer

Publié : jeu. 04/août/2022 13:23
par jph
Effectivemant je n'ai aucune erreur même quand je met Procedure.i. Il suffisait d'essayer. Je réfléchirai avant de poser une question à l'avenir. Merci pour la réponse.

Re: Retour procedure avec un pointer

Publié : jeu. 04/août/2022 20:52
par Ollivier
jph a écrit :Je réfléchirai avant de poser une question à l'avenir.
Oui et non !

On découvre aussi des choses intéressantes par l'absurde !
Vu le code précédent, il y avait de la réflexion. Donc, bonne passion pour la prog à l'avenir. Merci aussi pour le retour.