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

IHM Discussion :

Crash de fonction


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 93
    Points : 90
    Points
    90
    Par défaut Crash de fonction
    Bonjour à tous,

    En exploitant le code fourni par STAREC, j'ai constaté qu'il pouvait se produire une erreur...
    http://www.developpez.net/forums/sho...d.php?t=369242

    Pour info je travaille avec access 2003. L'erreur constatée est la suivante:
    Clic sur le bouton ["] qui permet de faire apparaitre la palette de couleurs
    Clic sur [définir les couleurs personnalisées]
    Déplacement du curseur pour créer une jolie couleur
    Clic sur [ajouter aux couleurs personnalisées] pour ajouter cette nouvelle couleurs aux couleurs personnalisées
    Clic sur le pavé correspondant à la couleur ajoutée parmi les couleurs personnalisées
    Clic sur [OK]

    Sur mon poste, cela produit une erreur d'exécution 13 "incompatibilité de type" qui pointe sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
    Alors si quelqu'un a une bonne idée pour corriger cette erreur ou pour l'intercepter de façon efficace je suis preneur car je souhaite éviter toute faille permettant d'accéder au code de mon appli.

    D'avance merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour



    Je ne vois pas ce qui peut se passer, es-tu sûr que le code est complet, as tu fais un copie-coller ?

    Je suis sous 2003, et cela fonctionne correctement.

    Cette partie de code fonctionne (c'est l'utilisation d'une API) et il vient de la FAQ.

    Contrôle déjà s'il correspond point par point à ce que j'ai fourni.

    Starec

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 93
    Points : 90
    Points
    90
    Par défaut Chez moi il y a bug...
    Re-bonjour,

    Oui, j'ai copié collé tout (table, forms, modules) dans une bd vierge et quand je fais la manip telle que décrite ça plante.

    J'avais constaté le plantage après des modifs mais pour être sur que mes modifs n'étaient pas en cause, j'ai repris le code originel tel quel.

    Maintenant si ça ne plante pas sur ta config, je ne sais que penser sauf si des références sont necessaires.

    Merci de ta prompte réponse.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Je ne vois pas, je l'ai développé sous Access 2002, et il tourne sur Access 2003.

    Ton erreur dit que tu veux mettre des données dans un format qui n'est pas bon.

    Hors cela se fait dans les déclarations des variables, si tu as fait un copier coller, alors là ?

    Vérifie quand même les références.

    Starec

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Bjr,

    Il y a comme un soucis dans la FAQ, le code donné ne fonctionne pas tel quel.
    (je me base sur la FAQ, par sur l'appli de Starec que je ne peux pas ouvrir ici)

    Pour corriger, je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim Custcolor(16) As Long
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ' Tableau des couleurs personnalisées 
    '   (Static pour ne pas être perdu entre chaque appel de la fonction)
    Static CustomColors() As Byte
    ' Dimensionne pour 16 couleurs (4 byte par couleur)
    ReDim Preserve CustomColors(0 To 16 * 4 - 1) As Byte
    Ainsi on peut définir des couleurs personnalisées et elles sont conservées entre chaque appel de la fonction (parce que Static)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut Arkham

    Je me souvient maintenant, j'avais ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim CustomColors As Long
    Si tu veux voir le code qu'il y'a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
         '=======================================================================================
         ' Module      : mod_APICouleur - ListBoxColor - Crée le 26/06/2007 04:46
         ' Auteur      : Philippe JOCHMANS - STAREC
         ' Description : ce module va permettre de gérer la boite de gestion des couleurs (API)
         '               vous trouverez le code de cette API sur Developpez.com dans les sources
         '               du forum Access (code fourni par Tofalu)
         '=======================================================================================
    Option Compare Database
    Option Explicit
    ' ===== déclaration de l'API pour ouvrir la boite de sélection des couleurs =====
    Private Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
    Private Type CHOOSECOLOR
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        rgbResult As Long
        lpCustColors As String
        flags As Long
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End Type
    Public Function ShowColor(Handle As Long) As Long
        ' ===== cette fonction va permettre d'ouvrir la boite de sélection des couleurs, et de la récupérer =====
        Dim cc As CHOOSECOLOR
        Dim Custcolor(16) As Long
        Dim lReturn As Long
        Dim CustomColors As Long
     
        'set the structure size
        cc.lStructSize = Len(cc)
        'Set the owner
        cc.hwndOwner = Handle
        'set the custom colors (converted to Unicode)
        cc.lpCustColors = StrConv(CustomColors, vbUnicode)
        'no extra flags
        cc.flags = 0
        'Show the 'Select Color'-dialog
        If CHOOSECOLOR(cc) <> 0 Then
            ShowColor = cc.rgbResult
            CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
        Else
            ShowColor = -1
        End If
    End Function
    Et qui je le rappelle fonctionne correctement en 2002 et 2003

    Starec

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Ca plante quand tu définis des couleurs personnalisées, ce n'est pas un long qui est renvoyé par la fonction

    Remplace ta définition de CustomColors par la mienne, ça ira mieux

  8. #8
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 93
    Points : 90
    Points
    90
    Par défaut Bien vu Arkham !
    En corrigeant le code tel que tu le précises et en supprimant également:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim CustomColors As Long
    L'erreur constatée ne se produit plus. Je pense que l'erreur survient lorsque 16 couleurs personnalisées sont définies.

    Je ne cloture pas encore pour laisser STAREC se prononcer sur une modif de son code mais en ce qui me concerne pour ce qui me concerne, ta solution me convient.

    Par ailleurs j'ai relevé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' ===== on sauvegarde l'ensemble =====
        DoCmd.Close acForm, "sfm_Detail", acSaveYes
    qui devrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' ===== on sauvegarde l'ensemble =====
        DoCmd.Close acForm, "sfm_Defaut", acSaveYes

    Merci à tous pour vos sources.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Exact

    Il n'aime pas quand on enregistre une couleur presonnalisé (l'erreur ne se produit que dans ce cas), je vais voir pour faire la modif grâce à Arkham, je remettrais à jour ce soir ou demain.

    Merci

    Starec

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/05/2012, 13h55
  2. Réponses: 2
    Dernier message: 14/06/2010, 15h21
  3. Fonction RSA_print_fp crash sur Windows
    Par bkadoum dans le forum C
    Réponses: 3
    Dernier message: 29/01/2009, 11h58
  4. Réponses: 23
    Dernier message: 27/10/2006, 11h08
  5. attraper un crash dans une fonction d'une bibliothèque
    Par JeromeCJU dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 10/03/2006, 13h17

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