VI. Création et utilisation des unités▲
			Quand nous faisons un gros programme, il devient souvent difficile
			de maintenir le tout dans un meme fichier source. Il convient alors de le diviser en plusieurs fichiers facilement maniables afin de faciliter la maintenance et le suivi du projet.
			
			Il arrive souvent aussi, que nous devions coder un ensemble de fonctions qu'on aura à utiliser dans plusieurs projets, ou distribuer afin que d'autres les utilisent.
			
			Pour répondre à ces divers besoins, on utilise fréquemment en Pascal des unités.
			
Une unité est une liste de fonctions, de variables et de procédures traitant d'un même thème mises ensemble dans un fichier source. Et ces procédures et fonctions sont par la suite réutilisables dans d'autres programmes ou unités.		
			
VI-A. Théorie▲
Une unité sous MIDlet Pascal comprend trois parties :
- Interface
- Implémentation
- Initialisation
Dans l'interface, on définit l'entête des fonctions que d'autres programmes pourront utiliser. C'est dans la partie implémentation que ces fonctions seront déclarées entièrement avec leur code. On peut aussi déclarer dans les entêtes des fonctions qui n'ont pas été définies dans la partie implémentation. La dernière partie -initialisation- est réservée à l'initialisation des variables globales de l'unité.
Avec MIDlet Pascal, on ne peut définir qu'une unité par fichier, et le nom du fichier doit correspondre au nom de l'unité.
Format d'une unité sous MIDlet Pascal : PremierUnite.mpsrc
unit premierUnite;
interface
{ procedure et fonctions publiques }
implementation
{ codes des procedures et fonctions}
initialization
{ initializations des variables}
end.VI-B. Pratique▲
					Lancez MIDlet Pascal, et créez un nouveau projet. Nommons-le hello2. Allez dans le menu projet et choisissez « New source file ». Dans la boite de dialogue qui s'affiche, tapez le nom de l'unité « transform».
Nous allons transformer notre programme précédent en un programme principal et une unité.
Voyons le code de l'unité :
					
unit transform;
interface
	procedure animation; //affiche le texte defilant
	procedure setTexte(s : String); //definit le texte a faire defiler
implementation
var texte : String; //le texte a faire defiler
     dim : integer; // nombre de caractere a afficher
                    
procedure setTexte(s : String);
begin
 texte:=s;
end; 
        
      
//fait rotation des caractere d'une phrase
function rotation(tex: string) :string; 
 var c, d: char;
     i :integer; 
begin
c:=getChar(tex,0);
for i:=length(tex)-1 downto 0 do
 begin
  d:=getChar(tex,i);
  tex:=setChar(tex, c, i);
  c:=d;
 end;
rotation:=tex;
end; 
{cree l'effet de texte defilant et l'affiche} 
procedure animation; 
 
var rot, aux : string; 
    a, b : integer;
    
begin
  //on affiche le texte defilant 
  rot:=texte; 
  setColor(0, 0, 250);
  rot:=texte;
  //position du texte à l'ecran
  //on affiche le texte centre sur l'ecran
  b:=(getHeight div 2) - (getStringHeight(copy(rot,0, dim)) div 2);
  a:=(getWidth div 2) - (getStringWidth(copy(rot,0, dim)) div 2);
  
 repeat 
    setColor(50, 114, 184);
    aux:=copy(rot,0, dim);
    drawText(aux, a, b);    
    rot:=rotation(rot);
    repaint;
    delay(250);
    SetColor(255, 255, 255); 
    FillRect(a, b, getStringWidth(aux)+20, getStringHeight(aux)); 
  until GetKeyClicked <> KE_NONE; 
end; 
initialization
	
dim:=20; 
	
end.
Vous pouvez voir qu'il n'y a pas de modification importante par rapport au code précédent. Nous avons mis les deux fonctions setText() et animation() dans la partie interface.
Dans la partie implementation, nous avons défini le code de ces deux fonctions, et aussi d'autres fonctions comme rotation(), qui est utilisée par animation(), mais qui ne pourra etre appelée par un autre programme ou unité utilisant l'unité transform puisque son entête 
ne figure pas dans la partie Interface.
Dans la dernière partie, à savoir initialization, nous initialisons dim à 20, qui est le nombre de caractères à afficher sur l'écran. 
VI-C. Utilisation de l'unité par d'autres programmes ▲
			Pour utiliser l'unité dans un programme, il suffit d'ajouter après le nom du programme la clause uses suivie du nom de l'unité. Si vous voulez utiliser une unité depuis une autre unité, la clause « uses » doit être placée immédiatement après la clause « implementation ». 
			
			Une fois la déclaration faite, toutes les procédures et variables disponibles dans l'interface de l'unité peuvent être utilisées.		
			
Voyons le code du programme principal de notre programme utilisant l'unité transform.
program hello;
//appel de l'unite
uses tranform; 
BEGIN
setTexte(' hello world -- darrylsite -- developpez.com --');
animation;
	
END.Lorsque que plusieurs unités ont les mêmes noms pour des identificateurs, on peut précéder le nom de l'identificateur du nom de l'unité qui le contient, suivi d'un point. Et ceci est indispensable si on veut utiliser des variables, des types ou des constantes déclarées dans la partie interface d'une unité.
program hello;
//appel de l'unite
uses tranform; 
BEGIN
Transform.setTexte(' hello world -- darrylsite -- developpez.com --');
Transform.animation;
	
END.VI-D. Importation d'unités▲
Il nous arrive fréquemment de réutiliser des unités provenant d'autres projets. Avec certains compilateurs comme Turbo Pascal ou Free Pascal par exemple, il suffit de mettre l'unité dans le même dossier puis de lancer la compilation. Avec MIDlet Pascal, il faut créer une nouvelle unité dans le projet en cours, puis copier/coller le code de l'ancienne unité dans celle que vous venez de créer.








