Newsgroup: it.comp.lang.delphi
Titolo: TList o che altro componente usare?

Ho bisogno di un "contenitore" di oggetti tipo il TList. Deve permettermi di 
fare l'add di oggetti omogenei, per esempio tstreamemory.
Col Tlist pero' ogni volta che uso un item devo metterci il cast, accetta 
solo:
TStreamMemory(List[1]).Position.
mi chiedevo esiste qualche componente nel quale posso fornire il tipo di 
oggetto una sola volta evitando i cast negli Items?
Grazie, Giorgio 

 fare l'add di oggetti omogenei, per esempio tstreamemory. [...]
Potresti ereditare da *TCollectionItem* per gli elementi, e da 
*TCollection* per il "contenitore". :-)
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 ha scritto nel messaggio 
news:4422e91c$1...@newsgate.x-privat.org...


Ho bisogno di un "contenitore" di oggetti tipo il TList
Eredita da TCollection.

sono astratti e quindi come dici bisogna ereditare e implementare, [...]
...e per quale bizzarro motivo?... Le TCollection sono studiate
*apposta* per fare da contenitori di Items di un tipo a te conosciuto.
p.s.: quota correttamente.

 ha scritto nel messaggio
news:hkc622db9puun0ai9...@4ax.com...

C'e' un particolare pero': gli oggetti Items sono gia' creati e voglio solo
"inserirli" nell'oggetto "contenitore".
Stamane do un'occhiata ai TCollection, che non avendo ancora usato con
conosco piu' di tanto.
Grazie per le dritte, Giorgio

 "inserirli" nell'oggetto "contenitore".
E' sufficiente creali attraverso il metodo /Add/ della tua *TCollection* 
personalizzata.


    Marco.
Non posso crearli run-time in quanto ho anche collezioni di TImage con le
proprieta' gia' comodamente settate a design-time.
In questo sito ho trovato la tecnica per evitare i vari cast in un TList,
come cercavo:
http://www.atug.com/andypatterns/collections.htm
Ciao, Giorgio


Ti prego in ginocchio, quota in modo decente.
E' una questione di educazuine verso gli altri.
-- 
Ore 18.30: premo invio.

 
http://www.atug.com/andypatterns/collections.htm
Ottimo links, grazie ;)
-- 
Morde. 
ICLDweb: 
http://www2.samatel.com/icld/

 ha scritto nel messaggio
news:oMMjRJAraUwHTD...@4ax.com...


"inserirli" nell'oggetto "contenitore".
Allora derivi da TObjectList.


wrote:
Appunto.


 Allora derivi da TObjectList.
Nel mio caso non voglio che il TObjectList si occupi di distruggere gli
oggetti Item, per questo ho optato per Tlist.
Ciao Giorgio

oggetti Item, per questo ho optato per Tlist.
TObjectList non necessariamente distrugge i suoi elementi.  Può farlo
e può non farlo, a seconda che "possegga" o meno i suoi elementi (v.
proprietà OwnsObjects).

 proprietà OwnsObjects).
TobjectList viene ereditato da TList e non ha nulla in piu' rispetto a 
questo che mi possa interessare, anche se
sono intercambiabili ponendo come dici OwnsObjects a false.
Ho gia' scritto buona parte del codice a riguardo e il componente TList non 
mi sta dando alcun problema, fornendomi anzi
tutte le caratteristiche che mi interessavano.
Ciao, Giorgio

questo che mi possa interessare
TObjectList č ciň che si utilizza per casi come il tuo, non TList.

 tutte le caratteristiche che mi interessavano.
...ma se hai iniziato il thread dicendo che cercavi un sostituto di 
*TList* poiché ti dava problemi sul dover "castare" continuamente. :-)
Ti sono state suggerite due soluzioni, *TCollection* e *TObjectList*, 
ora non vanno più bene e *TList* diventa la soluzione migliore? :-|


 non vanno piů bene e *TList* diventa la soluzione migliore? :-|
Forse ci siamo un po' persi... il TObjectList ha gli stessi problemi di CAST 
del TList. Come ho detto durante la discussione, in un sito ho trovato il 
modo di evitare il CAST usando un oggetto derivato dal Tlist (o dal 
TObectList).
Siccome il TObjectList rispetto al TList ha in piu' particolarita' che non 
mi interessano, ho derivato il nuovo oggetto dal TList.
Grazie cmq ad entrambi, Giorgio 

mi interessano, ho derivato il nuovo oggetto dal TList.
...e hai fatto male (sì, che la cosa ti sorprenda o meno, anche se non
stai incontrando problemi), perché la logica e la corretta
programmazione in Delphi vuole che se devo implementare una lista di
*oggetti* che non sia una TCollection, usi una TObjectList.

 *oggetti* che non sia una TCollection, usi una TObjectList.
Potra' anche essere cosi' ma in buona fede mi sono fidato dell'help:
Syntax
[Delphi] type TList = class (System.TObject);
Description TList, which stores an array of pointers, is often used to 
maintain lists of objects. TList introduces properties and methods to Add or 
delete the objects in the list. Rearrange the objects in the list. Locate 
and access objects in the list. Sort the objects in the list.
Se poi conosci qualche controindicazione all'uso del TList ti sarei grato di 
spiegarmela.
Ciao Giorgio

quel sito...
Tu stai derivando da TList, *NON* da TObjectList.  Lasciami dire, poi,
che il tuo è un modo un po' bizzarro di argomentare.  Io ti ho detto
di usare una TCollection, ma hai obiettato dicendo che gli "items" non
puoi crearli tu, quindi ti ho detto di derivare una TObjectList e tu
invece ribatti dicendo che la TList ti dà tutto ciò che ti serve.
Ripeto il concetto: per i tuoi scopi si usa la TObjectList, *NON* la
TList.  Se poni una domanda su cosa si usa al posto della TList, non è
intelligente che ti ostini ottusamente sulle tue posizioni, quando uno
ti risponde.

 ti risponde.
No e' neanche intelligente far finta di non capire: ti ho spiegato e
rispiegato che cercavo un sostituto al TList per i problemi
di cast che questo poneva. In rete poi ho trovato il modo di evitare i
problemi di cast derivando dal TList. Il TObjectList pone gli stessi
problemi di cast, quindi non risolve il problema, bisogna derivare allo
stesso modo anche questo oggetto.
L'help stesso del Delphi afferma che il "tlist e' spesso utilizzato come
contenitore di oggetti".
Se sei veramente convinto di quanto affermi perche' non scrivi alla Borland
e spieghi loro il motivo per cui non va bene usare TList (o un suo derivato)
per i miei scopi, facendo osservare che l'help e' errato?
Andrea sei una persona indubbiamente preparata e in gamba ma non capisco
questa tua critica gratuita.
Ciao Giorgio

questa tua critica gratuita.
La mia non è una critica e tantomeno è un intervento gratuito.  Tu fai
bene, invece, a sforzarti di capire ciò che gli altri vogliono farti
capire.
Ora, se permetti, ignoro il thread.

 ha scritto nel messaggio
news:cqeg22pjp6vu3l66g...@4ax.com...



ROTFL