Page 1 sur 1

Procedure taille ecran qui ne marche pas [résolu]

Publié : jeu. 16/avr./2009 17:04
par Ar-S
Pourquoi la procédure ne renvoie-t-elle rien ?

Code : Tout sélectionner

Procedure DesktopSize(numDesktop,XsizeDesktopName$,YsizeDesktopName$)
  ExamineDesktops()
  XsizeDesktop=DesktopWidth(numDesktop)
  YsizeDesktop=DesktopHeight(numDesktop)
  XsizeDesktopName$=Str(YsizeDesktop)
  YsizeDesktopName$=Str(XsizeDesktop)
EndProcedure

DesktopSize(0,xd$,yd$)
alors que

Code : Tout sélectionner

  ExamineDesktops()
  numDesktop=0
  XsizeDesktop=DesktopWidth(numDesktop)
  YsizeDesktop=DesktopHeight(numDesktop)
  XsizeDesktopName$=Str(YsizeDesktop)
  YsizeDesktopName$=Str(XsizeDesktop)

  xd$=XsizeDesktopName$
  yd$=YsizeDesktopName$
  
MessageRequester("test",xd$+" "+yd$)
End
fonctionne ?

Publié : jeu. 16/avr./2009 17:27
par Backup

Code : Tout sélectionner


Procedure.s DesktopSize(numDesktop,XsizeDesktopName$,YsizeDesktopName$)
    ExamineDesktops() 
    sortie$= Str(DesktopWidth(numDesktop))+","+Str(DesktopHeight(numDesktop) )
    ProcedureReturn sortie$
EndProcedure

; sortie en string
Debug DesktopSize(0,xd$,yd$) 

; sortie numerique
x=Val(StringField(DesktopSize(0,xd$,yd$) ,1,","))
Y=Val(StringField(DesktopSize(0,xd$,yd$) ,2,","))

Debug x
Debug Y
pour faire ressortir une valeur d'une procedure
il faut utiliser "procedurereturn" !! :)

sinon ça reste local a la procedure !!

perso , j'utilise les strings , grace a stringfield() , ça permet de renvoyer
plusieurs arguments en meme temps :D

Publié : jeu. 16/avr./2009 23:38
par Ar-S
Merci Dobro

Je ne sais pas pourquoi mais je m'étais fait à l'idée que ProcedureReturn ne renvoyait que des numérique ! :oops:


---edit----

Procedure.S pfffffffff :twisted: :twisted: :twisted:

Publié : sam. 02/mai/2009 11:47
par Geo Trouvpatou
Salut.

Sinon, plus rapide.
Comme expliqué dans la doc : Pointeurs et accès mémoire/Adresses des variables.

Code : Tout sélectionner

EnableExplicit

Structure s_TailleEcran
    largeur.l
    hauteur.l
EndStructure

Procedure DesktopSize(numDesktop, *taille.s_TailleEcran)
    ExamineDesktops()
    With *taille
        \largeur = DesktopWidth(numDesktop)
        \hauteur = DesktopHeight(numDesktop)
    EndWith
EndProcedure

Define.s_TailleEcran taille

DesktopSize(0, @taille)
Debug taille\largeur
Debug taille\hauteur

MessageRequester("Taille écran", "L'écran fait "+ Str(taille\largeur) +"*"+ Str(taille\hauteur) +" pixels")
Au passage Dobro tu aurais pu résumer à ça :

Code : Tout sélectionner

Procedure.s DesktopSize(numDesktop)
    ExamineDesktops()
    sortie$= Str(DesktopWidth(numDesktop))+","+Str(DesktopHeight(numDesktop) )
    ProcedureReturn sortie$
EndProcedure

; sortie en string
Debug DesktopSize(0)

; sortie numerique
x=Val(StringField(DesktopSize(0) ,1,","))
Y=Val(StringField(DesktopSize(0) ,2,","))

Debug x
Debug Y
Tu as des paramètres inutiles.

Bye.