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

Langage Delphi Discussion :

Erreur EPrivilege c'est quoi


Sujet :

Langage Delphi

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Erreur EPrivilege c'est quoi
    Bonjour,

    Lors de l'appel d'une fonction de DLL utilisée sans problème lors d'un précédent développement, j'obtiens dans un nouceau projet le message suivant :

    Le projet bidule a déclenché une classe d'exception EPrivilège avec le message "Privileged instruction". Pour moi c'est nouveau ! Pour quelle raison cette erreur ?

    Voici le code coupable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        BMP:= Tbitmap.Create;
        try
          BMP.PixelFormat:= pf24bit;
          PanelProgressBar.Visible:= true;
          BMP.LoadFromFile(ImgFileName);
          PeekGraphDLL_ColorFromSegment( BMP,
                                         ProgressBar,
                                         ShapeExlude.Brush.Color,
                                         Seg.SegVec[I]);
          Image2.Picture.Bitmap.Assign(BMP);
          PanelProgressBar.Visible:= false;
        finally
          BMP.Free;
        end;
    L'erreur se produit à l'appel de la fonction DLL

    Bonne journée ensoleillée à tous

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    C'est une erreur assez rare, la plus fréquente est la libération incorrecte d'un pointeur

    Passez du TBitmap, TProgressBar d'un Exe à une DLL est assez périlleux !
    Pour la progression, la mise en place d'un callback serait nettement plus propre !

    Qu'est que "Seg.SegVec[I]" ?

    Ajout un débogage dans PeekGraphDLL_ColorFromSegment, si tu en es l'auteur, avec Delphi tu peux déboguer les DLL, parfois il est un peu têtu donc tu peux utiliser un fichier texte comme log d'erreur !

    Il faut que tu trouves la ligne précise dans la DLL !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut La fonction DLL reconnait les pixels appartenant à un segment couleur
    "Seg.SegVec[I]" est le segment d'ordre I calculé précédemment sur l'image. Une image est sementée préalablement en une dizaines de couleurs, avec la fonction appelée le segment d'ordre I est détouré, tous les pixels qui n'appartennent pas à ce segment sont colorés par ColorExlude. J'ai moi-même développé la DLL. Cette fonction ne pose aucun problème dans un projet précédent, et je l'ai tracé lors de son exécution sans avoir noté la moindre erreur ! Par ailleurs si les paramètres passés à une DLL ne changent pas de dimension, il ne devrait pas y avoir de problème... La Bitmap et la ProgressBar ne varient pas en dimension.

    Pour mieux comprendre voici le détail des structures
    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
     
    TPeekSegment = record // sructure d'un segment couleur
        SegNo           :  Integer; // N° Du segment non classé par ordre %
        PerCent         :  byte; // arrondi du % du segment / surface image
        CIELchMax       :  TPeekLch; // Luminance, Chroma, Hue  Maxi du segment
        CIELchMin       :  TPeekLch; // Luminance, Chroma, Hue  Mini du segment
        CIELab          :  TPeekLab; // Valeur moyenne CIE L*a*b* du segment
        CIELCh          :  TPeekLCh; // Valeur moyenne CIE L*C*h° du segment
        RGBFloat        :  TPeekVector3float; // RGB exprimés en réel
        Color           :  TColor; // Couleur moyenne du segment
        Used            :  Boolean; // False si n'apparteint pas à objet (détourage)
        PixSize         :  Integer; // dimension du segment en pixel
      end;
     
      TPeekSegmentPtr = ^TPeekSegment;
     
      TPeekSegmentsCfg = record // Paramétrage et résultats segmentation
        SegVec      : array of TPeekSegment;// segmentation
        Degree      : Byte;// Degré d'initialisation de la segmentation
        Speed       : Byte;// Coefficient de vitesse de calcul
        Start       : Byte;// Pourcentage de début de prise en compte
        CustumOk    : Boolean;// Personnalisation des segments
        NbrCalcSeg  : Integer;// nombre de segments calculés
        NbrUsedSeg  : Integer;// nombre de segments utilisés
        RGBStep     : double; // pas des segments sur RGB en réel
        ImgFile     : TFileName;// fichier image
        InitOk      : Boolean; // a true lors de la première utilisation
      end;

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Tu n'utilise pas ShareMem ou FastShareMem dans tes autres projets ?
    Tu compile avec ou sans paquets ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. c'est quoi cet erreur? rt.jar?
    Par aroua dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 27/02/2008, 10h55
  2. c'est quoi cette erreur ?
    Par guitariste dans le forum C++
    Réponses: 4
    Dernier message: 26/12/2007, 20h42
  3. session_start erreur c'est quoi quoi le problème ?
    Par noobspower dans le forum Langage
    Réponses: 3
    Dernier message: 06/03/2007, 13h43
  4. Sujet : erreur '800a139a' C'est quoi?
    Par nickg dans le forum ASP
    Réponses: 24
    Dernier message: 29/10/2005, 17h26
  5. c'est quoi cette erreur??
    Par elekis dans le forum C++
    Réponses: 5
    Dernier message: 11/09/2005, 14h44

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