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 :

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


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    métier
    Inscrit en
    Mars 2019
    Messages
    3
    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 : 3
    Points : 4
    Points
    4
    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 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    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 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 !

  3. #3
    Candidat au Club
    Homme Profil pro
    métier
    Inscrit en
    Mars 2019
    Messages
    3
    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 : 3
    Points : 4
    Points
    4
    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, 11h43
  2. Ordre d’évaluation des paramètres d'une fonction
    Par guillemouze dans le forum Langage
    Réponses: 9
    Dernier message: 17/02/2011, 15h13
  3. Réponses: 1
    Dernier message: 24/11/2009, 15h12
  4. Réponses: 1
    Dernier message: 17/05/2008, 22h44
  5. [JSP] Ordre de réception des paramètres
    Par toctof dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/03/2006, 16h11

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