Newsgroup: it.comp.lang.delphi
Titolo: Problema a mantenere "in vita" una lista all'esterno della procedura in cui è stata creata.

Ciao a tutti,
Ho un problema in merito alla conservazione di una lista al termine 
dell'esecuzione ad esempio all'interno di una procedura.
In breve, qualcosa del genere:
// La procedura dove creo la lista
procedure A (Var X: TList<YYY>);
  var c: YYY;
  begin
      x := TList<YYY>.Create;
      try
         ..............
         x.add (c);
      finally
         x.free;
      end;
  end;
// La procedura attraverso la quale creo la lista richiamando A e attraverso 
la quale voglio leggerne il contenuto.
procedure B (  ............ );
   Var X: TList<YYY>;   loop: byte;  K: YYY;
   begin
      A (X);
      for loop := 0 to X.Count - 1 do
      begin
        k := X.Items [loop];
        // leggo i valori di K;
          ............
      end;
   end;
Ho capito o almeno credo di aver capito che l'errore � determinato dal fatto 
che con  X.Free in A sono stati persi i riferimenti (puntatori) agli 
elementi della lista.
Ma per mantenere "in vita" questa lista anche fuori dalla procedura in cui 
viene creata, sono obbligato a crearla a livello globale (ed esempio, nel 
caso specifico in B anzich� in A ?
Mi sembra strano; non c'� una soluzione pi� elegante? Mi sembra assurdo che 
debba trasformarla in un array dinamico per poterla portare "in giro" per il 
programma.
Qualche suggerimento?
Grazie ancora.
 

 Mi sembra strano; non c'ï¿œ una soluzione piï¿œ elegante?
Io fare cosï¿œ:
1) creo una classe helper apposita che contiene funzioni
2)le funzioni ritornano i puntatori alla liste che ti interessa 
calcolare
3) dal tuo programma istanzi la classe helper, chiami la funzione e 
tramite il puntatore che ti ritorna utilizzi la lista
4) quando hai finito di usarla distruggi la classe helper.
5) nel distruttore della classe helper fai le free delle lista 
istanziate
In pratica cosi' isoli e incapsuli le logiche di costruzione e 
deallocazione delle liste in una classe ad hoc.
Incominci a cambiare paradigma: ti serve qualcosa? Istanzi la classe 
helper, usi i suoi metodi per ottenere la cosa voluta, distruggi la 
classe e non ci pensi piï¿œ.
Il tuo codice diventerebbe tipo:
var
 X : Tlist<YYY>
begin
 ClasseHelper := TClasseHelper.create;
 X := ClasseHelper.getXReference;
 (Usa X come ti pare)
 ClasseHelper.FRee;
end;
-- 
Morde

 ha scritto nel messaggio 
news:4b5e...@news.x-privat.org...

In altre parole se ho capito bene mi porto dietro il puntatore alla lista. 
Il problema ï¿œ come faccio a determinare il puntatore alla lista? Nello 
specifico il metodo getXReference che da me non viene riconosciuto.
Ho pensato che potrei passare per parametro il valore del puntatore anzichï¿œ 
la lista stessa, dovrebbe andare?
 

 la lista stessa, dovrebbe andare?
Forse ti mancano un po di fondamentali.. Se tu da una funzione 
FunzionePippo fai:
  result := MiaTList;
quando da codice esegui:
MiaListaChiamante := FunzionePippo;
quella funzione copial'indirizzo (la reference) alla TList MiaTList.
Poi l'esempio che ti ho scritto non ï¿œ codice da compilare: serve a 
darti un'esempio di come potresti gestire la memoria impegnata dalla 
TList che devi manipolare.
Ciao
-- 
Morde

 ha scritto nel messaggio 
news:4b5ee3f0$1...@news.x-privat.org...

Mmm, riepilogando io mi definisco una classe tipo:
     type
         tmiaclasse = class
             constructor create ();
         end;
var miaclasse: tmiaclasse;
function reference: Pointer;
   begin
       miaclasse := tmiaclasse.create ()
       try
          result := miaclasse;
       finally
         miaclasse.free;
       end;
e nella mia procedura faccio:
      procedure a ( var x: pointer );
         begin
             x := reference;
             // creo la lista
         end;
e per leggerla da b:
    procedure b  ();
       var x: pointer;
       begin
           a (x);
           for contatore := 0 to x.count -1 do  writeln (x.items 
[contatore]);
       end;
ï¿œ corretto? 

 ï¿œ corretto?
No, io avevo parlato di function, non devi usare le procedure.
Come ti ho detto sono sempre piï¿œ convinto che hai bisogno di imparare i 
fondamenti della programmazione.
Io fornisco formazione a pagamento, se sei interessato fammelo sapere.
-- 
Morde


Infatti, ma le procedure indicano il punto in cui voglio gestire la lista e 
dove voglio richiamarne il contenuto; non centrano con la function ma 
c'entrano nel contesto in cui voglio lavorare.
Io sto solo cercando di capire in che modo sto puntatore deve viaggiare con 
tlist. Se usassi new avrei giï¿œ il puntatore bello pronto e fatto lo 
assegnerei alla variabile e lo passerei per valore tramite parametro della 
funzione; da questo punto di vista io non ho nessun problema; il problema 
che riscontro ï¿œ di tutt'altra natura; e cioï¿œ che non ho capito bene ciï¿œ che 
vuoi dire... almeno ci ho provato; ma non mi hai risposto alla domanda; cioï¿œ 
se la function era usata nel modo corretto oppure no.
Le procedure sono una cosa in piï¿œ che ho riportato per riprodurre la 
situazione.
Non che mi arrenda; ma di sto passo mi sa che le liste le userï¿œ solo quando 
mi fanno comodo.... e quando producono piï¿œ benefici che svantaggi;  alla 
faccia della "buona" e "cattiva" programmazione...  alla fine ï¿œ il risultato 
finale ciï¿œ che conta... non tanto appendere il proprio codice in un 
quadretto per far vedere che si conosce il linguaggio.
Scusa lo sfogo... se non puoi essere piï¿œ chiaro e non puoi aiutarmi 
maggiormente non ti preoccupare ï¿œ tutto ok; spero che qualcun altro possa 
aiutarmi a capire meglio spiegandomi la cosa in modo piu didattico che 
tecnico.
Infondo sono qui (inteso questo newsgroup) per imparare...
 

 tecnico.
Puoi sfogarti, sï¿œ.. ma il problema tuo resta: non hai sufficienti basi 
e le domande che fai non ti aiutano a crescere perchï¿œ le risposte che 
ti vengono date sono superiori alla tua capacitï¿œ attuale di apprendere.
Se vuoi spiegazioni piï¿œ didattiche che tecniche, ti ho proposto una 
soluzione di carattere privato: pagare il tempo che spendo e che ti 
dedico affinchï¿œ possa seguirti personalmente.
Oppure, continua a fare domande "spot" sul ng, ma questo non porta a 
nulla perchï¿œ senza le fondamenta il tuo edificio di conoscenze non 
arriverï¿œ mai a grandi altezze...si sgretola ogni volta che cerchi di 
fare un piano nuovo perchï¿œ le fondamenta non tengono.
Ciao
-- 
Morde


Definisci "domande spot"; la parola spot la associo a un contesto 
pubblicitario che in questa sede c'entra ben poco.
Le mie domande sono banali; se offendono la tua sensibilitï¿œ di 
programmatore.... come ho giï¿œ detto in passato, non preoccuparti.
Confido sempre nella buona volontï¿œ di qualcun'altro; oggi imparo e quello 
che avrï¿œ imparato un domani, quando si presentarï¿œ qualcuno nelle mie 
condizioni che farï¿œ le medesime domande idiote che sto facendo io, lo 
aiuterï¿œ con tutta la buona volontï¿œ di farlo crescere, condividendo le mie 
esperienze.
Non sarï¿œ cosi tirchio da fare il mercenario in un luogo dove sussiste il 
libero scambio della conoscenza.
In ogni caso il problema non ï¿œ il puntatore fine a se stesso come mi hai 
suggerito tu; perchï¿œ a quanto pare togliendo la riga:
...............
mialista.free
io riesco a riportarmi tranquillamente la lista in giro per il programma 
senza perderne il contenuto; ragion per cui la causa del problema ï¿œ quella 
*.free  che elimini la lista dalla memoria.
Cmq io cercavo una soluzione piï¿œ elegante a quella che ho giï¿œ; una soluzione 
piï¿œ orientata alla filosofia di delphi.... che alla filosofia del pascal.
Vorrï¿œ dire che la creazione e la distruzione dell'istanza della lista la 
andrï¿œ a porre ad un livello di visibilitï¿œ superiore rispetto a dove viene 
poi effettivamente utilizzata.
Marcello.
PS: Lungi da me l'intenzione di offenderti; ma alla tua schiettezza, ritengo 
giusto rispondere anche con la mia schiettezza; io non mi offendo mica se mi 
dici che sono incapace di capire, beh alla fine se sono un imbecille non 
posso offendermi per questo se ï¿œ la veritï¿œ. Spero lo stesso sia anche per te 
e non ti senta offeso per le mie parole.
Viva la schiettezza insomma.
 

 Viva la schiettezza insomma.
Certamente, io non mi offendo mica e sono contento che neanche tu ti 
sia offeso :-)
La mia opinione su di te giï¿œ la conosci: pertanto non darï¿œ piï¿œ seguito 
alle domande di tipo didattico che farai sul ng perchï¿œ ho capito che tu 
non progredisci.. ed io nel risponderti sprecherei invano il mio tempo 
per starti dietro senza avere la soddisfazione di aiutarti a crescere.
Ciao
-- 
Morde

Don' feed the troll.
A.


Con tutto il rispetto, studiati il significato della parola troll:
===>>>>   
http://it.wikipedia.org/wiki/Troll_(Internet)
Dimostri di non aver ancora compreso il suo reale significato; ed � gi� la 
terza volta che la usi in modo non opportuno.
Errare � umano, perseverare � diabolico... 


Io credo che tu stia confondendo un forum con un newsgroup; o meglio ancora 
un forum/newsgroup tecnico da un forum/newsgroup generico.
Ci possono essere forum tecnici dove domande idiote come le mie non sono 
ammesse... per la natura stessa del forum e nel rispetto del target dei 
frequentatori del forum.
Ma ci sono forum e/o newsgroup piï¿œ generici dove ANCHE le domande idiote 
sono ammesse; purchï¿œ pertinenti con la natura del forum e/o del newsgroup a 
patto che non esistano forum e/o newsgroup specifici per un determinato 
target.
Nel caso di specie, questo newsgroup si chiama:  it.comp.lang.delphi e non 
esiste un newsgroup chiamato: it.comp.lang.delphi.newbie per cui in questo 
newsgroup possono postare anche soggetti che non capiscono nulla di delphi a 
patto perï¿œ che siano in tema col newsgroup.
Tu certamente sei libero di non dare seguito alle domande di tipo 
didattico... ma non sei libero perï¿œ di giudicare una persona in base alla 
natura delle domande per altro lecite in questo contesto.
Se non vuoi rispondere, non rispondere ma se rispondi, almeno fallo in modo 
chiaro e completo come fanno spesso molti altri di questo newsgroup che 
forniscono risposte che aiutano effettivamente chi ha il problema.
Io personalmente apprezzo molto di piï¿œ queste persone perchï¿œ sono anche 
abbastanza umili e non si vantano di chissï¿œ cosa; e sono certo che hai giï¿œ 
capito di chi parlo.
Cmq tutto ok da parte mia.
 

 ClasseHelper := TClasseHelper.create;
 > X := ClasseHelper.getXReference;
 > (Usa X come ti pare)
 > ClasseHelper.FRee;
Come vedi il tuo X e' dichiarato in una unit (globale, locale decidi tu), e 
quando ti serve a X viene assegnato un qualcosa (TList) che, a sua volta, e' 
stato creato nella FUNZIONE getxReference che avrai scritto tu, nella tua 
unit, secondo le tue necessita' ed e' pronto all'uso.
Infine, non prendere il suggerimento di Morde di partire dall'abc (pensa che 
io sono relegato al mondo dell'abc da sempre) come un'onta personale (non 
puoi avere dubbi sulle differenze tra procedure e funzioni) ma coglila come 
spunto per crescere nell'uso di delphi come fa la maggior parte di noi .... 
pseudo digitatori inesperti. Per questo e' necessario consumare il tasto F1 
di delphi, cercare su google, leggere, leggere, leggere, cercare i file .pas 
di esempio, studiarli e cercare di capire perche' nell'esempio tutto 
funziona ... ma nel progetto di prova no. Questa e' formazione e costa, il 
prezzo ??? il tempo necessario per apprendere le tecniche, di scrivere 
nell'ng, di attendere le risposte (di stimati professionisti che (loro si) 
ti regalano la loro preziosa esperienza per nulla in cambio se non la 
soddisfazione di vedere il problema risolto di una persona in difficolta'), 
oppure, il costo di un corso full immersion di 3-5 giorni con un 
professionista del campo.
Scusatemi se sopra (TList) ho scritto qualche baggianata ....
Alla prossima
Ciao, Daniele
__________ Information from ESET NOD32 Antivirus, version of virus signature database 4808 (20100126) __________
The message was checked by ESET NOD32 Antivirus.
http://www.eset.com

 Viva la schiettezza insomma.
Guarda che nessuno ti ha detto che sei incapace di capire, pertanto non 
c'ï¿œ alcuna offesa nei tuoi confronti; tutto ciï¿œ che ti ï¿œ stato detto, 
invece, ï¿œ che tu non ritieni necessario approfondire i concetti 
fondamentali prima di passare a questioni piï¿œ complicate, pretendendo 
che il gruppo si diletti a farti un corso online a puntate su misura, 
gratuitamente, e se questo non ï¿œ offensivo, senz'altro ï¿œ ben poco 
rispettoso, per tutti i motivi che ti ho giï¿œ detto sopra.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 Scusatemi se sopra (TList) ho scritto qualche baggianata ....
Grazie per aver capito, a differenza di cooper, quanto noi facciamo 
ogni giorno qui dentro, e parlo di tutti quelli che hanno sempre 
postato, senza distingui di esperienza e bravura.
Il fatto ï¿œ che tu hai capito lo spirito del ng, e Marco Breveglieri 
nell'altro reply riprende e spiega punto per punto questo spirito che 
ci tiene uniti e che fa proseguire l'esistenza di questo ng.
Per quanto mi riguarda, ho smesso di seguire cooper, trovando noioso e 
privo di qualsiasi costruttivitï¿œ tutto il "rumore" che crea sul ng.
Ciao
-- 
Morde

 discussione, e pertanto questo conferma la definizione di "troll": [...]
Quoto e condivido.
Ciao
-- 
Morde


Gi�, per quanto mi riguarda; il mio problema reale � un altro. Ti spiego 
meglio; io riesco a districarmi abbastanza bene con il borland pascal 7 (non 
delphi 7) riesco a risolvere le mie piccole problematiche scrivendo codice 
in maniera "primordiale" usando array, puntatori e via dicendo.
Ora che il pascal si � evoluto in delphi dal pascal 7 (che dovrebbe essere 
l'equivalente di delphi 0) a oggi sono cambiate tante cose; e sicuramente il 
codice che sono abituato a scrivere � diventato obsoleto, nel senso che ci 
sono nuovi strumenti pi� comodi che mi permettono di raggiungere il medesimo 
risultato con minore fatica.
La mia difficolt� � proprio questa: io sto cercando di imparare queste nuove 
cose di delphi in modo tale che anzich� continuare nel vecchio stile, posso 
procedere con lo stile di delphi.
E' questa � la mia maggiore difficolt�, nel senso che non � un problema di 
conoscenza di base; quanto di conoscenza dei nuovi strumenti che in pascal 
non c'erano e sono stati introdotti con delphi.
Quindi il mio desiderio di imparare � legato al desiderio di aggiornarmi 
sull'evoluzione del pascal ergo di delphi, per cui a titolo meramente 
didattico mi piacerebbe imparare a programmare in una filosofia pi� vicina a 
quella di delphi.
Ecco la ragione delle domande banali; cio� cerco di trovare un equivalente 
"migliore" tra il vecchio e il nuovo.
Ma per il resto come avrai notato, il problema l'avevo gi� risolto in un 
modo, ma cercavo una soluzione migliore e pi� orientata a delphi.
Grazie ancora.
Marcello. 


Vedi, ï¿œ proprio questo il punto.
A me ciï¿œ che da fastidio ï¿œ la presunzione che alcuni di voi (te compreso) di 
sapere tutto e di assumere dei toni arroganti e talvolta anche offensivi nei 
confronti di coloro che pur non trasgredendo nessuna regola del newsgroup 
fanno delle domande semplici, banali, idiote.
Io personalmente non sono venuto a bussare alla tua porta; ho semplicemente 
esposto il mio problema nell'attesa che qualcuno mi rispondesse.
Mi hai risposto tu, ho apprezzato la tua risposta; ho cercato di capirla e 
ho scritto ciï¿œ che ho capito dalla tua risposta; tu a quel punto anzichï¿œ 
dirmi se avevo capito correttamente oppure no; sei sceso nella polemica; in 
altre parole non mi sei stato piï¿œ di aiuto.
Ora che senso ha tutto questo? Io credo nessuno.  Allora, non ï¿œ piï¿œ saggio 
evitare di rispondere anzichï¿œ rispondere in modo incompleto... e talvolta 
fuorviante? Perchï¿œ se io provo a seguire te, e tu mi confondi le idee, poi 
chi resta piï¿œ confuso sono sempre io.
In ogni caso, se ci fosse un po' piï¿œ di umiltï¿œ e un po' piï¿œ di dialogo, 
sicuramente sarebbe tutto piï¿œ piacevole e piï¿œ costruttivo.
Io dico sempre che prima di essere: programmatori, artigiani, commercianti, 
avvocati, insegnanti etc etc siamo persone... e come tali dobbiamo 
relazionarci... Non siamo delle macchine dove si danno risposte 
copia/incollate.
Questa ï¿œ la mia opinione; puoi pure dissentire, e sicuramente ne 
dissentirai.
Marcello.
 


Qui invece dissento, perchï¿œ nella mia coscienza so che non ï¿œ cosi; se poi 
appare in modo diverso agli occhi degli altri; chi per un motivo chi per un 
altro; allora ï¿œ un altro discorso.
Ciao :) 

 Qui invece dissento, perchï¿œ nella mia coscienza so che non ï¿œ cosi [...]
La tua coscienza puï¿œ pensare ciï¿œ che vuole, ma si sbaglia. :)
Comunque, per quanto mi riguarda, ho detto tutto e la questione ï¿œ 
chiusa. Poi, chi vuole intendere... :)


oppure: it.comp.lang.delphi.abc
Se proprio dobbiamo creare un gruppo, teniamo it.comp.lang.delphi e
proponiamo it.comp.lang.delphi.olimpo in cui io, Breveglieri, Salvati e
Morde discettiamo di auliche questioni delphistiche, sdraiati sul
triclinio, mentre delle ancelle ci porgono chicchi d'uva in bocca.
Sorvolando sull'arroganza di cui i tuoi messaggi sono intrisi (e che
confermano, dal canto mio, che tu sei un troll), concepire un ng dedicato
ai newbie non ha molto senso perch� si porrebbero dei problemi
"filosofici" di altro tipo: quand'� che un beginner smette di essere tale?
quando si pu� essere sicuri di aver appreso l'abc e fare il grande salto
alla "casta superiore"? e come la mettiamo se tu non ti ritieni pi� un
newbie ma per me lo sei ancora? scoppierebbero diatribe su qual � il ng
giusto su cui postare, con infiniti thread polemici (come se non ce ne
fossero abbastanza). Oltretutto, vista la nicchia in cui Delphi si � ormai
chiuso, temo che un ng del genere non interesserebbe nessuno, non
riceverebbe mai i voti necessari per essere creato e l'intera operazione
fallirebbe. 
L'idea che cogli, e cio� che questo ng non � dedicato ai newbie, � l'idea
GIUSTA: questo ng non � DEDICATO ai newbie, non � sicuramente inventato
apposta per loro; � un ng in cui si discute di Delphi e si suppone che chi
discuta di Delphi affronti problemi seri e di una certa consistenza. I ng
non servono a insegnarti ad usare l'ambiente di sviluppo e non sta scritto
da nessuna parte che bisogna tollerare richieste troppo banali. Read That
Fucking Manual. Tutti si accordano, quando si partecipa ad un ng, a
mantenere alto il livello di interesse delle discussioni. Se il livello
cala, � molto probabile che la gente vada via.
Quindi, io che non sono di certo buono come Morde o Marco, ti invito a
leggere quel fottuto manuale e non scassare le palle ulteriormente con le
tue noiosissime minchiate risolvibili premendo F1 o con qualche semplice
ricerca su Google.
Bada che su di te pende una pregiudiziale molto forte: quella di essere un
troll. O ti dai da fare per smentire questa idea che ciascuno, qui dentro,
si sta progressivamente facendo di te, oppure verrai segnalato, prima o
poi, all'abuse.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 questi.
Non sai quanto ti sbagli... Se dovessi dare un nome alla pazienza e 
all'umiltï¿œ, si chiamerebbe Morde.
-- 
Jax


ho letto tutto quello che hai scritto con attenzione; ritengo che non abbia 
molto senso rispondere punto per punto sia perchï¿œ ci stiamo dilungando 
troppo; sia anche perchï¿œ con questo mezzo non ci si riesce a capire a fondo.
Se mi dai la possibilitï¿œ di comunicare con te usando un mezzo piï¿œ idoneo, 
ammesso che tu abbia il tempo e la voglia posso provare a spiegarmi meglio e 
a confrontarci meglio in tempo reale.
A un certo punto si parlava di rispetto... dal momento che il rispetto deve 
essere bilaterale; chiedo troppo di ignorare i miei post se "a giudizio 
proprio" non meritano risposta?
Io non chiedo a nessuno di rispondermi in modo dettagliato o cosa; chi 
risponde lo fa di sua spontanea volontï¿œ; se non vuole rispondere... almeno 
non risponda o cmq non critichi.
Se ï¿œ vero che il newsgroup ï¿œ aperto a tutti e non a certuni, ï¿œ anche vero 
che bisogna tenere conto che a rispondere possono essere anche gli altri; 
non necessariamente quelle persone che per un motivo o per un altro ne sanno 
piu di altri.
Se tu ad esempio non mi rispondi io non ï¿œ che  mi offenda, ci mancherebbe. 
Perï¿œ... Comunque la soluzione proposta da morde non era ciï¿œ che chiedevo o 
per lo meno si avvicinava parecchio a una soluzione che avevo giï¿œ trovato.
La mia domanda era riferita a tutt'altra cosa. Ma onestamente penso che non 
abbia senso discutere ancora su questo; l'unica cosa che chiedo ï¿œ, per una 
questione di rispetto: non sentitevi obbligati a rispondere alle domande 
idiote... se poi rispondente almeno dopo non rinfacciate cose di qua e di 
la.
Chiaramente non mi riferisco a te, questo ï¿œ chiaro, ci mancherebbe; ma ad 
altre persone.
 

 ad altre persone.
E' una scelta personale, e seguirï¿œ senz'altro il tuo suggerimento. :)



Nessun problema; avevo soltanto chiesto.
Per il resto se provi a dare una lettura anche veloce agli ultimi thread, ti 
renderesti conto che non c'era nessuna intenzione da parte mia di andare in 
polemica; e anche se avessi voluto, non avrei comunque potuto farlo da solo; 
per due motivi:
1) tutte le mie domande per quanto banali potevano essere, erano comunque in 
linea sia con la netiquette che con il manifesto del gruppo; nulla quindi 
puï¿œ essere contestato da questo punto di vista;
2) per litigare bisogna comunque essere in due.
Al di la del fatto che comunque non vedo toni da litigio; ma a parte questo; 
se ï¿œ vero quanto sostieni, allora era piï¿œ che sufficiente ignorare 
semplicemente anzichï¿œ alimentare.
Quindi in un modo o nell'altro non avrei comunque potuto dare alcun fastidio 
come di solito usa fare un "troll" allo scopo di creare disordini.
Un troll tende a creare disordini e via dicendo, io ho forse creato 
disordini? Offeso qualcuno? Se puntualizziamo sul discorso degli insegnanti, 
io ho solo detto una veritï¿œ, piacevole o no, ma pur sempre una veritï¿œ. Una 
veritï¿œ non ï¿œ mai una offesa, anche se magari in qualche modo puï¿œ ferire 
qualcuno; ma se ferisce un motivo c'ï¿œ.
Ciï¿œ premesso, nel thread "Memoria non rilasciata" del 18/12/2009, chiedevo 
se mi fossi dimenticato qualcosa a livello di codice, per rilasciare la 
memoria precedentemente allocata da una variabile definita come array 
dinamico.
Alberto Salvati, mi ha chiesto il perchï¿œ avessi usato gli array... e io ho 
risposto, non l'avessi mai fatto! Limitandomi semplicemente a rispondere 
alle domande poste ne ï¿œ venuta fuori una polemica; certamente non voluta da 
me.
L'unica risposta sensata e costruttiva di tutto quel thread ï¿œ stata quella 
di ACSH; che ha risposto in modo semplice, educato e lineare alla domanda 
che avevo posto.
Tutti gli altri, chi piï¿œ chi meno hanno contestato le mie scelte, tirando in 
ballo argomentazioni che non avevano nulla a che fare con il mio post 
iniziale.
A parte ACSH, l'unica risposta sensata e pertinente alla domanda posta in 
origine ï¿œ stata quella di Andrea La Forgia del 20/12/2009 alle 14.06.
E tutti gli altri post cosa c'entravano con quello che avevo chiesto io in 
origine? Erano piï¿œ attinenti con quello che aveva chiesto Alberto Salvati.
Nel thread: "Piccolo dubbio su TDATETIME" io ho esposto nel primo post 
seppure in buona fede un problema strano che ho avuto; e quali sono state le 
risposte di Andrea La Forgia?  Quelle risposte io le interpretate piï¿œ in 
tono polemico che costruttivo; al tempo stesso Andrea La Forgia ha 
interpretato me come un troll piuttosto che come un qualcuno che domandava 
semplicemente; e la sua malafede era piï¿œ che palese.
Fermo restando che avrï¿œ sicuramente sbagliato io qualcosa; fatto sta in quel 
momento non mi sono accorto e ho postato in buona fede; dov'era l'intenzione 
di trollare?
Nel thread: "Un chiarimento su TList<>" chiedevo il motivo per cui mi fosse 
dato l'errore; io sapevo che le liste erano definite in: Classes; non sapevo 
ne potevo sapere che le liste parametrizzate erano definite in 
Generics.Collections come poi mi ï¿œ stato detto sia da A. Tarolla che da te.
Le risposte che mi sono state date dagli altri non hanno aiutato affatto a 
capire ciï¿œ che mi mancava; ma posso comprendere la loro buona fede dal 
momento che io non sapevo nemmeno del fatto che fossero introdotte in delphi 
2010 e quindi ho dato per scontato ciï¿œ, quindi ammetto seppure senza volerlo 
che non sono stato molto chiaro.
Tuttavia non capisco il senso della risposta di Alberto Salvati sempre su 
questo thread del 23/01/2010 ore 16.44  e poi ripetuta nei successivi 
thread.
Tralasciando tutto il resto che non ï¿œ stato provocato da me; mi chiedo non 
era piï¿œ semplice giï¿œ alla prima risposta dire: "hai provato a includere: 
Generics.Collection nella clausola uses? o domandare la versione di delphi 
giï¿œ da subito?
La domanda ï¿œ: come potevo fare a sapere delle Generics.Collection? A prima 
vista avevo interpretato questo come nome che identificano le collezioni 
generiche e non come nome di una unit.
Per finire all'ultimo thread: "Problema a mantenere "in vita" una lista 
all'esterno della procedura in cui ï¿œ stata creata.", quello in questione, io 
non avevo chiesto assolutamente una soluzione giï¿œ pronta e fatta, ma 
semplicemente un suggerimento, sul fatto se esistessero soluzioni migliori a 
quelle giï¿œ individuate da me.
Cito:
<quote>
Ma per mantenere "in vita" questa lista anche fuori dalla procedura in cui 
viene creata, sono obbligato a crearla a livello globale (ed esempio, nel 
caso specifico in B anzichï¿œ in A ?
</quote>
Ora, a parte il modo in cui viene passato il valore... mi spieghi, per 
favore, la differenza fra la soluzione che avevo giï¿œ individuato, ovvero: 
"creare la lista a livello globale" e quella che mi aveva detto morde?
Per "creare lista a livello globale" ovviamente intendevo "a visibilitï¿œ 
globale rispetto a tutto il programma"; e visto che abbiamo parlato di abc, 
some come funziona la visibilitï¿œ di un dato rispetto al una funzione, 
procedura, unit, programma; so come vengono gestite le variabili locali e 
globali; so che le variabili (ad esempio) dichiarate in una funzione sono 
visibile solo dentro la funzione a meno che non siano dichiarate 
esternamente alla funzione come ad esempio in una unit e cosi via.
La nozione di "variabili locali e globali" insomma mi era giï¿œ nota.
Poi, sempre nel primo post ho aggiunto:
<quote>
Mi sembra strano; non c'ï¿œ una soluzione piï¿œ elegante? Mi sembra assurdo che
debba trasformarla in un array dinamico per poterla portare "in giro" per il
programma.
Qualche suggerimento?
</quote>
Qui c'ï¿œ una imperfezione mia, dovuta al fatto che io creavo la lista e 
subito dopo la distruggevo a causa della presenza di quel:  x.free nella 
procedura di cui giï¿œ sospettavo il problema, come avevo detto poco prima:
<quote>
Ho capito o almeno credo di aver capito che l'errore ï¿œ determinato dal fatto 
che con  X.Free in A sono stati persi i riferimenti (puntatori) agli 
elementi della lista.
</quote>
Ma il problema non era questo; era ben altro e cioï¿œ se c'era un modo 
alternativo; piï¿œ elegante che definire la lista in modo globale.
Questo in buona sostanza io chiedevo; e a tutto abbiamo discusso fino a ora 
tranne che su questa domanda.
E' cosi difficile rispondere dicendo: No non ce modo migliore; oppure si c'ï¿œ 
un modo migliore; ti consiglio di dare una lettura su questo link etc etc, 
oppure ti consiglio di cercare con google usando le parole: xxx, yyy, zzz".
Era necessario tutto sto casino? Che poi nemmeno l'ho voluto io.
Ora in che modo avrei potuto cercare su google il metodo migliore rispetto a 
quello giï¿œ da me trovato? qui non si tratta di andare a consultare la 
reference di delphi o google; anche perchï¿œ con quali termini avrei dovuto 
cercare?
Si tratta semplicemente di aspettarsi una semplice risposta del tipo: si 
oppure no; e in caso affermativo di aggiungere un suggerimento; neanche del 
codice; appena giusto per capire come muoversi.
Io ho provato in un certo modo e sono stato attaccato; ï¿œ chiaro che poi mi 
sono difeso; sempre e comunque nei limiti e nel rispetto della netiquette e 
del manifesto del gruppo.
Ma come avrei potuto anche in questo contesto trollare? come piace a 
qualcuno dire.
Concludendo a me puï¿œ solo dispiacere che tu abbia assunto una certa 
posizione; piï¿œ che rispettarla non posso fare.
Alla luce di tutto questo, se tu sei davvero convinto della mia malafede, o 
della mia intenzione come dice qualcuno di trollare o di essere un troll; 
allora ignorami pure se vuoi e non rispondermi. Mi rendo conto che ï¿œ una 
perdita di tempo rispondere a chi deliberatamente fa perdere tempo; ma se 
rivaluti il tuo giudizio su di me te ne sarei grato.
Confido nel tuo buonsenso.
Fermo il resto, credimi il mio non ï¿œ un atteggiamento di vittimismo, o 
chissï¿œ che; io scrivo di getto; esattamente come mi viene; scrivendo ciï¿œ che 
penso in quel momento.
 

 che penso in quel momento.
Invidio solo il tanto tempo libero che hai e che vorrei avere anche io. ;)
Ciao,
   Marco.



La netiquette e il manifesto del gruppo sono poste su una base oggettiva di 
elementi; dici che l'ho violata ma non mi dici dove l'ho violata.
Se per te e per qualche altro, il fatto di fare domande banali o di non 
cercare bene su google o di non impegnarsi a dovere, ï¿œ motivo di violazione 
della netiquette.... ï¿œ un discorso tuo e di qualcun altro.
Tutta la netiquette cosi come anche il manifesto del newsgroup; sono fondati 
sul rispetto reciproco e sulla buona convivenza; il resto ï¿œ qualcosa di 
meramente personale e soggettivo.
Cmq rispetto le tue scelte; pazienza, oltretutto non posso fare 
diversamente; posso solo confidare in quelle persone che disponendo di una 
maggiore intelligenza e comprensione non siano cosi superficiali nel 
giudicare una persona in un certo modo soltanto perchï¿œ ha meno conoscenze 
rispetto ad un altra.
Io sono una persona propensa al dialogo e al confronto; non ho mai avuto la 
pretesa di sapere tutto e mai onestamente l'avrï¿œ perchï¿œ ï¿œ fuori dai miei 
principi morali; semplicemente sono uno come tanti che vuole solo imparare e 
interagire con altri nel pieno rispetto reciproco.
Detto questo chiudo questo argomento, mi sembra del tutto inutile 
proseguire; del resto chi ha giudicato ha giudicato e quindi si andrebbe 
solo in polemica; anche se qualcuno potrebbe tranquillamente dire con 
malizia che giï¿œ si ï¿œ in polemica.
Mi rattrista che... ma cmq non importa. Confiderï¿œ negli altri.
E' chiaro che non appartenendo al "vostro mondo" sono trattato come qualcuno 
"fuori dal mondo"; di certo chi appartiene al "mio mondo" sarï¿œ piï¿œ aperto e 
piï¿œ comprensivo con me perchï¿œ anche lui appartiene al mio mondo.
Il mio mondo non ï¿œ fatto da persone espertissime di delphi o chissï¿œ cosa, ma 
da persone che hanno la passione per l'informatica, che non sono 
espertissime dei delphi ma che hanno voglia di imparare delphi e hanno 
voglia di confrontarsi con gli altri dello stesso mondo; da persone che 
hanno le mie medesime difficoltï¿œ e che vogliono crescere soprattutto 
relazionandosi con gli altri.
Ciao e grazie ancora per la tua pazienza; scusami inoltre se ti ho fatto 
perdere tempo.
Sinceramente non so fino a che punto crederai alle mie scuse in quanto giï¿œ 
prevenuto sul mio conto; ma non importa; le mie scuse sono sincere; vuoi 
credermi mi farï¿œ piacere; in caso contrario amen; non posso fare nulla.
Marcello.
 

Don't feed the troll.
A.