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

Discussion: Ordre de résolution des paramètres [Lazarus]

  1. #1
    Candidat au Club
    Homme Profil pro
    métier
    Inscrit en
    mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mars 2019
    Messages : 2
    Points : 2
    Points
    2

    Par défaut Ordre de résolution des paramètres

    Bonjour,

    Lorsque je crée un TPoint à l'aide de Point(mafonction(), mafonction()),

    le premier appel a mafonction() est réalisé pour le second parametre.
    et le second appel pour le premier paramètre.

    code de test

    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
    46
    47
    48
    49
    50
    unit testunit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
         index : integer;
      public
         function nextindex : integer;
     
     
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
     
      resPoint : TPoint;
    begin
       index := 1;
       resPoint := Point(nextindex, nextindex);
     
       ShowMessage('x : ' + inttostr(resPoint.x) + ' y : ' + inttostr(resPoint.y)) ;
    end;
     
    function TForm1.nextindex: integer;
    begin
       index := index + 1;
       result := index;
    end;
     
    end.
    Resultat : x : 3 y : 2

    On pourrait s'attendre à ce que les paramètres soient résolus dans l'ordre.
    C'est un bug ou c'est voulu / connu / évident ?

    testé sous windows 7 et linux debian

    Merci

    Lazarus 1.8.4
    fpc 3.0.4

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

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

    Informations forums :
    Inscription : mars 2005
    Messages : 3 251
    Points : 9 354
    Points
    9 354
    Billets dans le blog
    5

    Par défaut

    Il y a des choses à lire ici : https://www.developpez.net/forums/d1...es-d-fonction/.
    Je n'ai pas réussi à trouver rapidement le référentiel qui permettrait d'avoir une certitude, mais je pense qu'il ne faut rien assumer.
    Les paramètres sont transmis dans 3 registres, puis sur la pile. Ceci est certainement la cause d'un ordre d'évaluation qui n'est pas celui de la lecture.
    Il ne faut pas perdre de vue non plus qu'il y a peut-être des options ou optimisations de compilation qui modifient ce comportement.
    Delphi 5 Pro - Delphi 10.2 Tokyo Community Edition - CodeTyphon 6.50 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 !

  3. #3
    Candidat au Club
    Homme Profil pro
    métier
    Inscrit en
    mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mars 2019
    Messages : 2
    Points : 2
    Points
    2

    Par défaut Ordre des paramètres

    Extra, le lien est parfaitement clair,

    Merci.

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

Discussions similaires

  1. [Axis] Ordre aléatoire des paramètres
    Par Chen norris dans le forum Services Web
    Réponses: 12
    Dernier message: 08/08/2011, 12h43
  2. Ordre d’évaluation des paramètres d'une fonction
    Par guillemouze dans le forum Langage
    Réponses: 9
    Dernier message: 17/02/2011, 16h13
  3. Réponses: 1
    Dernier message: 24/11/2009, 16h12
  4. Réponses: 1
    Dernier message: 17/05/2008, 23h44
  5. [JSP] Ordre de réception des paramètres
    Par toctof dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/03/2006, 17h11

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