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 :

Problème avec If


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 18
    Points
    18
    Par défaut Problème avec If
    Salut tout le monde

    Je suis entrain d'apprendre le langage, alors peut être que je n'utilise pas la bonne chose mais j'aimerais savoir pourquoi ce que je tente de faire ne fonctionne pas.

    Je sais pas pourquoi, je ne suis pas capable d'ajouter un autre IF dans le second code.


    Ce code fonctionne bien:

    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
    51
    52
    53
    54
    55
    56
    57
    58
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        editdoggy: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        doggycheck: TButton;
        test: TEdit;
        procedure doggycheckClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
      gy: string;
      robert: string;
      good: string;
      bissonnette: string;
      Bissonnette2: string;
      number: integer;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.doggycheckClick(Sender: TObject);
    begin
     
    gy := editdoggy.Text;
    test.text := gy;
    robert := 'robert';
    bissonnette := 'bissonnette';
    bissonnette2 := 'Bissonnettte';
     
    good := 'good';
     
     
    If gy = robert then
        begin
          messagedlg('Ton nom pas ton prenom', mtinformation, [mbok], 0);
         end else
         begin
         end;
     
    If gy = bissonnette then
    messagedlg('Un nom prend une majuscule au debut!', mtinformation, [mbok], 0);
    end;

    Le code que je veux avoir: (noter que je rajoute seulement un if de plus au premier code afficher en haut):

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        editdoggy: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        doggycheck: TButton;
        test: TEdit;
        procedure doggycheckClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      gy: string;
      robert: string;
      good: string;
      bissonnette: string;
      Bissonnette2: string;
      number: integer;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.doggycheckClick(Sender: TObject);
    begin
    
    gy := editdoggy.Text;
    test.text := gy;
    robert := 'robert';
    bissonnette := 'bissonnette';
    bissonnette2 := 'Bissonnettte';
    
    good := 'good';
    
    
    If gy = robert then
        begin
          messagedlg('Ton nom pas ton prenom', mtinformation, [mbok], 0);
         end else
         begin
         end;
    
    If gy = bissonnette then
    messagedlg('Un nom prend une majuscule au debut!', mtinformation, [mbok], 0);
    end;
    
    If gy = bissonnette2 then
    messagedlg('bravo!', mtinformation, [mbok], 0);
    end;


    Ce code ne fonctionne pas, voici l'erreur donné par turbodelphi:
    [Pascal Error] Unit1.pas(60): E2029 Declaration expected but 'IF' found
    [Pascal Error] Unit1.pas(62): E2029 '.' expected but ';' found
    [Pascal Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'

    J'arrive pas à comprendre quel est le problème. Merci de m'aider.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Yep !

    Ça foire parce que tu as un "end" de trop !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If gy = bissonnette then
    messagedlg('Un nom prend une majuscule au debut!', mtinformation, [mbok], 0);
    //end; // !
    Exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if condition
      then instruction;
     
    if condition then
    begin
      instruction1;
      instruction2;
    end;
    Au passage, "debut" prend un accent sur le "e", style "début", , et pareil pour prénom !
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      if gy = robert then
        MessageDlg('Ton nom pas ton prenom', mtInformation, [mbOk], 0);
      else if gy = bissonnette then
        MessageDlg('Un nom prend une majuscule au debut!', mtInformation, [mbOk], 0);
      else if gy = bissonnette2 then
        MessageDlg('bravo!', mtInformation, [mbOk], 0);
    @+ Claudius

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Yep !

    Ça foire parce que tu as un "end" de trop !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If gy = bissonnette then
    messagedlg('Un nom prend une majuscule au debut!', mtinformation, [mbok], 0);
    //end; // !
    Exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if condition
      then instruction;
     
    if condition then
    begin
      instruction1;
      instruction2;
    end;
    Au passage, "debut" prend un accent sur le "e", style "début", , et pareil pour prénom !
    --
    jp


    Merci de la réponse

    Le code fonctionne comme ceci:
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        editdoggy: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        doggycheck: TButton;
        test: TEdit;
        procedure doggycheckClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
      gy: string;
      robert: string;
      good: string;
      bissonnette: string;
      Bissonnette2: string;
      number: integer;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.doggycheckClick(Sender: TObject);
    begin
     
    gy := editdoggy.Text;
    test.text := gy;
    robert := 'robert';
    bissonnette := 'bissonnette';
    bissonnette2 := 'Bissonnettte';
     
    good := 'good';
     
     
    If gy = robert then
        begin
          messagedlg('Ton nom pas ton prenom', mtinformation, [mbok], 0);
         end else
         begin
         end;
     
    If gy = bissonnette then
    messagedlg('Un nom prend une majuscule au debut!', mtinformation, [mbok], 0);
     
    If gy = bissonnette2 then
    messagedlg('bravo!', mtinformation, [mbok], 0);
    end;
     
     
    end.
    Si je ne met pas de end; après le troisième IF, ça ne fonctionne pas. J'aimerais savoir pourquoi le second if ne prend pas de end; mais le premier et le deuxième en prend un?



    En passant, pour début, c'est parce que hier je n'était pas capable d'utiliser les accent de la langue française. Alors je me suis dis, je vais oublier les accent pour toute suite, il doit sûrement y avoir un autre messagedlg compatible avec les accents.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      if gy = robert then
        MessageDlg('Ton nom pas ton prenom', mtInformation, [mbOk], 0);
      else if gy = bissonnette then
        MessageDlg('Un nom prend une majuscule au debut!', mtInformation, [mbOk], 0);
      else if gy = bissonnette2 then
        MessageDlg('bravo!', mtInformation, [mbOk], 0);
    @+ Claudius

    Je n'avais pas encore appris else if. par contre, je savais pour else seul . Disons que les fichiers d'aide ne sont pas toujours cohérent!

    Merci de votre aide. Je vais utiliser else if dans le futur.

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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