begin process at 2010 02 10 08:35:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Casting de TList


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Casting de TList

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ée 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 exo sur les tableau pour les debutents [ par aom2009 ] ce programme c'est pour s'exercer sur les tableaux ecrit par aom2009 program tab_de_2dimension; uses crt; {itroduction For i :=0 to 3 do ! [ par Delphiturbo ] Salutou puis je ajouter und autre (begin, End) dans le Code ?procedure TForm1.FormCreate(Sender: TObject);var node: TTreeNode;I: Integer;data: PMyData Création d'edit en dynamique [ par k3ti0 ] Bonjour a tousje dois réaliser un interface graphique avec des edits en dynamique.Pour récuperer des valeurs dans une base de données.Mais j'arrive pa doute sur la boucle du Tant que [ par littlebonbon ] bonjour,J'aimerais un petit coup de main par raport a la notion du tant que.Je réalise un programme du jeu 421; dans mon programme je souhaite que le Txt2BMP ? [ par MiniProgramer ] Hij ai une Function de google mais il ya des problemes !?//-- TBitmap to String -----------------------function BmpToTxt(const ABitmap: TBitmap): stri l'algorithme du pivot total de gauss en delphi [ par etoilefilante21 ] aidez moi svp.j'ai un probleme avec mon algorithme je sais pas ou sa cloche mais les resultat sont faux.voila mon algorithme.bein je suis debutante do [HELP]Problème avec insertion ADOQuery [ par denden13h54 ] Bonjour, j'ai un gros problème d'insertion avec ADOQuery. J'insère ans une base de donnée MySQL. je vous montre le code qui bug : [code=pas]with ADO 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales