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

Delphi Discussion :

[ESS-Model] syntaxe étrange pour moi !


Sujet :

Delphi

  1. #1
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 739
    Points : 928
    Points
    928
    Par défaut [ESS-Model] syntaxe étrange pour moi !
    Bonjour,

    J'ai récupéré les sources de ESS Model depuis: https://essmodel.sourceforge.net/ car j'ai envie de les remettre au gout du jour (voir de le migrer sous Firemonkey).

    A la première compilation, je tombe sur une syntaxe étrange pour moi dans le fichier uModel.pas !
    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
     
    interface
     
    type
      function AllClassesPackage : TAbstractPackage;
     
    implementation
     
    //Unique Flag-instance, if Integrator.CurrentEntity=AllClassesPackage then show all classes
    function AllClassesPackage : TAbstractPackage;
    const
      _AllClassesPackage : TAbstractPackage = nil;
    begin
      if _AllClassesPackage=nil then
        _AllClassesPackage := TAbstractPackage.Create(nil);
      Result := _AllClassesPackage;
    end;
    Je ne connaissait pas ce type de syntaxe est visiblement les dernières versions de Delphi, non plus !

    J'ai testé ceci mais, j'ai l'impression que cela ne réagit pas comme la solution l'attends !
    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
     
    interface
     
    type
      function AllClassesPackage : TAbstractPackage;
     
    implementation
     
    var
    _AllClassesPackage: TAbstractPackage = nil;
     
    //Unique Flag-instance, if Integrator.CurrentEntity=AllClassesPackage then show all classes
    function AllClassesPackage: TAbstractPackage;
    begin
      if _AllClassesPackage = nil then
        _AllClassesPackage := TAbstractPackage.Create(nil);
     
      Result := _AllClassesPackage;
    end;

    Ce qui fait que je me demande par quoi la remplacer pour garder la logique sous-jacente, auriez-vous une idée ?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 368
    Points : 24 654
    Points
    24 654
    Par défaut
    une const locale modifiable pour faire un singleton, n'importe quoi, c'est tellement vilain cette façon de faire !
    surement {$WRITEABLECONST ON} et dans le fichier DOF on voit "J=1" donc {$J+} qui fait fonctionner ce code.

    La variable n'est jamais libérée non plus ... pas besoin d'aller plus loin, si tout le code a cette philosophie, tu n'as rien à apprendre de bon dedans, tu vas suivre une logique tordue sans la comprendre, il y a de bonnes choses mais aussi des mauvaises (destructeur mal écrit pour certains)

    Cherche Singleton sur le forum, il y a un article complet avec différentes approches selon la version de Delphi

    même le "type" dans interface n'a pas sa place mais c'est parce que tu as copier-merder ici à cause d'une indentation erronée dans le code d'origine.
    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 éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 739
    Points : 928
    Points
    928
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    même le "type" dans interface n'a pas sa place mais c'est parce que tu as copier-merder ici à cause d'une indentation erronée dans le code d'origine.
    Merci du retour, mais je n'ai pas compris ton propos sur le "copier-merder" ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 368
    Points : 24 654
    Points
    24 654
    Par défaut
    copier-merder c'est un copier-coller raté, tout simplement
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    14 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14 958
    Points : 40 776
    Points
    40 776
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par der§en;11985877 j'ai envie de les remettre au gout du jour ([I
    voir de le migrer sous Firemonkey[/I]).
    Gros challenge
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 739
    Points : 928
    Points
    928
    Par défaut
    Ok, en quoi, j’ai copier-Merder ?

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 368
    Points : 24 654
    Points
    24 654
    Par défaut
    Citation Envoyé par der§en Voir le message
    Ok, en quoi, j’ai copier-Merder ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type
      function AllClassesPackage : TAbstractPackage;
    ben type n'a rien à faire avant function dans ce cas là, c'est une mauvaise indentation du code qui fait penser que c'est utile mais c'est syntaxiquement c'est faux de réduire le code ainsi à partir du code source original.
    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

Discussions similaires

  1. syntaxe pour une range assez complexe ( enfin pour moi quoi)
    Par kyros21 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/01/2012, 16h30
  2. Requête un peu trop compliqué pour moi
    Par Kokito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2005, 16h17
  3. Réponses: 1
    Dernier message: 02/02/2005, 20h34
  4. [casse-tete (pour moi)] recuperer la largeur d'un <div>
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 05/11/2004, 08h39
  5. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 12h39

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