IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Calcul entre résolution et largeur [WD20]


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut Calcul entre résolution et largeur
    Bonsoir à tous

    Je souhaite soustraire la largeur de ma fenêtre à celle de ma résolution pour placer ma fenêtre sur le bon X de tel manière que cela se recalcul automatiquement si je change de résolution.

    218 correspond à la largeur de ma fenêtre.

    J'ai tester avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xChaîneRes est un numérique
    xChaîneRes = SysRésolutionEcran()
     
    LIB_SansNom1=(ExtraitChaîne(xChaîneRes, 1)-218)
     
    FEN_test..Y = (36)
    FEN_test..X = (LIB_SansNom1)
    Et la j'ai erreur : L'opération '-' est interdite entre un élément de type 'chaîne ANSI' et un élément de type 'entier'.

    Quelqu'un aurai une idée pour résoudre se probleme ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Il faut juste faire une conversion de chaine vers entier. Une petite recherche dans l'aide en ligne et tu devrais trouver ton bonheur...

    Tatayo.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonjour

    J'ai essayer mais je me retrouve avec une nouvelle erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xChaîneRes est un numérique
    xChaîneRes = SysRésolutionEcran()
     
    LIB_SansNom1=(ExtraitChaîne(xChaîneRes, 1)-Val("218"))
     
    FEN_test..Y = (36)
    FEN_test..X = (LIB_SansNom1)
    Ma nouvelle erreur est : L'opération '-' est interdite entre un élément de type 'chaîne ANSI' et un élément de type 'entier sur 8 octets'.

    amicalement

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Visiblement, vous devriez revoir les notions "d'entier" et de "chaîne" ... pour pouvoir appliquer de manière adéquate le conseil de tatayo .

    Hemgé

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Je viens de relire ton code...
    Tu fais donc un ExtraitChaine() sur un entier (alors que cette fonction attend une chaine...), et ensuite tu fais une soustraction entre le résultat et un entier.
    Comme WinDev t'indique que c'est interdit, tu remplaces l'entier par une conversion de chaine... vers un entier.
    A ton avis, que renvoie ExtraitChaine() ?
    Et d'ailleurs, que renvoie SysRésolutionEcran() ? D'après l'aide en ligne, une chaine (4 valeurs séparées par des RC), que tu affectes à un numérique.

    Tatayo.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonjour

    Pour se qui est de SysRésolutionEcran(), j'ai besoin que de la première valeur je cherche juste la largeur.

    Si je fait juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xChaîneRes est un numérique
    xChaîneRes = SysRésolutionEcran()
     
    LIB_SansNom1=(ExtraitChaîne(xChaîneRes, 1))
    LIB_SansNom1 me trouve bien ma largeur qui est de 1366 c'est bien un numérique c'est cela que je comprend pas.
    C'est juste quand je rajoute la soustraction que j'ai une erreur.

    J'ai beau regarder l'aide pour SysRésolutionEcran() je trouve toujours la même chose.

    J'ai essayer avec 3 libellés le premier ma largeur, le second le 218 et le troisième qui m'indique le premier moins le second mais même erreur.

    La je planche vraiment. A part la fonction val() qui correspond un peu je vois pas.

    amicaleent

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Si tu regardes bien l'aide en ligne de la fonction SysRésolutionEcran(), te verras qu'elle renvoie une chaine.
    Si tu fais de même avec ExtraitChaine(), tu verras la même chose.

    Donc pour résumer ton code, tu affectes le retour de SysRésolutionEcran() (qui est un ensemble de chaines séparées par des RC) à un entier, ensuite tu utilises ExtraitChaine() sur cet entier (alors que cette fonction attend une chaine en paramètre), et tu tentes de soustraire à la valeur renvoyée (qui est aussi une chaine) un entier.
    Comme WinDev indique qu'il ne peut pas faire une soustraction entre une chaine et un entier (c'est logique), tu remplaces... cet entier par un val() d'une chaine... ce qui est bien moins logique.

    Quand à cette ligne:
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xChaîneRes est un numérique
    Je dira qu'elle pique les yeux... xChaineRes est un numérique...

    Tu ne vois vraiment pas ce qu'il faut faire ?
    SysRésolutionEcran() renvoie une chaine, traite donc le retour comme une chaine, extrait la valeur que tu veux garder, convertis la en entier, et là tu peux faire les calculs que tu souhaites. Il faut bien faire la différence entre ""1366[rc]768" qui est une chaine, "1366" qui est aussi une chaine et 1366 qui est un entier.

    D'ailleurs, je pestes "un peu" contre WinDev qui autorise l'affectation de "1366[rc]738" à un entier sans sourciller. Par moment le typage fort a du bon.

    Tatayo.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Oui erreur avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xChaîneRes est une chaîne
    Je viens de trouver se que je cherche a faire en changeant tous avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LIB_SansNom1=  SysXRes()-218
     
    FEN_test..Y = (36)
    FEN_test..X = LIB_SansNom1
    Merci a ceux qui mon mit sur la voie.

    amicalement

  9. #9
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par squall049 Voir le message
    Merci a ceux qui mon mit sur la voie.
    Rectifions plutôt en
    Merci a ceux qui mon mit vainement tenté de me mettre sur la voie.
    parce que vous n'avez rien compris et rien appris.

    Décidément !

    Je vous ai renvoyé à vos bases : différence entre un Entier et une Chaîne.
    tatayo vous a encore fait la fleur de deux messages didactiques.
    Mais vous ne lisez toujours pas les réponses.
    Vous avez désespérément cherché à faire fonctionner votre "truc", point barre.
    Vous avez trouvé une échappatoire qui est correcte et qui fonctionne, mais sans que vous sachiez pourquoi.

    C'est dommage

    Hemgé

  10. #10
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    274
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 274
    Points : 248
    Points
    248
    Par défaut
    Il faudrait ouvrir une section du code (qui marche) le plus dégueulasse !

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonjour à tous

    Oui Hemgé je le reconnais bien pour ce qui est du code qui fonctionne. Je n'ai pas du tous manquer de respect à qui que se sois.

    Vous avez trouvé une échappatoire qui est correcte et qui fonctionne, mais sans que vous sachiez pourquoi.
    Certes je connais très mal Windev et je ne le cache pas. Mon problème sur cette question, fut l'entier. Vue que j'e trouvais 1366, javais mon entier pour moi, donc je comprenais pas pour la chaîne.

    Je tenais juste à dire merci à ceux qui ont essayer de m'aider même si je suis pas rester sur la voie de la demande, et non partir comme sa j'ai une réponse favorable et plus personnes entend parler de moi c'est juste du respect.

    Donc même si Hemgé m'a repris sur ma phrase merci comme même à lui et à tatayo pour leurs temps qu'ils m'ont accordé et désolé de pas avoir suivi leur chemin.

    Amicalement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/11/2009, 15h46
  2. [Dates] Calcul entre 2 dates
    Par Smash34 dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 12h20
  3. [Oracle8] calcul entre 2 dates
    Par bobunny dans le forum Oracle
    Réponses: 7
    Dernier message: 28/10/2005, 12h18
  4. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 13h17
  5. calcul entre 2 champs time
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/02/2003, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo