Page 1 sur 1
[resolu] Paramettre par defaut dans procédures...
Publié : mer. 30/nov./2011 23:19
par Ar-S
Je fatigue, je ne me rappel pas comment on met des valeurs par defaut dans une procédure.
En gros je pige pas pourquoi PB me retourne une erreur ici :
Code : Tout sélectionner
Global.i LargSortie, HautSortie
Global EcranX.i = GetSystemMetrics_(#SM_CXSCREEN)
Global EcranY.i = GetSystemMetrics_(#SM_CYSCREEN)
Procedure CaptEcran (Destination$ , LargSortie = EcranX, HautSortie = EcranY)
;(....)
procedurereturn 1
Endprocedure
Re: Besoin rappel Param par defaut dans procédures...
Publié : mer. 30/nov./2011 23:32
par Demivec
Ar-S a écrit :Je fatigue, je ne me rappel pas comment on met des valeurs par defaut dans une procédure.
En gros je pige pas pourquoi PB me retourne une erreur ici :
Code : Tout sélectionner
Global.i LargSortie, HautSortie
Global EcranX.i = GetSystemMetrics_(#SM_CXSCREEN)
Global EcranY.i = GetSystemMetrics_(#SM_CYSCREEN)
Procedure CaptEcran (Destination$ , LargSortie = EcranX, HautSortie = EcranY)
;(....)
procedurereturn 1
Endprocedure
peut-être:
Code : Tout sélectionner
;Global.i LargSortie, HautSortie
Global EcranX.i = GetSystemMetrics_(#SM_CXSCREEN)
Global EcranY.i = GetSystemMetrics_(#SM_CYSCREEN)
Procedure CaptEcran (Destination$ , LargSortie = -1, HautSortie = -1)
If LargSortie = -1: LargSortie = EcranX: EndIf
If HautSortie = -1: HautSortie = EcranY: EndIf
;(....)
ProcedureReturn 1
EndProcedure
EcranX, EcranY n'est pas constant.
Re: Besoin rappel Param par defaut dans procédures...
Publié : mer. 30/nov./2011 23:38
par Ar-S
Un truc comme ça devrait pourtant fonctionner.
Code : Tout sélectionner
Procedure CaptEcran (Destination$ , LargSortie = GetSystemMetrics_(#SM_CXSCREEN), HautSortie = GetSystemMetrics_(#SM_CYSCREEN))
;(....)
ProcedureReturn 1
EndProcedure
Je m'en suis sortie en faisant autrement mais je ne vois pas pourquoi ça ne marche pas ainsi.
Re: Besoin rappel Param par defaut dans procédures...
Publié : jeu. 01/déc./2011 9:43
par Mesa
Moi aussi j'ai ce genre d'erreur et la réponse est toujours la même, c'est celle de Demivec : Il faut des constantes.
EcranX et EcranY doivent être constant.
C'est à dire que l'on ne peut pas utiliser de variable, il faut que "EcranX et EcranY" soient définis avant même la compilation.
Code : Tout sélectionner
#EcranX = 800
#EcranY = 600
Procedure CaptEcran (Destination$ , LargSortie = #EcranX, HautSortie = #EcranY)
;(....)
Debug "EcranX " + Str(LargSortie)
Debug "EcranY " + Str(HautSortie)
ProcedureReturn 1
EndProcedure
dest$=""
CaptEcran(dest$)
End
ou alors
Code : Tout sélectionner
Global EcranX
Global EcranY
Procedure DimensionEcranPureBasic()
ExamineDesktops()
EcranX = DesktopWidth(0)
EcranY = DesktopHeight(0)
EndProcedure
Procedure DimensionEcran()
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
EndProcedure
Procedure CaptEcran (Destination$)
;DimensionEcranPureBasic()
DimensionEcran()
LargSortie = EcranX
HautSortie = EcranY
;(....)
ProcedureReturn 1
EndProcedure
dest$=""
CaptEcran(dest$)
Debug "EcranX " + Str(EcranX)
Debug "EcranY " + Str(EcranY)
Je peux savoir pourquoi tu n'utilises pas les fonctions purebasic DesktopWidth(),... ?
Mesa
Re: Besoin rappel Param par defaut dans procédures...
Publié : jeu. 01/déc./2011 13:20
par gnozal
Mesa a écrit :Moi aussi j'ai ce genre d'erreur et la réponse est toujours la même, c'est celle de Demivec : Il faut des constantes.
EcranX et EcranY doivent être constant.
C'est à dire que l'on ne peut pas utiliser de variable, il faut que "EcranX et EcranY" soient définis avant même la compilation.
Effectivement, c'est précisé dans
l'aide de PB :
Purebasic.chm a écrit :Les paramètres en fin de procédure peuvent avoir une valeur par défaut (une expression constante est requise). Les paramètres ayant une valeur par défaut pourront être omis lors de l'appel de la procédure, la valeur par défaut de chaque paramètre manquant sera utilisée.
Re: Besoin rappel Param par defaut dans procédures...
Publié : jeu. 01/déc./2011 21:44
par Ar-S
Ok merci pour la piqure de rappelle, parfois les yeux ne veulent rien savoir
J'espère que ma mémoire va entrer une bonne fois pour toute cette info dans une tiroir et non dans un puits sans fond
