Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Débutant
Débutant Pour bien débuter avec Delphi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/12/2012, 21h08   #1
gaston11
Membre à l'essai
 
Homme armindo simao
Technicien maintenance
Inscription : novembre 2012
Messages : 50
Détails du profil
Informations personnelles :
Nom : Homme armindo simao
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 : 20
Points : 20
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 :
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.
gaston11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 22h08   #2
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 026
Points : 2 651
Points : 2 651
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
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 :
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.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 22h22   #3
yvonic2010
Membre à l'essai
 
Inscription : février 2008
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 39
Points : 20
Points : 20
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.
yvonic2010 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 23h52   #4
gaston11
Membre à l'essai
 
Homme armindo simao
Technicien maintenance
Inscription : novembre 2012
Messages : 50
Détails du profil
Informations personnelles :
Nom : Homme armindo simao
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 : 20
Points : 20
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
Citation:
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
gaston11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 11h28   #5
yvonic2010
Membre à l'essai
 
Inscription : février 2008
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 39
Points : 20
Points : 20
Avec bouton, il faut juste appeler la procédure ce qui donne :

Code :
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.
yvonic2010 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 11h34   #6
Rayek
Modérateur
 
Avatar de Rayek
 
Homme
Développeur informatique
Inscription : mars 2005
Messages : 4 991
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
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 : 4 991
Points : 7 729
Points : 7 729
Code :
1
2
 
Reste := Nbr - Quotient * 16;
Ou simplement

Code :
1
2
 
Reste := Nbr Mod 16;
__________________
Modérateur Delphi Combattez la brute
Aucune réponse aux sollicitations techniques par MP

Le guide du bon forumeur :__________
[Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3
Rayek est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h32.


 
 
 
 
Partenaires

Hébergement Web