Utilisateur anonyme
-
30 mai 2006 à 18:59
Utilisateur anonyme -
30 mai 2006 à 23:19
Bonjour;
j'utilise une liste (PlayList) de fichier (TFichier), et apres l'ajout d'elements, cest toujours le meme qui est present lors d'une consultation. Voyez donc ces extrait de codes pour voir s'ils sont bons :
Declarations : TFichier = class(TObject)
public
Nom : string;
Dossier : string;
Complet : string;
Info : FicMP3;
Tag : UnTag;
constructor init(enom: string ; echemin : string ; ecomplet : string);
end;
PlayList=class(TList)
public
nb_elem : integer;
nb_sel : integer;
procedure init();
procedure compiler();
function obtenir_elem_sel():TFichier;
function charger_chemin() : string;
procedure sauver_chemin(ad : string);
end;
Ajout:
procedure PlayList.compiler();
var
i,nb : integer;
Fich : TFichier;
begin
Media:=Media_Play.create();
nb:=0;
For i := 0 to Form1.Liste.items.Count-1 do begin
Fich.Nom := Form1.Liste.Items[i].Caption;
Fich.Dossier := Form1.Liste.Items[i].SubItems.Strings[0];
Fich.Complet:=Fich.Dossier + '\' + Fich.Nom;
nb:=nb+1;
LaList.add(Fich); //ou "add(Fich)";
end;
LaList.nb_elem := nb;
end;
Lecture
for i := 0 to nb_elem-1 do begin
fich := LaList.items[i];
x := fich.Nom; //==> Toujours le meme element!
end;
jace1975
Messages postés81Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention12 octobre 20071 30 mai 2006 à 22:50
plusieurs remarques en lisant ton code en diagonale (je viens juste voir si qqu'un a répondu à ma question):
<li>déjà réécrit le PlayList.compiler(); en rajoutant un paramètre dans l'appel de la procédure, car mettre form1 à l'intérieur ca va t'attirer des pbs tôt ou tard.</li>
<li>perso j'utilise, même s'il existe qques bugs, Tobjectlist plutot que Tlist.</li>
sur ton pb je pense qu'il faudrait plutot écrire un truc du genre(pas testé) :
Media:=Media_Play.create();
nb:=0;
For i := 0 to Form1.Liste.items.Count-1 do begin
fich:=tfichier.create();// on alloue l'espace mémoire pour chaque objet de ta liste
{extrait de la doc delphi a tobject.create
Create construit un objet. ....Le constructeur Create défini par TObject alloue de la mémoire mais n'initialise pas les données
alors que dans ton code tu alloue un seul objet }