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 :

Problème avec Helper : erreur "Illegal qualifier" [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Par défaut Problème avec Helper : erreur "Illegal qualifier"
    Bonjour,

    Je suis en train de me remettre au pascal avec Lazarus et le livre Object Pascal Handbook, j'en suis au code qui utilise les helpers et j'essaie donc le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Program Project1;
     
    {$modeswitch typehelpers}
    var
      N:Integer;
     
    Begin
      N:=10;
      WriteLn(N.ToString);
      readln;
    End.
    Et j'obtiens le message d'erreur suivant à la compilation:
    Compilation du projet - Cible : C:\Users\JENRAM~1\AppData\Local\Temp\project1.exe : Code de sortie 1 - Erreurs : 1
    project1.lpr(9,13) Error: Illegal qualifier
    J'ai été lire le post suivant :

    unite-va-simplifier-vie-typeshelpers

    Que voyez-vous d'incorrect? Je me doutais au départ qu'il y aurait un problème vu que lorsque je tapais le point l'éditeur ne me proposait aucune complétion.

    Merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Par défaut
    Rebonjour,

    J'ai vu mon erreur : j'ai oublié d'utilisé sysUtils!


  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par jenramac Voir le message
    ... ...
    Je ne vois absolument pas l'avantage d'utiliser les "helpers" dans ce cas car, dans l'unité "SysUtils" la fonction "ToString" fait appel à la fonction "IntToStr".

    L'exécution sera plus rapide en écrivant directement :

    Ce qui qui évite un appel supplémentaire de fonction.

    Cordialement.

    Pierre

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Je ne vois absolument pas l'avantage d'utiliser les "helpers" dans ce cas car, dans l'unité "SysUtils" la fonction "ToString" fait appel à la fonction "IntToStr".

    L'exécution sera plus rapide en écrivant directement :

    Ce qui qui évite un appel supplémentaire de fonction.

    Cordialement.

    Pierre
    Bonjour,

    Ce n'est pas pour utilisation mais simplement pour ajouter à ma besace et effectivement cela est moins efficace pour ce cas.

    Bonne journée.

  5. #5
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par jenramac Voir le message
    Bonjour,

    Ce n'est pas pour utilisation mais simplement pour ajouter à ma besace et effectivement cela est moins efficace pour ce cas.

    Bonne journée.
    C'est une bonne pratique. Pour autant, il serait intéressant d'analyser l'utilité d'un "helper" à chaque fois qu'on veut l'utiliser. Je suis surpris de voir intégré à une unité de Lazarus des "helpers" dont le seul but est de renommer une fonction, mais pour cela devoir passer par une fonction supplémentaire !!!

    Cordialement.

    Pierre

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 945
    Billets dans le blog
    6
    Par défaut
    Concernant cet intérêt, un argument qui m'avait été exposé dans la discussion citée résidait dans l'aide apportée par la complétion de code et l'inutilité de retenir un nom de fonction pas toujours évident (compliqué à retenir, ou dont on ne souvient jamais du sens, style ReplaceString, ReplaceStr, StrReplace ou StringReplace, etc.).
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    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
    Citation Envoyé par ChPr Voir le message
    C'est une bonne pratique. Pour autant, il serait intéressant d'analyser l'utilité d'un "helper" à chaque fois qu'on veut l'utiliser. Je suis surpris de voir intégré à une unité de Lazarus des "helpers" dont le seul but est de renommer une fonction, mais pour cela devoir passer par une fonction supplémentaire !!!

    Cordialement.

    Pierre
    Salut pour ma par maintenant j'ai du mal à me séparer de mon unité donnée en lien (que j'ai fait évoluer depuis). Je gagne un temps fou lors du codage (au lieu de me taper des inttostr et autre strto...) tu tapes le point et To et hop plus qu'a appuyer sur entrée.
    En plus l'avantage c'est la complétion du code, si tu ne te souvient plus du nom d'une fonction et dans quelle unité. Et comme le dis AndNotOr avec la déclaration INLINE c'est du tout cuit. Et même si si c'est un sous appel, la perte de performance sur ce genre de manipulation est minime voir nulle, le compilo fait plutôt bien son travail.

    A+

    Jérôme
    • "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

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 969
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 969
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Ce qui qui évite un appel supplémentaire de fonction.
    A contrôler sous Lazarus mais sous Delphi ces méthodes sont INLINE, il n'y a pas d'appel supplémentaire.

  9. #9
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    A contrôler sous Lazarus mais sous Delphi ces méthodes sont INLINE, il n'y a pas d'appel supplémentaire.
    Bonjour,

    Oui, elle est mise inline :

    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
    TIntegerHelper = Type Helper for Integer { for LongInt Type too }
      public
        const
          MaxValue = 2147483647;
          MinValue = -2147483648;
      Public
        Class Function Size: Integer; inline; static;
        Class Function ToString(const AValue: Integer): string; overload; inline; static;
        Class Function Parse(const AString: string): Integer; inline; static;
        Class Function TryParse(const AString: string; out AValue: Integer): Boolean; inline; static;
      Public
        Function ToBoolean: Boolean; inline;
        Function ToDouble: Double; inline;
        Function ToExtended: Extended; inline;
        Function ToHexString(const AMinDigits: Integer): string; overload; inline;
        Function ToHexString: string; overload; inline;
        Function ToSingle: Single; inline;
        Function ToString: string; overload; inline;
      end;
    Comme les autres d'ailleurs.

  10. #10
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    A contrôler sous Lazarus mais sous Delphi ces méthodes sont INLINE, il n'y a pas d'appel supplémentaire.
    C'est effectivement le cas avec Lazarus. Donc, pas d'influence sur le temps d'exécution.

    Voir quand même cet article.

    Cordialement.

    Pierre

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

Discussions similaires

  1. Problème avec une erreur de type [DCC Erreur]
    Par colorid dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2007, 21h04
  2. [vba] Problème avec MoveNext - Erreur de collection ?
    Par ancel17 dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/05/2007, 18h17
  3. Problème avec une erreur d'exception inconnue
    Par yoyo72 dans le forum Delphi
    Réponses: 5
    Dernier message: 09/08/2006, 12h52
  4. Problème avec l'erreur 3464 sur access
    Par somalien10 dans le forum Access
    Réponses: 10
    Dernier message: 16/05/2006, 10h30
  5. Problème avec sizeof(...) : erreur de taille
    Par Invité dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 06/05/2006, 13h53

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