Objectif : Implantation sous forme d'une classe Delphi (TAD de liste de chaînes de caractères) héritant directement de la classe des listes internes de string "TStringList" de Delphi.
La fiche
principale, le code associé dans la unit
Exécuter
le programme
La fiche principale du projet :
interface de test de la classe
Remonter
Le code de la Unit fiche principale :
unit UListBaseHerite;
interface
Uses Classes,StdCtrls;
type
T0 = string;
liste =class(TstringList)
public
procedure
init_liste;
function
longueur : integer;
procedure
supprimer (k: integer);
procedure
inserer (k: integer; x: T0);
function
kieme (n: integer): T0;
function
Test (x: T0): boolean;
procedure
Rechercher (x: T0; var place: integer);
procedure
creationListe(Box:TListBox);
procedure
Ajouter(x:T0);
procedure
effacer;
private
function
Est_vide:boolean;
end;
implementation
{//////////////////////////////// INTERNE
///////////////////////////////}
Uses Dialogs;
procedure writeln(s:string);
begin
showmessage(S)
end;
{//////////////////////////////// PRIVATE
///////////////////////////////}
function liste.Est_vide:boolean;
begin
if not assigned(self) then
begin
writeln('>>> Gestionnaire de Liste: Liste non initialisée
!! (erreur fatale)');
halt
end
else
if self.count=0 then
Est_vide:=true
else Est_vide:=false
end;
{//////////////////////////////// PUBLIC /////////////////////////////}
procedure liste.init_liste;
{initialisation déjà effectuée
par le liste.Create
hérité du TstringList.Create}
begin
end;
function liste.longueur : integer;
begin
longueur := self.count
end;
procedure liste.supprimer (k: integer);
begin
self.Delete(k-1);
end;
procedure liste.inserer (k: integer; x: T0);
begin
self.Insert(k-1,x);
end;
function liste.kieme (n: integer): T0;
begin
kieme:=self.strings[n-1]
end;
function liste.Test (x: T0): boolean;
{teste la présence ou non de x dans
la liste L}
begin
if not self.Est_vide then
if self.IndexOf(x)=-1 then Test:=false
else Test:=true
end;
procedure liste.Rechercher (x: T0; var place: integer);
begin
if not self.Est_vide then
if self.IndexOf(x)=-1 then place:=0
else place:=self.IndexOf(x)+1
end;
procedure liste.creationListe(Box:TListBox);
{création de la liste L (le ListBox
est déjà chargé manuellement}
begin
self.AddStrings(Box.Items);
end;
procedure liste.Ajouter(x:T0);
begin
self.Add(x);
end;
procedure liste.effacer;
begin
self.clear
end;