Classes - Héritage ?

Résolu
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005 - 10 juil. 2005 à 14:43
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005 - 11 juil. 2005 à 16:00
Bonjour j'aurai aimer inclure cet objet ci :



type TCUEItem = class (TObject)

Artiste, Titre : String;

Index, Duree : TTime;

Procedure Add(Item:TCUEItem); overload;

Procedure Add(Artiste,titre:String;Index,Duree:TTime); overload;

Procedure Delete(Item:integer);

Procedure Exchange(Index1,Index2:integer);

Procedure Publish(Item:integer;var artiste,titre:string;var Index,Duree:TTime);

Function Count : integer;

end;



dans cet objet-ci :



type TCUEFile = class(TObject)

fichier, Artiste, Titre : String;

Pistes : array of TCUEItem; <--- ICI

// ### Procedures & Fonctions ###

...

end;



Jusque là pas de problème, ms c dans la suite ...

Je prend l'exemple de la procedure Count car c'est la plus parlante.



function TCUEItem.Count : integer;

begin

Result:=Length(???);

// Cherche la dimension de l'array.

// Comme dans une TListBox on peux savoir ne nombre d'items via :

// listbox1.items.count

end;



Est-ce que qqn a une suggestion ?

6 réponses

alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005
11 juil. 2005 à 10:00
D'acc mais mnt que j'y repense, vu que les procédures de TCUEItem
manipule un liste, ne serait-il pas mieux de les mettre dans TCUEFile ?

Mais dans ce cas TCUEItem ne serai plu qu'un enregistrement.



Alexis
3
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
11 juil. 2005 à 15:10
Oui, je pense que ce serai plus facile à gérer.
3
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
11 juil. 2005 à 03:33
En fait dans la listbox "Count" n'est pas une fonction mais une "Property".

Donc je pense que c'est une simple variable qui est incrémenté.

Remplace ton "function count:integer;" par "count: integer;"

Ensuite incrémente / décremente simplement ta variable.



Soit Variable: TCUEItem;

Ajoute un "Inc(Variable.Count);" quand tu ajoute un élément.

Ajoute un "Dec(Variable.Count);" quand tu retire un élément.

0
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005
11 juil. 2005 à 15:21
Entre temps j'ai eu le tps de finir mon unité.



http://w-x.no-ip.org/alexis2015/forum/viewtopic.php?p=3#3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
11 juil. 2005 à 15:37
Tu as écrit

i:=length(self.Pistes);


SetLength(self.Pistes,i+1);



Tu pourrai réutiliser ton "count" directement

SetLength(self.Pistes,self.Count+1);



Ensuite je vois ceci:


s:=String(azInteger);


...


if not l>0 then Result:=string(azInteger);



for i:=1 to l do



s:='0'+s;



Result:=s;




Or si tu ne rentre pas dans la boucle s vaut toujours String(azInteger).

Donc la ligne
"if not l>0 then Result:=string(azInteger);" n'est pas utile.(Fait un test)



A la place de


f:=TFileStream.Create(FileName,fmcreate or fmopenreadwrite,fmshareexclusive);




Tu peux directement faire un:


with TFileStream.Create(FileName,fmcreate or fmopenreadwrite,fmshareexclusive) do

begin

...


Write(s[1],length(s));


...

end;



Ca et fait une variable de moins, mais bon la je chipote.
0
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005
11 juil. 2005 à 16:00
Oui je pourrai faire toutes ces corrections ...

1) pour le self.count je suis d'acc mais c'est pour être sûr de prendre le bon TCUEFile.

2) pour la boucle je pourrai corrigier comme suis ...

if not l>0 then Result:= s

else for i:=1 to l do s: ='0'+s;

Result:=s;

3) pour le TFileStream, Vu que la variable est "f" c'est un peu inutile



mais merci des corrections
0