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

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

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

Message 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 ?
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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:
~~~~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
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Message 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.
Répondre