Newsgroup: it.comp.lang.delphi
Titolo: TObjectList e Remove

La Remove di TObjectList, come dice nell'help, distrugge anche l'istanza
dell'oggetto che viene rimosso.
Siccome io invece dovrei spostare questo oggetto da una TObjectList ad
un'altra come posso fare? 
L'idea era di crearmi una copia dell'oggetto, così cercando con google ho
visto che devo far derivare il mio oggetto da TPersistent e quindi
riscrivere il metodo Assign.
Un'altra idea l'ho presa da un post di giugno di Alberto salvati in cui
definisce un costruttore di 'copia'
constructor Clone(From: TMultiConstructor); // copy constructor
Un'ulteriore idea è di non far gestire la distruzione degli oggetti alla
TObjectList (proprietà OwnsObjects) ma così dovrei gestirli io.
Qualche idea?
-- 
Lis
ICQ@Home #7317603sette     ICQ@Work #16285702tre
Mercatino: 
http://lis77.bravepages.com
 (aggiornato *con foto*: 16/06/03)

 Qualche idea?
Usa il metodo Extract :-)
Ciao
--
Andrea /\/\agni
ICQ#: 174108000

 Usa il metodo Extract :-)
Mi hai anticipato di un niente...mi bastava continuare a leggere la
documentazione, sorry
Come magari avrai intuito avevo qualche problema con SetParent cercando di
implementare un metodo MoveTo... :-)


 cercando di implementare un metodo MoveTo... :-)
Sě, il fatto č che all'inizio la mia lista non era owner degli elementi...
Ho scelto poi di cambiare perchč se cancelli un folder ha senso che si
distruggano anche tutti i figli (file e cartelle e queste ricorsivamente
devono distruggere tutti i propri figli).
Se devi fare uno spostamento allora sě va usato Extract (e riassegnare il
nuovo parent).
Cosě dovrebbe andare:
function TNodeList.Extract(ANode: TNode): TNode;
begin
  result := FList.Extract(ANode) as TNode;
end;
function TNode.MoveTo(NewParent: TNode): boolean;
begin
  if (FParent is TFolder) then
    TFolder(FParent).Children.Extract(Self);
  FParent := nil;
  SetParent(NewParent);
end;
Ciao :-)


 end;
Io avevo fatto delle altre modifiche, funzionavano ugualmente ma non avevano
la stessa "pulizia" di logica. Ho buttato le mie e tenuto le tue ;-) Tenchiů
veri macc


 tue ;-) Tenchiů veri macc
Riguardandolo manca un controllo in caso si cerchi di spostare la root...
Suggerirei di alzare un'eccezione all'inizio di MoveTo:
if IsRoot then
  raise Exception.Create('Non puoi spostare la root...').
Altrimenti bisogna trovare un modo per eleggere la nuova Root ma non basta
piů il solo MoveTo (bisogna poter raggiungere il riferimento piů esterno
[FFileSystem], userei un metodo di classe...).


 [FFileSystem], userei un metodo di classe...).
No, non credo proprio che ci sia la necessità di spostare la root, per il
momento me lo tengo così, molto semplice (una volta capito, ovviamente) ma
anche estremamente efficace.
Parlando ad un livello più teorico, per formarmi un pò a livello di OOP vero
c'è qualche testo che mi consigliate di leggere?


 OOP vero c'è qualche testo che mi consigliate di leggere?
In realtà in questo thread (in questo progetto se vuoi) stiamo miscelando un
po' di nozioni sulle strutture dati (alberi ecc...) e un po' di OO.
Io ti consiglio Eckel (Thinking in Java ma anche gli altri testi dello
stesso autore). Non farti trarre in inganno dal titolo, è un ottimo libro
per chi si interessa di OO e i primi 10 capitoli sono un tesoro anche per
chi non usa/userà mai Java.
Altri libri coprono bene le basi della OO, poi ci sono testi più avanzati
come il Meyer (che non ho ancora avuto il tempo di leggere [veramente adesso
ce l'avrei anche il tempo ma preferisco godermi le vacanze per un po'!
:-) ]) il titolo dovrebbe essere Object Oriented Software Construction ma
credo ce ne sia anche un altro dello stesso autore.
Personalmente ho trovato abbastanza completo un libro di Barbara Liskov
"Program Development in Java" [anche qui vale il discorso che ho fatto per
Eckel] che avevo come libro di testo all'università per l'esame di
Ingegneria del Software.
Importanti sono anche i vari Design Patterns (erano più autori, uno credo
fosse Fowler) e i libri legati all'xp.
Spesso vengono indicati anche i libri di Coad e Yourdon (OOA e OOD) ma
sinceramente io non li ho mai visti...


 In realtà in questo thread ...zip
perfetto, credo che partiro da Eckel. grazie per gli altri testi, me li sono
segnati e spero di avere quanto prima il tempo di leggerli. Per il momento
mi aspetta Gui Bloopers... 
