Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Casting de TList [ Divers / Débutant(e) ] (Nicolas___)

mardi 26 août 2008 à 14:48:18 | Casting de TList

Nicolas___

Bonjour ,

Bon j'ai d'abord une premiere qestion : En delphi , est ce que TList est l'equivalent de Vector en Java
 (pour ceux qui connaissent )

c'est à dire que je peux faire des trucs genres :

var
 m : TObjectQuelconque;

for i:= 0 to 50 do begin
    m := TObjectQuelconque.Create(...);
    List.Add(m);
  end;

et m contient tts les occurrences de l'object m

pour Liberer il faut faire ceci (je pense) tt simplement

for i:=0 To List.Count do
   List(i).Free;

Le problème c'est que je n'arrive pas a faire 1 casting de ma TList , explication :

je veux inserer dans ma TList , par Exemple , un TChaise qui possède la propriété Valeur

donc je fais (j'épargne les variables genre i et co ) 
var
m : TChaise; //(Constructeur par Ex , Create(Valeur : integer ) )
MyListChaise : TList;
begin
 MyListChaise := TList.Create;

for i:=0 to 50 do begin
 m := TChaise.create(2000+Random(5000));
MyListChaise.add(m);  
end;

Mais qd je veux la lire en faisant

// une recherche débile , affiche les chaises de valeur inf a 3000
for i:=0 to MyListChaise.Count do begin
  if (MyListChaise(i).Value < 3000) then

(*
  Au fait faire MyListChaise(i) ou MyChaiseListe.Items(i) , c'est équivalent ?

*)
end;

Mais la problème , il ne connait pas la propriété Valeur (qui pourtant existe dans TChaise )
en java , on caste le Vecteur pour remedier à ce problème mais je ne trouve pas de solution en Delphi

Et je ne veux pas utiliser de Tableaux ...

Merci d'avoir lu et j'espere avoir été clair

Bonne journée

Nico

(j'ai mis dans Delphi/Divers/Débutants parce que c'est surement un truc très *** mais comme tt truc très *** ca fait tjs **** ; c'était l'instant politesse ;) )



mardi 26 août 2008 à 15:00:30 | Re : Casting de TList

cirec

Membre Club Administrateur CodeS-SourceS
Salut,

le TObjectList ne serrait il pas plus adapté à ton cas

 
@+
Cirec


mardi 26 août 2008 à 15:09:22 | Re : Casting de TList

Nicolas___

Salut
Oui surement mais ca ne change rien au problème que je décris
(ou alors je suis une buse )
 Merci

mardi 26 août 2008 à 15:32:24 | Re : Casting de TList

Nicolas___

je viens de trouver ca , connaissant le monsieur ca va surement tt m'expliqer
http://www.delphifr.com/codes/UTILISER-TOBJECTLIST_12266.aspx

Je demanderais quoi "si moi ya pas compris" ^^

mardi 26 août 2008 à 15:38:45 | Re : Casting de TList

Nicolas___

Au fait sinon Cirec , tu as compris qu'est ce qu'étais mon problème ?

mardi 26 août 2008 à 16:06:18 | Re : Casting de TList

shining

Réponse acceptée !

Salut,

Le composant TList n'est pas vraiment l'équivalent de la structure vector que l'on trouve en c++, enfin du moins pour sa partie complexe !!!

en revanche une liste de type TList ou bien même TObjectList est une liste de pointeurs et elle gère parfaitement l'ajout des classes puisque par définition une classe est un pointeur de type "record" (par exemple le fameux TMyObject = Object..., qui était la conception même du Pascal Object au temps du turbo pascal), certes une classe est un peu plus complexe qu'une simple structure record puisque elle permet le polymorphisme, héritage ect... masi on gardera en tête que c'est avant toute chose un pointeur !!!

Au fait faire MyListChaise(i) ou MyChaiseListe.Items(i) , c'est équivalent ?
-Réponse: Oui on peut tout à fait écrire l'un comme l'autre à l'exception toute fois !!! en delphi les indexes sont caractétisés par [] au lieu de () !!!.

Mais la problème , il ne connait pas la propriété Valeur (qui pourtant existe dans TChaise )
-Réponse: C'est tout à fait normal puisque une TList n'est qu'une liste de pointeur !!!, pour celà il faudra d'abord dire à Delphi quelle est la nature du pointeur auquel on désire avoir accèss !!, ici on parle de transtypage,

ce qui nous donne au final :

MyValue := TChaise(MyListChaise[i]).Value;

 

@+



Shining-Freeman


mardi 26 août 2008 à 16:10:00 | Re : Casting de TList

shining

Réponse acceptée !
euhh juste pour finir le composant TObjectList est en effet plus approprié car il permet la libération automatique des Objets(voir le lien de DelphiProg pour plus de détails), et biensûr auquel cas ça serait une liste de component TComponentList sera alors plus approprié !!

sur ce @+

Shining-Freeman

mardi 26 août 2008 à 16:15:55 | Re : Casting de TList

Nicolas___

MyValue := TChaise(MyListChaise[i]).Value; Mais oui que je suis , hum hum hum

Merci ! ;)

mardi 26 août 2008 à 17:04:17 | Re : Casting de TList

cirec

Membre Club Administrateur CodeS-SourceS
ah ben voilà ... de retour après la bataille ^^

Shining, que je salut au passe, a remarquablement répondu à tes questions

" Au fait sinon Cirec , tu as compris qu'est ce qu'étais mon problème ?"

ben je dois avouer que non, comme le choix se me semblait pas judicieux je n'ai pas réellement approfondi la suite de la question et du coup ton problème ne m'est apparu évident qu'après avoir lu les réponses de Shining

mais j'avais quand même une bonne piste de départ "TObjectList"


 
@+
Cirec


mardi 26 août 2008 à 17:16:10 | Re : Casting de TList

Nicolas___

ben oui ... dommage j'avais cru être clair mais c vrai que mon TList devait pas bcp t'aidé ;

Mais on pourrait le faire avec 1 TList , non ?


1 2

Cette discussion est classé dans : do, to, begin, tlist, mylistchaise


Répondre à ce message

Sujets en rapport avec ce message

TChart [ par yannba ] J'utilise un graphique avec une base de données :procedure CalculGraphique;var i,j:integer;    donnees : array [0..1000] of real;begin    With Form5.C garder plusieurs images en memoire [ par valkyrie ] Bonjourj aimerais garder en memoire plusieurs images en meme temps du genrej ai une fenetre avec 6 boutons d opendialogje rentre le nom de l image dan pus capable [ par Le Néophyte ] Salut j'essaie de faire un "minable" de petit programme, qui lorsqu'on pèse sur exécuter ça fera apparaître à l'écran (fenêtre dos)les nombres premier A nono40 [ par apz ] Salut,le code suivant me donne l'erreur suivante:Trop de parametres regionaux dans la fonction delete(s, pos(' ',s),1);je crois que le compilateur pou boucles iteratives imbriquées [ par gaston35 ] vari,j:integer;beginfor i:=4 to 7 do    for j:=2 to 4 do       if itableau[2,j] then ...........Pourquoi, lorsque  je vérifie, en plaçant un point d' Tchart Series [ par ryadus ] Si il y a par exemple 30 series,le probléme est que je ne sais pas comment utiliser for i:=1 to 30 do begin TLineSeries(FindComponent('series'+intt Ttreeview TADOQuery (delphi) avec une base SQL Serveur 2000 [ par le zedi ] Bonjours ,bonjours,Voila je dois utiliser ttreeview pour faire apparaitre en arborescence le nom de mes sites, batiments et articles qui sont stocké d Index d'un table Dbase [ par webazard ] Bonjour, je crée un base Dbase indiqué dans l'aide de delphi en remplacant ttparadox par ttdbase.en supprimant la construction d'index min prog marche Valeur in TList ? prob pointeur [ par Bruto ] Je voudrais déterminer si une string est contenue dans un obje TList mais le problème des pointeurs se posent. Voici mon code.Les objets TList ne me p StringGrid et Fichier text pour lire [ par ahmed12 ] oubadjSalut tout le mande Je veux savoir comment j' ouvrir le contenue d'un fichier texte dans un TstringGrid Ling par ling. Comme avec le memo , j'a


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.