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

Lazarus Pascal Discussion :

Procédure appelée mais non exécutée


Sujet :

Lazarus Pascal

  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 102
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 102
    Par défaut Procédure appelée mais non exécutée
    EDIT : changement de titre, car pas clair
    Re-bonjour,

    Toujours dans mon histoire de polices dans Lazarus/version/examples/fontenum/, dans la procedure LoadFontList, je trouve
    EnumFontFamiliesEX(DC, @lf, @EnumFontsNoDups, ptrint(L), 0);et comme je suis curieux, je mets la souris sur EnumFontFamiliesEX et je fais Ctrl-Clic, ce qui m'envoie dans intfbasewinapi.inc, ligne 93, où je continue avec Clic droit sur EnumFontFamiliesEX puis
    Chercher / Aller à la procedure EnumFontFamiliesEX et là, stupéfaction !, je découvre cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function TWidgetSet.EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont;
      Callback: FontEnumExProc; Lparam: LParam; Flags: dword): longint;
    begin
      DebugLn('EnumFontFamiliesEx is not yet implemented for this widgetset');
      Result := 0;
    end;
    Stupéfaction parce qu'après avec activé le debug, cette ligne, je ne la vois pas quand je lance le binaire en ligne de commande.

    Une idée ?

  2. #2
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ici c'est la base abstraite de la fonction dans le widget. C'est sa définition.
    Elle sera réécrite et surchargée par les enfants du composant TWidgetSet.

    Tu ne vois rien dans les log car justement tu ne dois pas, sinon il y aurait un sérieux problème.
    Le "debug" ici tu le devrais le voir quand tu compiles la LCL avec le mode debug et en ligne de commande.

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 102
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 102
    Par défaut
    Salut Jérôme,

    merci de ta réponse.
    Alors j'ai donc creusé, oh, d'une manière toute simple, en me mettant dans le dossier .../lazarus/2.2.6 et là, une commande facile grep -r "EnumFontFamiliesEX" * dont le résultat est à tomber par terre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lcl/interfaces/win32/win32lclintf.inc:    EnumFontFamiliesEX(DC, @LF, @EnumFontsCallback, LPARAM(@Rec), 0);
    et c'est tout (j'ai éliminé les entrées du dossier examples/fontenum qui ne servent à rien ici).

    Donc avec mon Linux je suis sensé ne pas pouvoir utiliser cette fonction, c'est bien ça ? Mais pourtant le boulot est fait -- mal, pour Linux, et c'est pour ça que je voulais y aller voir...
    Ou la compilation lui change le nom ?
    Mais alors, comment trouver le code exécuté ?

    Citation Envoyé par BeanzMaster Voir le message
    Le "debug" ici tu devrais le voir quand tu compiles la LCL avec le mode debug et en ligne de commande.
    Je crains de ne pas savoir faire (et pas envie de chercher, fait vraiment trop chaud), cependant, j'ai eu une intuition, qui a payé :
    Point d'arrêt sur la première ligne EnumFontFamiliesEx puis F7 envoie sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont;
      Callback: FontEnumExProc; LParam: Lparam; flags: dword): longint;
    begin
      Result := WidgetSet.EnumFontFamiliesEx(DC, lpLogFont, Callback, LParam, flags);
    end;
    et un autre F7 envoie dans gtk2winapi.inc,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (ligne 3337) function TGtk2WidgetSet.EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont;
      Callback: FontEnumExProc; Lparam: LParam; Flags: dword): longint;
    qui contient 4 sous-fonctions : Gtk2GetFontFamilies, Gtk2GetFontFamiliesDefault, GetStyleAt et FillLogFontA, et se termine ligne 3590, soit 250 lignes

    Plus qu'à étudier tout ça, et à comparer avec Windows 7 où la même fonction n'affiche que 22 lignes...

    J'ai déjà repéré que c'est LoadFamilyFonts qui remplit la listbox lbFamily mais alors, à quoi sert LoadFontList et son
    lbFamily.Items.Assign(L [qui est une stringlist remplie par EnumFontFamiliesEx]) ?
    À suivre...
    Et merci à toi.

Discussions similaires

  1. Procédure stockée : code après le END quand même exécuté ?
    Par Kropernic dans le forum Développement
    Réponses: 3
    Dernier message: 08/04/2020, 17h56
  2. Réponses: 0
    Dernier message: 13/12/2013, 11h10
  3. Jquery is not defined mais cela fonctionne quand même
    Par Tendhor57 dans le forum jQuery
    Réponses: 9
    Dernier message: 08/08/2013, 12h11
  4. Réponses: 2
    Dernier message: 22/03/2012, 12h24
  5. [MySQL] mysql_fetch_array renvoi une erreur mais fonctionne quand même
    Par nightcyborg dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/09/2009, 11h46

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