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 :

Intégration d'une procedure


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 44
    Points
    44
    Par défaut Intégration d'une procedure
    bonsoir a tous,
    voilà débutant et bien débutant!!
    dans une doc d'apprentissage de delphi (de A.Sayer)
    je me retrouve betement bloqué!
    il me manque vraiment des bases.

    comme exercice il propose de faire une procedure pour transformer un "Integer" en Hexa.
    j'ai bien saisis la fonction j'ai essayé de l'installé dans une fiche mais il n'en veux pas!
    il se plante au niveau de la déclaration de la procédure
    msg du genre : unit1 ';' attendu mais '.' trouvé
    voici le code
    qu'est ce que je loupe?

    merci

    ps désolé mais les tabulations sont virées ici

    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 Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TEntierVersHexa = class(TForm)
        Label1: TLabel;
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      EntierVersHexa: TEntierVersHexa;
     
    implementation
     
    {$R *.dfm}
     procedure TForm1.EntierVersHexa( Nbr : integer );
    var i : integer;
        Quotient : integer;
        Reste : integer;
        H : string;
    begin
        H := '';
        for i := 1 to 4 do
        begin
            Quotient := Nbr div 16; { div effectue une division entière }
            Reste : =Nbr - Quotient * 16; { Reste vaut entre 0 et 15 }
            if Reste <= 10 then
                begin
                    H := chr(Reste + 48) + H; { Reste + 48 vaut entre 48 et 57 }
                end
            else
            begin
                H := chr(Reste + 55) + H; { Reste + 55 vaut entre 65 et 70 }
            end;
            Nbr := Quotient;
          end;
          Label1.Caption := H;
    end;
     
     
    end.

  2. #2
    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,
    Citation Envoyé par gaston11 Voir le message
    désolé mais les tabulations sont virées ici
    Il faut utiliser la balise [ code ] (cf. le bouton # lors de la saisie) !
    Citation Envoyé par gaston11 Voir le message
    j'ai bien saisis la fonction j'ai essayé de l'installé dans une fiche mais il n'en veux pas!
    il se plante au niveau de la déclaration de la procédure
    Votre procédure n'est pas déclarée dans la partie interface, plus exactement dans la description de la classe TEntierVersHexa.
    Et attention à la syntaxe des affectations, c'est := et pas : =
    Il faut écrire :
    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
    unit Unit1;
    
    interface
    
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;
    
    type
      TEntierVersHexa = class(TForm)
        Label1: TLabel;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure EntierVersHexa( Nbr : integer );
      end;
    
    var
      EntierVersHexa: TEntierVersHexa;
    
    implementation
    
    
    {$R *.dfm}
    
    procedure TEntierVersHexa.EntierVersHexa( Nbr : integer );
    var
      i : integer;
      Quotient : integer;
      Reste : integer;
      H : string;
    begin
      H := '';
      for i := 1 to 4 do
      begin
        Quotient := Nbr div 16; { div effectue une division entière }
        Reste := Nbr - Quotient * 16; { Reste vaut entre 0 et 15 }
        if Reste <= 10 then
        begin
          H := chr(Reste + 48) + H; { Reste + 48 vaut entre 48 et 57 }
        end
        else
        begin
          H := chr(Reste + 55) + H; { Reste + 55 vaut entre 65 et 70 }
        end;
        Nbr := Quotient;
      end;
      Label1.Caption := H;
    end;
    
    end.
    Philippe.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 42
    Points : 33
    Points
    33
    Par défaut
    Pas très logique surtout pour un tuto d'appeler une procédure et une Form avec le même nom, bonjour le basard pour retrouver ses petits là dedans.

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 44
    Points
    44
    Par défaut
    merci a vous pour votre aide,
    seule la procédure m’était fournie,
    je devais me débrouiller pour "l'essayer"

    voici le contexte de l'exercice...

    j'avoue que je suis perdu avec delphi, je n'ai pas encore réussi a tout saisir... donc j'ai essayé de créer un projet avec un bouton etc...
    bref il reste du pain sur la planche!
    ps, les affectation sont bien ":=" mais lors du copier/coller ca a du se transformer en ": ="

    voici l'exercice
    Nous allons créer une procédure qui aura pour rôle d'afficher, dans un Label, la valeur
    hexadécimale d'un nombre qui lui est passé comme paramètre. Appelons EntierVersHexa

    procedure TForm1.EntierVersHexa( Nbr : integer );
    var i : integer;
    Quotient : integer;
    *
    *
    *
    ../..
    end;

    " Pour tester cette procédure, vous pouvez l'appeler à partir d'une méthode Button1Click d'un
    bouton par exemple en tapant :
    EntierVersHexa( 3135 );
    Remarque : L'exercice ne présente qu'un intérêt pédagogique, en effet Delphi fournit une
    fonction nommée IntToHex qui fait la même conversion.
    bonsoir a tous

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 42
    Points : 33
    Points
    33
    Par défaut
    Avec bouton, il faut juste appeler la procédure ce qui donne :

    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
     
    unit Unit1;
     
    interface
     
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Label1: TLabel;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure EntierVersHexa( Nbr : integer );
      end;
     
    var
     Form1 : TForm;
     
    implementation
     
     
    {$R *.dfm}
     
    procedure TForm1.EntierVersHexa( Nbr : integer );
    var
      i : integer;
      Quotient : integer;
      Reste : integer;
      H : string;
    begin
      H := '';
      for i := 1 to 4 do
      begin
        Quotient := Nbr div 16; { div effectue une division entière }
        Reste := Nbr - Quotient * 16; { Reste vaut entre 0 et 15 }
            if Reste <= 10 then
               begin
                 H := chr(Reste + 48) + H; { Reste + 48 vaut entre 48 et 57 }
               end
               else
               begin
                 H := chr(Reste + 55) + H; { Reste + 55 vaut entre 65 et 70 }
               end;
      Nbr := Quotient;
      end;
      Label1.Caption := H;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    entiervershexa(236);
    end;
     
    end.
    Juste penser à mettre le bouton et le label dans la Form et ça roule. Moi je me rappelle avoir commencer avec juste une opération à faire entre 2 edit et afficher le résultat dans un label et un showmessage. C'est sympa comme exercice pour maîtriser les trucs de base surtout le inttostr et le strtoint qui servent très régulièrement.

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Reste := Nbr - Quotient * 16;
    Ou simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Reste := Nbr Mod 16;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44
  2. Execution d'une procedure avec TNotifyEvent;
    Par Chupakabra dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2003, 14h50
  3. Declaration Type ds une procedure
    Par Qwazerty dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2002, 09h09
  4. [TP]code asm dans une procedure
    Par M.Dlb dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 17/08/2002, 20h43
  5. Reprendre une procedure dans une autre ?
    Par Poisson Rouge dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2002, 22h51

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