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 :

Correction code Delphi [Débutant(e)]


Sujet :

Delphi

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut Correction code Delphi
    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
    65
    66
    67
    68
    69
    70
    71
    72
    unit Form1_; 
     
    interface 
     
    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls, ComCtrls, ImgList, ToolWin, ExtCtrls, CheckLst, Menus, 
    ActiveX, Buttons, VBto_Converter; 
     
     
    type 
    TForm1 = class(TForm) 
    iblSaisie:	TLabel; 
    TxtSaisie:	TEdit; 
    cmdCalculer:	TButton; 
    mMainMenu1:	TMainMenu; 
    frmexercice03:	TMenuItem; 
     
    procedure cmdCalculerClick(Sender: TObject); 
    procedure cmdQuitter_Click(); 
    procedure TxtSaisieKeyPress(Sender: TObject; var Key: char); 
     
    private 
    { Private declarations } 
     
    public 
    { Public declarations } 
    end; 
     
    var 
    Form1: TForm1; 
     
    implementation 
     
    {$R *.dfm} 
     
     
    //=============================================== 
    ========== 
    procedure TForm1.cmdCalculerClick(Sender: TObject); 
    var 
    n, Somme: Double; 
    begin 
    //{$DEFINE def_cmdCalculer_Click} 
    {$IF Defined(def_cmdCalculer_Click)} 
    n := Val(TxtSaisie.Text); 
    Somme := n*(n+1)/2; 
    TxtAffichage.Text := 'La somme est '+FloatToStr(Somme); 
    {$IFEND} // def_cmdCalculer_Click 
    end; 
     
    procedure TForm1.cmdQuitter_Click(); 
    begin 
    //{$DEFINE def_cmdQuitter_Click} 
    {$IF Defined(def_cmdQuitter_Click)} 
    Application.Terminate(); 
    {$IFEND} // def_cmdQuitter_Click 
    end; 
     
    procedure TForm1.TxtSaisieKeyPress(Sender: TObject; var Key: char); 
    begin 
    //{$DEFINE def_TxtSaisie_KeyPress} 
    {$IF Defined(def_TxtSaisie_KeyPress)} 
    // Autorise seulement la saisie de chiffres 
    if KeyAscii<48 or KeyAscii>57 then begin 
    KeyAscii := 0; 
    Beep(); 
    end; 
    {$IFEND} // def_TxtSaisie_KeyPress 
    end; 
     
     
    end.

    Ce programme calcule le nombre d'entier entre 1 et le chiffre que tu rentres par exemple 100.


    n, Somme: Double;

    là il me dit la variable n est déclarée mains jamais utilisée dans Tform1.cmdcalculClick

    idem pour la variable somme

    Quelqu'un pourrait il me dire où mon code cloche ? c'est un petit truc de débutant je veux juste un peu d'aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 51
    Points : 60
    Points
    60
    Par défaut
    Salut,

    Tu utilises dans tes méthodes des directives "$IF DEFINED" (j'ai pas trop saisi pourquoi, mais bon).

    Par contre, sur ta méthode cmdCalculerClick, la directive est mise après la déclaration des variables.

    Dans la mesure ou ton $DEFINE est mis en commentaire, lors de la compilation, tout le code compris entre ton $IF Defined et le $ENDIF doit être exclu par le compilateur.
    Il se retrouve donc avec deux variables non utilisées d'où ton message.

    Pour ne plus l'avoir :
    - retirer les commentaires du $DEFINE
    - encadrer toute ta procédure et sa déclaration par les {$IF DEFINED


    Sinon pour déterminer si la valeur testée est un entier, regarde du côté de la méthode mod http://docwiki.embarcadero.com/RADSt...s_%28Delphi%29, cela sera plus simple.


    Bon courage

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut
    A la base il s'agit d'un code VB6 que j'ai essayé de traduire mais cela me semble hasardeux

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut


    Tu as un problème KeyAscii n'existe pas ! il faut utiliser Key !
    Ce programme calcule le nombre d'entier entre 1 et le chiffre n
    Euh, le nombre d'entier entre 1 et n, borne non incluse ,c'est n-1 ... Tu voulais dire la SOMME (Σ sigma) de tout les nombres entiers de 1 à n

    le code VB6 devait être fort étrange !
    Commence par les choses simples, ton code peut se simplifier en :

    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
    procedure TForm1.cmdCalculerClick(Sender: TObject); 
    var 
      n, Somme: Double; 
    begin 
      n := StrToFloat(TxtSaisie.Text); 
      Somme := n*(n+1)/2; 
      TxtAffichage.Text := 'La somme est '+ FloatToStr(Somme); 
    end; 
     
    procedure TForm1.cmdQuitter_Click(); 
    begin 
      Close();
    end; 
     
    procedure TForm1.TxtSaisieKeyPress(Sender: TObject; var Key: char); 
    begin 
      if (Key < '0') or (Key > '9') then
      begin 
        Key := 0; 
        Beep(); 
      end; 
    end;
    Ensuite, si ton Delphi est assez récent, le TEdit fourni une propriété NumbersOnly qui remplace le OnKeyPress
    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
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut
    Merci mon Delphi n'est pas récent c'est un Delphi 7 en fait , et sinon peut il être intéressant de faire du Lazarus qui lui à l'avantage d'être multi plate-forme d'autant plus que je suis surtout utilisateur de mac à la base ?

    Voici ce qu'atait le code VB6:

    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
    Private Sub cmdCalculer_Click()
    Dim n, Somme
    n = Val(TxtSaisie.Text)
    Somme = n * (n + 1) / 2
    TxtAffichage.Text = "La somme est " & Somme
    End Sub
     
    Private Sub cmdQuitter_Click()
    End
    End Sub
     
     
    Private Sub txtSaisie_KeyPress(KeyAscii As Integer)
    'Autorise seulement la saisie de chiffres
    If KeyAscii < 48 Or KeyAscii > 57 Then
    KeyAscii = 0
    Beep
    End If
    End Sub

    En gros une procédure pour le calcul

    une autre pour quitter et une dernière qui empeche la saisie de caractères incorrects.


    TxtAffichage.Text := 'La somme est '+ FloatToStr(Somme);
    bon ça me donne droit à identificateur non déclaré . Je pense avoir une idée du problème mais je suis pas sur du tout

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Je suppose que tu as corrigé par toi même, il suffit de poser un second TEdit sur le Form1 et le renommer en TxtAffichage.

    sinon le fonctionne aussi en VB suffit de mettre [CODE=VB ].
    Je ne sais pas où tu es allez chercher les DEFINE ! Quelle drôle d'idée !

    Code VB : 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
    Private Sub cmdCalculer_Click()
    Dim n, Somme
    n = Val(TxtSaisie.Text)
    Somme = n * (n + 1) / 2
    TxtAffichage.Text = "La somme est " & Somme
    End Sub
     
    Private Sub cmdQuitter_Click()
    End
    End Sub
     
     
    Private Sub txtSaisie_KeyPress(KeyAscii As Integer)
    'Autorise seulement la saisie de chiffres
    If KeyAscii < 48 Or KeyAscii > 57 Then
    KeyAscii = 0
    Beep
    End If
    End Sub
    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

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut
    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 Form1_;
     
    interface
     
    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, ImgList, ToolWin, ExtCtrls, CheckLst, Menus,
      ActiveX, Buttons, VBto_Converter;
     
     
    type
      TForm1 = class(TForm)
        iblSaisie:	TLabel;
        TxtSaisie:	TEdit;
        TxtAffichage:	TEdit;
        cmdCalculer:	TButton;
        mMainMenu1:	TMainMenu;
        frmexercice03:	TMenuItem;
        procedure cmdCalculerClick(Sender: TObject);
        procedure cmdQuitter_Click();
     
     
      private
        { Private declarations }
     
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    	//=========================================================
     procedure TForm1.cmdCalculerClick(Sender: TObject);
    var
      n, Somme: Double;
    begin
      n := StrToFloat(TxtSaisie.Text);
      Somme := n*(n+1)/2;
      TxtAffichage.Text := 'La somme est '+ FloatToStr(Somme);
    end; 
     
    procedure TForm1.cmdQuitter_Click();
    begin 
      Close();
    end; 
     
    procedure TForm1.TxtSaisieKeyPress(Sender: TObject; var Key: char);
    begin
      if (Key < '0') or (Key > '9') then
      begin
        Key := 0;
        Beep();
      end;
    end;
    Je ne vois pas où je merde mais ça cloche toujours

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu as retiré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TxtSaisieKeyPress(Sender: TObject; var Key: char);
    A mon avis tu as perdu le lien de l'évènement, tu as du avoir un message d'avertissement !

    Supprime la fonction TxtSaisieKeyPress de ton code !
    Va sur le TEdit, fait F11, va sur l'onglet Evènements, puis dans OnKeyPress, double-clic, cela va recréer TxtSaisieKeyPress, remet le code dedans !

    Tu devrais lire Guide Pascal et Delphi en particulier X. Découverte des composants les plus utilisés - 1ère partie
    Il te faut apprendre le langage et les manipulations de base de l'IDE !
    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

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Tu as retiré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TxtSaisieKeyPress(Sender: TObject; var Key: char);
    A mon avis tu as perdu le lien de l'évènement, tu as du avoir un message d'avertissement !

    Supprime la fonction TxtSaisieKeyPress de ton code !
    Va sur le TEdit, fait F11, va sur l'onglet Evènements, puis dans OnKeyPress, double-clic, cela va recréer TxtSaisieKeyPress, remet le code dedans !

    Tu devrais lire Guide Pascal et Delphi en particulier X. Découverte des composants les plus utilisés - 1ère partie
    Il te faut apprendre le langage et les manipulations de base de l'IDE !
    A mon avis tu as raison , j'ai un ouvrage sur Delphi 7 chez moi je pense qu'il me serait utile de m'y référer car là je galère pas mal malgré tous vos conseils.

Discussions similaires

  1. Convertion code Delphi.net vers C#
    Par RamDevTeam dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 31/03/2006, 21h08
  2. [D2006] Code delphi et c#
    Par the big ben 5 dans le forum Langage
    Réponses: 10
    Dernier message: 13/03/2006, 09h48
  3. requête suppression/correction code
    Par sarah67 dans le forum Access
    Réponses: 12
    Dernier message: 15/02/2006, 15h49
  4. code Delphi pour créer des sources ODBC
    Par lassad dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/10/2005, 11h18
  5. Portabilité de code Delphi
    Par ludovic tambour dans le forum EDI
    Réponses: 2
    Dernier message: 20/08/2005, 16h14

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