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 :

Existe-t-il un équivalent de : (test)?"Vrai":"Faux" du C en Pascal ? [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Existe-t-il un équivalent de : (test)?"Vrai":"Faux" du C en Pascal ?
    Bonjour,

    Savez-vous s'il existe en Pascal un équivalent à cette expression en C :
    (test)?"Vrai":"Faux"
    Merci,
    ZiP

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Je crois que cette fonction (qu'il faut écrire soi-même) répond à la question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    program Exemple;
     
    {$APPTYPE CONSOLE}
     
    function IIF(const b: boolean; const r1, r2: integer): integer;
    begin
      if b then result := r1 else result := r2;
    end;
     
    begin
      WriteLn(IIF(0>1, 1, 2)); // 2
      ReadLn;
    end.
    On peut s'inspirer de l'unité Delphi SJRDUsual.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    On peut écrire cette fonction de manière plus générique, si le temps d'exécution n'est pas primordial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function IIF(const Condition: Boolean; const TrueResult, FalseResult: Variant): Variant;
    begin
      if Condition then result := TrueResult else result := FalseResult;
    end;
    On peut aussi utiliser la fonction IfThen présente dans les unités Math et StrUtils
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // StrUtils
    Function IfThen(AValue: Boolean; const ATrue: string; const AFalse: string = ''): string; overload;
    // Maths
    function ifthen(val:boolean;const iftrue:integer; const iffalse:integer= 0) :integer; inline; overload;
    function ifthen(val:boolean;const iftrue:int64  ; const iffalse:int64 = 0)  :int64;   inline; overload;
    function ifthen(val:boolean;const iftrue:double ; const iffalse:double =0.0):double;  inline; overload;
    Les 3 dernières sont inline, donc rapides.
    Philippe.

  4. #4
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonsoir,

    La fonction IIF de Ph. B. correspond tout à fait à ce que je cherche !

    Merci,
    ZiP

  5. #5
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 926
    Points
    3 926
    Par défaut
    Attention, une fonction n'est pas un opérateur, dans le cas de l'opérateur de sélection (? : ), seule l'expression correspondant à la valeur du booléen est évaluée, alors que dans un appel de fonction, les deux expressions sont évaluées. C'est pas toujours génant mais cela peut être une source d'erreur à l'exécution, supposons que l'on ait un tableau dont l'indice le plus grand vaut MAX :

    ainsi
    plante si I>MAX alors que
    passe comme une lettre à la poste.

    cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/12/2005, 18h49
  2. Réponses: 3
    Dernier message: 18/10/2005, 01h39
  3. Existe-t-il un équivalent de terminal server pour Windows?
    Par kikica dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 27/08/2005, 18h09
  4. [T-SQL] existe-t-il un équivalent à EXIT ?
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/05/2005, 13h52
  5. Réponses: 1
    Dernier message: 17/01/2005, 16h33

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