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 :

Affectation par défaut à un paramètre de type tableau [WD14]


Sujet :

WinDev

  1. #1
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut Affectation par défaut à un paramètre de type tableau
    Bonjour,

    Voilà j'ai une procédure que j'utilise dans plusieurs de mes programmes et qui évolue avec le temps. (Je vous dis ça car c'est pour dire que je ne vais pas reprendre tous mes programmes suite à cette modif).

    Ma procédure attendais au début en paramètre un Entier.
    Maintenant je lui passe aussi un tableau de chaine.

    Je sais qu'il au possible de mettre des valeurs par défaut à des paramètres ce qui à pour but de les rendres optionnel.

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Procédure calcul(a est entier, b est entier = 5)
    renvoyer a + b
    Si j'appel Calcul(2,8) j'obtient 10
    Si j'appel Calcul(2) j'obtient 7

    Je voudrais savoir si il est possible de faire de même avec une variable tableau
    et quel syntaxe utiliser afin d'avoir soit mon tableau passer en paramètre si j'en met un, soit un tableau vide si je ne met pas le paramètre.

    J'espère que je suis pas trop confus dans mes explications.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Peut-être quelquechose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Procedure MaProc(Param1 est un entier, Param2 est un tableau dynamique de chaine= [""])
    Tatayo.

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Salut à toi,

    En essayant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE proctab(montab est un tableau de 0 entiers)

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Merci LO² et TATAYO mais ça ne marche pas,

    Dans le cas
    montab est un tableau de 0 entiers
    le paramètre n'est plus optionnel

    et dans le cas
    Param2 est un tableau dynamique de chaine= [""]
    la syntaxe est fausse

    Afin de mieux m'aider voici les procédure que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailErreur(MessageErreur est une chaîne,NomThread est chaîne = "",TabPièceJointe est tableau de chaîne = Null)
    Cette procédure me permet l'envoie de mail en directe ou par un thread avec ou sans pièces jointes.

    Voici la procédure utiliser pour l'envoie par thread.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PROCEDURE ThreadMailErreur(Val_MessageErreur est une chaîne,TabListePièceJointe est tableau de chaîne = Null)
    SectionCritiqueDébut("MailErreur")
    NomThread est chaîne = "MailErreur" + HeureVersChaîne(HeureSys,"HHMMSSCC")
    TableauAjouteLigne (ListeThreadPerso,NomThread)
    ThreadMode(threadSectionCritique)
    ThreadExécute(NomThread,threadNormal,MailErreur,Val_MessageErreur,NomThread,TabListePièceJointe)
    SectionCritiqueFin("MailErreur")
    Donc mon but est de pourvoir faire ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThreadMailErreur(MessageErreurFormater,ListePièceJointe)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThreadMailErreur(MessageErreurFormater)
    ou encore en directe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailErreur(MessageErreurFormater,"",ListePièceJointe)

    Si j'utilise la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailErreur(MessageErreurFormater,"",ListePièceJointe)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailErreur(MessageErreurFormater)
    Pas de souci mais lors de l'appel par un thread j'ai ceci

    Vous avez appelé la fonction ThreadExécute.
    Le passage du paramètre 3 a provoqué une erreur.
    Un élément de type 'tableau' ne peut pas être passé en paramètre à une fenêtre non modale car il est forcément passé par adresse et le passage par adresse est interdit pour une fenêtre non modale.
    Je ne sais pas trop quoi faire.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Oups désolé, j'avais oublié la clause "optionnelle"... Il s'agit d'une bonne question en effet

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Dans ce cas, au lieu de passer une chaine et un tableau, pourquoi ne pas passer une structure, qui contient une chaine et un tableau dynamique ?
    J'ai ce genre de chose avec les procédures d'un WebService (parfois une structure qui contient un tableau de structure...), et ça fonctionne plutôt bien.

    Par contre tu n'échappes pas à une modification de ton code, mais pour cette fois seulement

    Tatayo.

  7. #7
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    J'y ai bien pensé.

    Mais ce que je ne comprend pas c'est pourquoi la syntaxe est bonne quand je lance ma procédure en direct mais pas quand je la passe par un thread ?
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Bonjour,

    Extrait de la doc de ThreadExecute :
    Attention ces paramètres sont passés par valeur (et non par adresse)
    Voilà pourquoi tu ne peux pas passer un tableau en paramètre!

    Par contre tu peux passer une chaine donc un tableau sérialisé (Tatayo doit rigoler en me voyant utiliser ce terme tant haï )
    TableauVersChaine et ChaineVersTableau m'ont bien aidé...

  9. #9
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour

    Et merci à vous tous.

    Je vais utiliser la syntaxe de Fucce (TableauVersChaine et inversement)
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/11/2010, 09h41
  2. Réponses: 3
    Dernier message: 09/01/2009, 14h04
  3. Valeur par défaut des paramètres d’une méthode
    Par three minute hero dans le forum BOUML
    Réponses: 6
    Dernier message: 29/06/2008, 23h04
  4. [Requete] Comment donner une valeur par défaut à un paramètre
    Par soforever dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 14/05/2007, 09h21
  5. ADO - Paramètres de type tableau
    Par npze dans le forum Bases de données
    Réponses: 10
    Dernier message: 19/10/2006, 14h40

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