[resolu] Paramettre par defaut dans procédures...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu] Paramettre par defaut dans procédures...

Message 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
Dernière modification par Ar-S le jeu. 01/déc./2011 21:45, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Besoin rappel Param par defaut dans procédures...

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Besoin rappel Param par defaut dans procédures...

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Besoin rappel Param par defaut dans procédures...

Message 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
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Besoin rappel Param par defaut dans procédures...

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Besoin rappel Param par defaut dans procédures...

Message par Ar-S »

Ok merci pour la piqure de rappelle, parfois les yeux ne veulent rien savoir :roll:
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 :o
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre