Retour à la page d'accueil

Développement :
Développement sous Delphi

Auteur : Jean HENRI - Dernière mise à jour : 27 novembre 2003

Pour m'écrire

Une première application

Pour une fois, il ne s'agit pas de développer une application qui dit "bonjour" à la face du monde...

Cette application va permettre de solutionner un petit problème de maths amusant (?) : Comment décomposer un entier en une somme d'entiers qui se suivent ? Par exemple, 12 = 3 + 4 + 5

Sans entrer dans la démonstration mathématique, on utilisera une unité Pascal qui contient la procédure Décomposer définie comme suit :

procedure decomposer (Nombre : longword; var NbDebut, NbFin : longword)

où :

Si un entier ne peut pas être décomposé en somme, NbDebut et NbFin contiendront 0.

Le source de l'unité est téléchargeable ici : unité un_exomath.pas

Préparation du projet Delphi

Il faut d'abord créer un dossier pour sauvegarder tous les fichiers du projet. Si nous décidons que l'application s'appellera decomposition.exe, le dossier sera nommé : pj_decomposition

Dans ce dossier, nous plaçons un exemplaire de l'unité un_exomath.pas

Sous Delphi nous commençons un nouveau projet :

menu Fichier / commande Nouveau... / commande Application

que nous enregistrons immédiatement dans le dossier pj_decomposition par la commande :

menu Fichier / commande Tout enregistrer

Delphi nous demande d'enregistrer d'abord une unité (normalement, le nom par défaut est unit1.pas). Cette unité correspond à la fenêtre principale c'est à dire la seule pour cette première application. Nous appellerons cette fenêtre "principale" et nous nommons donc le fichier : un_principale.pas

Ensuite nous devons enregistrer le projet (normalement, le nom par défaut est project1.dpr). Puisque notre application devra s'appeler decomposition.exe, le projet doit porter comme nom : decomposition.dpr

Par la suite, nous pourrons sauvegarder le projet par la même séquence "menu Fichier / Tout enregistrer" sans qu'il soit nécessaire de redonner ces noms.

Création de l'interface (fenêtre)

Compte tenu du problème de math à résoudre, il faut :

  1. demander à l'utilisateur un nombre,
  2. calculer la décomposition
  3. afficher le premier entier de la somme et le dernier entier de la somme

Nous allons donc définir l'interface selon l'exemple suivant :

Le couple Label1/Edit1 servira à demander à l'utilisateur de saisir le nombre à décomposer

Le bouton Button1 permettra de déclencher le calcul de la décomposition (et l'affichage des résultats)

Le couple Label2/Edit2 servira à afficher le premier entier de la somme

Le couple Label3/Edit3 servira à afficher le dernier entier de la somme

Une fois les composants posés sur la fenêtre, il faut fixer un certain nombre des propriétés de chaque composant utilisé :

Composants
Propriétés
fenêtre form1

name : frm_principale

caption : Décomposer
width : 201
height : 221

borderstyle : bsSingle
borderIcons/biMaximize : false
position : poScreenCenter

étiquette label1

name : lb_NombreChoisi

caption : Saisissez un entier strictement positif

zone d'édition edit1

name : ed_NombreChoisi

text : 1

bouton Button1

name : bt_Decomposer

caption : Décomposer

étiquette label2

name : lb_NbDebut

caption : Début de la somme

zone d'édition edit2

name : ed_NbDebut

text :
readonly : true

étiquette label3

name : lb_NbFin

caption : Fin de la somme

zone d'édition edit3

name : ed_NbFin

text :
readonly : true

À ce stade, il est possible de tester l'interface en compilant le projet (menu Projet / Compiler décomposition) : aucune erreur, aucun avertissement, aucun conseil ne doivent être signalés. Si vous exécutez l'application (menu Exécuter / Exécuter), vous pourrez tout faire... sauf effectuer la décomposition !

Programmation du traitement

Le traitement consiste en l'exécution de la procédure Decomposer avec comme paramètre d'entrée la valeur saisie dans la zone d'édition ed_NombreChoisi. Au retour de la procédure, il faudra renseigner les zones d'édition ed_NbDebut et ed_NbFin.

Ajout de l'unité un_ExoMath au projet

Pour inclure l'unité dans le projet, nous utiliserons : menu Projet / Ajouter au projet... et nous choisirons un_ExoMath.pas

Pour pouvoir déclencher la procédure Decomposer au travers du bouton bt_Decomposer, il faut suivre les étapes suivantes :

  1. Sélectionner la fenêtre frm_principale ou l'unité associée un_principale.pas
  2. Menu Fichier / Utiliser l'unité...
  3. Choisir dans la liste l'unité un_exoMath.pas

Écriture du traitement à effectuer pour réaliser la décomposition

Effectuer un double-clic sur le bouton bt_Decomposer, ce qui a pour effet d'afficher le code suivant :

procedure Tfrm_principale.bt_DecomposerClick(Sender: TObject);
begin

end;

Il faut donc écrire dans cette procédure le code suivant :

procedure Tfrm_principale.bt_DecomposerClick(Sender: TObject);
var
  NombreChoisi,
  NbDebut,
  NbFin : longword;
begin
  NombreChoisi := strtoint (ed_NombreChoisi.Text);

  Decomposer (NombreChoisi, NbDebut, NbFin);

  ed_NbDebut.Text := inttostr (NbDebut);
  ed_NbFin.Text := inttostr (NbFin);
end;

La fonction strtoint convertit une chaine de caractères numériques en valeur numérique entière
La fonction inttostr convertit une valeur numérique entière en une chaine de caractères numériques

Cette première application est maintenant terminée : en compilant le projet puis en exécutant l'application, vous pourrez maintenant vérifier quelle est la décomposition d'un entier sous forme de somme.

Les fichiers sources de ce projet sont téléchargeables ici sous forme d'une archive : pj_decomposer.zip