Il linguaggio di programmazione Delphi
 

Scusate il problema b*****e
1 | 2 |

Stark 30 Gen 2017 16:07
Questa è una cosa semplice, ma nella quale è un'ora che mi sono impigliato.
Magari voi me la risolvete in quattro e quattr'otto.
In un form sistemo una frame che ha diversi componenti tipo ListBox,
comboBox etc.
In una unit separata volevo mettere alcune proc che riempiono gli items di
questi componenti e anche che, una volta che l'utente ha fatto le sue
scelte, ritornano al main form le scelte fatte (in forma di stringa per una
sql).

Ma quando in queste proc referenzio, ad esempio ListBoxAnni, questo risulta
'Undeclared identifier'.
Negli uses della proc avevo messo la unit della frame, ma dà errore.
Come faccio a far conoscere a questa unit separata i componenti della frame
?
Alberto Salvati 30 Gen 2017 16:37
> Negli uses della proc avevo messo la unit della frame, ma dà errore.

Nel 21 secolo, ancora proc/unit invece di metodi/classi e post da utonto finale
su un ng di sviluppatori..
Come dice Cruciani, siamo al top! :-((


> Come faccio a far conoscere a questa unit separata i componenti della frame
> ?

Finchè non salirai lo scalino DIMENTICANDO l'approccio strutturato e
abbracciando una buona e sacrosanta volta OOP, avrai sempre problemi di questo
tipo con le conseguenti, per tua stessa ammissione, perdite di tempo.
Come tanti, troppi, pur di risparmiare non badi a spese.


Il frame DEVE ESPORRE un metodo che accetta come parametro una
TStrings/TStringList.
Avrai un metodo per ogni listbox.
Questo metodo non fa altro che cliclare sugli items della listbox di turno e
aggiungere alla lista passata come parametro quelli selezionati.
Quindi, se hai 3 listbox:

TTUoFrame = class...
public
...
procedure ReadSelectedModels(AList: TSTringList);
procedure ReadSelected*****Positions(AList: TSTringList);
procedure ReadSelectedWines(AList: TSTringList);
...
end;

...

procedure TTUoFrame.InternalReadSelection(
AListBox: TListBox;
AList: TSTringList);
var
i: integer;

begin
Assert( Assigned(AList));
Assert( Assigned(AListBox));
AList.Clear;
for i := 0 to Pred(AListBox.Count) do begin
if AListBox.Selected[i] then
AList.Add(AListBox[i])
end;
end;

procedure TTUoFrame.ReadSelectedModels(AList: TSTringList);
begin
InternalReadSelection(lbxModels, AList);
end;

procedure TTUoFrame.ReadSelected*****positions(AList: TSTringList);
begin
InternalReadSelection(lbx*****Positions, AList);
end;

etc etc etc

A.
Stark 30 Gen 2017 17:44
"Alberto Salvati" ha scritto nel messaggio
news:fe4424dc-426b-471c-9e9e-774aa65d997d@googlegroups.com...
Finchè non salirai lo scalino DIMENTICANDO l'approccio strutturato e
abbracciando una buona e sacrosanta volta OOP, avrai sempre problemi di
questo tipo con le conseguenti, per tua stessa ammissione, perdite di tempo.
Come tanti, troppi, pur di risparmiare non badi a spese.
A.
--
Prima scrivo queste due righe, poi mi vado a studiare il tuo 'insegnamento'.
A te sembrerà triviale, ma io ricordo quello che mi disse un istruttore ad
un corso di OOP a cui partecipai vent'anni fa senza alcun profitto. Mi disse
che avendo seguito fino ad allora un approccio strutturato, non avrei mai
imparato l' OOP. Purtroppo aveva ragione! E pensare che sono affascinato
dall'OOP e ne capisco tutte le potenzialità e vantaggi..
Stark 30 Gen 2017 17:44
Ah, grazie intanto !
Delta11 30 Gen 2017 20:56
On 01/30/2017 05:44 PM, Stark wrote:
> "Alberto Salvati" ha scritto nel messaggio
> news:fe4424dc-426b-471c-9e9e-774aa65d997d@googlegroups.com...
> Finchè non salirai lo scalino DIMENTICANDO l'approccio strutturato e
> abbracciando una buona e sacrosanta volta OOP, avrai sempre problemi di
> questo tipo con le conseguenti, per tua stessa ammissione, perdite di
> tempo.
> Come tanti, troppi, pur di risparmiare non badi a spese.
> A.
> --
> Prima scrivo queste due righe, poi mi vado a studiare il tuo
> 'insegnamento'. A te sembrerà triviale, ma io ricordo quello che mi
> disse un istruttore ad un corso di OOP a cui partecipai vent'anni fa
> senza alcun profitto. Mi disse che avendo seguito fino ad allora un
> approccio strutturato, non avrei mai imparato l' OOP. Purtroppo aveva
> ragione! E pensare che sono affascinato dall'OOP e ne capisco tutte le
> potenzialità e vantaggi..

sono daccordo, l'OOP è una cagata pazzesca ingiustificata nella normale
programmazione gestionale.
Molto meglio una raccolta di librerie.....funzionano sempre!

--
Ripristinare il trattato di Vienna è imperativo!
W IL LOMBARDO-VENETO.
W LA LIBERTA'.
ONORE E GLORIA A S.M. CARLO D'ASBURGO-LORENA!!!
Alberto Salvati 31 Gen 2017 07:37
Ma che ******* dici?

A.
Alberto Salvati 31 Gen 2017 07:47
Non è triviale: è una *****ata.
Ti stai autolimitando nascondendoti dietro un dito.

In questo lavoro, ma credo in tanti, l'inizio della fine è smettere di
imparare.

Io sto mollando delphi per passare a jee e TOZZO; intanto sto sviluppando su
android stu***** e sto tozzando; inoltre, sto guardando aws, pentaho e forse
farò un cosrso su scrum.
Aggiungo che ho 48 anni e non sono quindi un moccioso.
Capisco bene che non è facile, ovvio, ma la vita non è facile e non sta
scritto da nessuna parte che deve esserlo.

Dici di capire potenzialità e vantaggi della OOP.
Allora che aspetti?
Fai un favore a te stesso: cresci, impara, sbattiti, tozza.

A.
Stark 31 Gen 2017 14:21
"Alberto Salvati" ha scritto nel messaggio
news:fe4424dc-426b-471c-9e9e-774aa65d997d@googlegroups.com...
TTUoFrame = class...
public
...
procedure ReadSelectedModels(AList: TSTringList);
procedure ReadSelected*****Positions(AList: TSTringList);
procedure ReadSelectedWines(AList: TSTringList);
...
end;
procedure TTUoFrame.InternalReadSelection(
AListBox: TListBox;
AList: TSTringList);
var
i: integer;
begin
Assert( Assigned(AList));
Assert( Assigned(AListBox));
AList.Clear;
for i := 0 to Pred(AListBox.Count) do begin
if AListBox.Selected[i] then
AList.Add(AListBox[i])
end;
end;
procedure TTUoFrame.ReadSelectedModels(AList: TSTringList);
begin
InternalReadSelection(lbxModels, AList);
end;
etc etc etc
A.
--
Ho letto bene il tuo suggerimento e vorrei porti qualche domanda. Tu non lo
dici, ma immagino che la proc InternalReadSelection sia private.
Inoltre, perchè hai una proc per ogni ListBox ? Non poteva essere una sola
proc con due parametri, dove uno era la specifica ListBox e l'altra la
StringList?
Infine, volendo fare qualcosa di simile per caricare le ListBox ( da
Dataset), è meglio per esempio eseguire una query nella main form e passare
1) il risultato come result set, 2) come stringList, 3) passare alla frame
il nome del dataset e fare tutto lì ?
Sandra 31 Gen 2017 14:50
Il 31/01/2017 07:47, Alberto Salvati ha scritto:
>>
>> In questo lavoro, ma credo in tanti, l'inizio della fine è smettere di
imparare.
>>
>> Io sto mollando delphi per passare a jee e TOZZO; intanto sto sviluppando su
android stu***** e sto tozzando; inoltre, sto guardando aws, pentaho e forse
farò un cosrso su scrum.
mia curiostia' : cosa ti ha fatto preferire Android Stu***** (Java) a
Xamarin (C#) integrabile anche con Visual Stu***** ?
Alberto Salvati 31 Gen 2017 15:07
> Ho letto bene il tuo suggerimento e vorrei porti qualche domanda. Tu non lo
> dici, ma immagino che la proc InternalReadSelection sia private.

Esatto.

> Inoltre, perchè hai una proc


NON E' UNA PROC! E' UN METODO, MAREMMA *******

> per ogni ListBox ? Non poteva essere una sola
> proc con due parametri, dove uno era la specifica ListBox e l'altra la
> StringList?


No: chi sta "fuori" del frame (o di una qualsiasi classe)deve conoscere il meno
possibile del frame o della classe stessa.
A chi sta "fuori" non frega nulla di COME il frame o la classe popoli quello che
serve. SI chiama information hiding.

> Infine, volendo fare qualcosa di simile per caricare le ListBox ( da
> Dataset), è meglio per esempio eseguire una query nella main form e passare
> 1) il risultato come result set

Definisci resultset.

> il nome del dataset e fare tutto lì ?
Perchè il nome? Poi come lo usi?



A.
Stark 1 Feb 2017 16:13
NON E' UNA PROC! E' UN METODO, MAREMMA *******
--
Ok hai ragione. Però sperimentandolo non so se ho fatto bene. E cioè ho
fatto un form, sul quale metto il frame con le ListBox. Nel form dichiaro
una StringList destinata a contenere gli items selezionati dall'utente nella
listBox. Nel form usando il metodo ReadSelectionX(lbx1) ricevo nella
stringList le scelte fatte.
Nel frame dichiaro sia il metodo privato ReadInternal, che tanti pubblici
ReadSelectionX che sono i metodo usabili dall'esterno.

E' così che dovrei fare?
Rimane il problema di lanciare ReadSelectionX dopo che l'utente ha fatto le
sue scelte e quindi ci vuole qualche meccanismo per accorgermene, tipo la
cattura nel form di un evento nel frame. Giusto?

> Infine, volendo fare qualcosa di simile per 'caricare' le ListBox ( da
> Dataset), è meglio per esempio eseguire una query nella main form e
> passare
> 1) il risultato come result set

Definisci resultset.
==> cioè intendevo il risultato della query contenente la lista degli items
con la quale caricare la listBox

> il nome del dataset e fare tutto lì ?
Perchè il nome? Poi come lo usi?
==> Non potrebbe essere una proc interna al frame che autonomamente esegue
una query sul nome di dataset passato? Oppure è meglio farlo fare al form e
passare un'altra StringList ..?

Scusami, ma come vedi una cosa che posso fare in due minuti, l'approccio OOP
me la fa sentire complicata. Ma voglio farla xchè capisco che dovrebbe
essere anche più semplice.
Alberto Salvati 1 Feb 2017 16:44
> fatto un form, sul quale metto il frame

A designtime o runtime? A designtime è MALE, MOLTO MALE.

> con le ListBox. Nel form dichiaro
> una StringList destinata a contenere gli items selezionati dall'utente nella
> listBox. Nel form usando il metodo ReadSelectionX(lbx1) ricevo nella
> stringList le scelte fatte.

di che tipo è lbx1?
Se è una TStringList, OK.
Se + una tListBox + UNA STRONZATA.


> Nel frame dichiaro sia il metodo privato ReadInternal, che tanti pubblici
> ReadSelectionX che sono i metodo usabili dall'esterno.
> E' così che dovrei fare?

Nel tuo caso, si.

> Rimane il problema di lanciare ReadSelectionX dopo che l'utente ha fatto le
> sue scelte e quindi ci vuole qualche meccanismo per accorgermene,

Ma questo problema lo hai a prescindere dall'uso della tua soluzione (puah!) o
la mia.

> tipo la
> cattura nel form di un evento nel frame. Giusto?

Non hai un pulsante "conferma"?
Se no, vuol dire che ad ogni modifica su una listbox chi sta "fuori" dal frame
esegue una query: ti conviene? puoi farlo?

> Definisci resultset.
> ==> cioè intendevo il risultato della query contenente la lista degli items
> con la quale caricare la listBox

Aridaglie..ok... faccio la domanda col cucchiaino:

procedure TTuoFrame.BeccatiRisultatoQuery(Qualcosa: <...>)
Cosa scriveresti al posto di <...>?


Non hai risposto alla mia domanda:
> Perchè il nome? Poi come lo usi?


> Scusami, ma come vedi una cosa che posso fare in due minuti,

Non è vero. Altrimenti non avresti aperto questo th spiegando che eri nei
*****i.


> l'approccio OOP me la fa sentire complicata.

Lo so. Ma se non inizi, continuerai a usare delphi come fosse vb o peggio.
Se non erro anche in php hanno introdotto il paradigima OOP.

Ovviamente, ma non per tutti, se usi un linguaggio non OO (rpg, cobol, magari il
fortran...) allora vai di strutturato PER FORZA.
Ma usare un linguaggio OO come se fosse strutturato è come sollevare un auto
con le mani avendo un crick accanto...

>Ma voglio farla xchè capisco che dovrebbe
> essere anche più semplice.

Ecco: questa è la via.

A.
Stark 1 Feb 2017 18:55
"> fatto un form, sul quale metto il frame
A designtime o runtime? A designtime è MALE, MOLTO MALE.
==> a Runtime (almeno questa l'ho fatta giusta..)
> con le ListBox. Nel form dichiaro
> una StringList destinata a contenere gli items selezionati dall'utente
> nella
> listBox. Nel form usando il metodo ReadSelectionX(lbx1) ricevo nella
> stringList le scelte fatte.
di che tipo è lbx1?
Se è una TStringList, OK.
==> StringList. Sto implementando esattamente il tuo input

> Rimane il problema di lanciare ReadSelectionX dopo che l'utente ha fatto
> le
> sue scelte e quindi ci vuole qualche meccanismo per accorgermene,
Non hai un pulsante "conferma"?
Se no, vuol dire che ad ogni modifica su una listbox chi sta "fuori" dal
frame esegue una query: ti conviene? puoi farlo?
==> In effetti avevo definito un pulsante, ma nella frame. Quindi il click
dovrebbe essere catturato fuori (che non so come fare). Ma data la mole
delle query, potrei eseguirle ad ogni scelta.. e comunque il problema è lo
stesso. Solo mettendo il pulsanti di conferma nel form so come fare..

> Definisci resultset.
> ==> cioè intendevo il risultato della query contenente la lista degli
> items
> con la quale caricare la listBox
Aridaglie..ok... faccio la domanda col cucchiaino:
procedure TTuoFrame.BeccatiRisultatoQuery(Qualcosa: <...>)
Cosa scriveresti al posto di <...>?
==> StringList ?

Quindi suggeriresti da eseguire le query per caricare le listBox nel form e
usare il metodo sopra (beccati..) per passarle alla frame ?
Ma se la frame la uso da più di un form, non devo rifare questo più volte ?

Scusami, approfitto perchè tu mi fai capire le cose. Non ti incoraggio, ma
puoi mandarmi a far benedire ..
Alberto Salvati 2 Feb 2017 08:52
> ==> In effetti avevo definito un pulsante, ma nella frame.

Mettilo sul form; in questo modo il frame diventa "passivo".

> Quindi suggeriresti da eseguire le query per caricare le listBox nel form e
> usare il metodo sopra (beccati..) per passarle alla frame ?
> Ma se la frame la uso da più di un form, non devo rifare questo più volte ?

Ci sono 2 punti di vista..

1) il frame è totalmente passivo e mostra i dati che che chi usa il frame
stesso gli passa

2) il frame è autonomo e fa da se le query che gli servono.

Adesso un altro piccolo passo: descrivi pro e contro di questi 2 approcci.

A.




>
> Scusami, approfitto perchè tu mi fai capire le cose. Non ti incoraggio, ma
> puoi mandarmi a far benedire ..
Stark 2 Feb 2017 11:06
"Alberto Salvati" ha scritto nel messaggio
news:25606cab-3638-4868-9647-6bd6ae44e2c9@googlegroups.com...
> Quindi suggeriresti da eseguire le query per caricare le listBox nel form
> e
> usare il metodo sopra (beccati..) per passarle alla frame ?
> Ma se la frame la uso da più di un form, non devo rifare questo più volte
> ?
Ci sono 2 punti di vista..
1) il frame è totalmente passivo e mostra i dati che che chi usa il frame
stesso gli passa
2) il frame è autonomo e fa da se le query che gli servono.
A.
--
Nel 1o caso, il frame ha meno responsabilità di suo, però potrebbe essere
più flessibile nel caso cambiasse la logica con cui ricavo i dati che gli
passo. Però tutte le unit che lo utilizzano si devono smazzare la logica del
reperimento dei dati.
Nel 2o caso, il frame mi sembrerebbe più autonomo, anche se più rigido. Ma
d'altronde xchè la logica dovrebbe cambare ? E sgrava gli utilizzatori. Però
deve vedere un dataset esterno, oggi TTable o TQuery, domani spero qualcosa
di diverso..

Secondo te ?
Alberto Salvati 2 Feb 2017 11:31
> Nel 1o caso, il frame ha meno responsabilità di suo, però potrebbe essere
> più flessibile nel caso cambiasse la logica con cui ricavo i dati che gli
> passo.

Esatto

> Però tutte le unit che lo utilizzano si devono smazzare la logica del
> reperimento dei dati.

No: puoi creare una classe che legge i dati che ti servono e popola della
TStringList (TQualcosadataLoader..) e riutilizzarla in tutti i form che usano il
frame, così SEPARI la logica (lettura dati) dalla interfaccia (frame).


> Nel 2o caso, il frame mi sembrerebbe più autonomo, anche se più rigido.

Esatto.

> Ma d'altronde xchè la logica dovrebbe cambare ?

Io non lo so. Tu lo sai? Sai PER CERTO che la logica non cambierà MAI o magari
cambierà tra 10 anni o IERI?


> deve vedere un dataset esterno, oggi TTable o TQuery, domani spero qualcosa
> di diverso..

Vedi sopra.

A.
Stark 2 Feb 2017 15:40
"Alberto Salvati" ha scritto nel messaggio
news:8d1dd3dd-0035-4035-b328-21a506024d37@googlegroups.com...
> Ma d'altronde xchè la logica dovrebbe cambare ?
Io non lo so. Tu lo sai? Sai PER CERTO che la logica non cambierà MAI o
magari cambierà tra 10 anni o IERI?
A.
==>
Caro Alberto, non credo di dovermi preoccupare tra 10 anni ..

Beh, credo che mi metterò a pensare a questo loader
4ndre4 4 Feb 2017 16:50
On Monday, 30 January 2017 16:44:03 UTC, Stark wrote:

[...]
> A te sembrerà triviale, ma io ricordo quello che mi disse un istruttore ad
> un corso di OOP a cui partecipai vent'anni fa senza alcun profitto. Mi disse
> che avendo seguito fino ad allora un approccio strutturato, non avrei mai
> imparato l' OOP.

Ti ha detto una gran *****ata. Da quale approccio credi venissero coloro che,
come me, ad un certo punto hanno imparato il paradigma oo? Piuttosto credo ti
abbia detto che se continuerai a guardare ai problemi in termini procedurali,
non apprenderai mai la programmazione orientata agli oggetti.
Stark 6 Feb 2017 14:05
"4ndre4" ha scritto nel messaggio
news:6a525aab-5284-4f35-89e4-09e0d4025919@googlegroups.com...
Ti ha detto una gran *****ata. Da quale approccio credi venissero coloro che,
come me, ad un certo punto hanno imparato il paradigma oo? Piuttosto credo
ti abbia detto che se continuerai a guardare ai problemi in termini
procedurali, non apprenderai mai la programmazione orientata agli oggetti.
--
è possibile che quello intendesse, si..
Stark 11 Feb 2017 18:37
Torno sull'argomento perchè, avendo risolto il problema di fare il load dei
dati necessari alle listbox con una classe così:

TObjList = class(TObjectList)
private
function GetItems (const Index: integer): TTitolo;
procedure SetItems (const Index: integer; value: TTitolo);
public
property Items[const Index: integer]: TTitolo read GetItems write
SetItems; default;
constructor Create; virtual;
function LoadObjList (aDataset: TDataset): TObjList;
function LoadObj (aRecord: TDataset): TTitolo;
end;

adesso volevo rendere la classe utilizzabile ogni volta che devo caricare
dei dati, anche di vario genere. In effetti, i metodo della classe suddetta
fanno riferimento allo specifico oggetto TTitolo, e in particolare
'LoadObjList' usa LoadObj che restituisce un oggetto TTitolo.

Vorrei per esempio fare la stessa cosa con oggetti di tipo TBudget, ma non
ho trovato il modo. C'è ?
4ndre4 11 Feb 2017 19:36
On Saturday, 11 February 2017 17:37:30 UTC, Stark wrote:

[...]
> TObjList = class(TObjectList)

Ti stai facendo del male. Non si deve derivare una classe TObjList da
TObjectList. Se proprio vuoi fare una cosa del genere (e sono sicuro che
esistano soluzioni migliori al tuo problema), devi avere una classe TTuoLoader
che accetti un dataset ed una objectlist e contenga la logica di popolamento.
Stark 11 Feb 2017 20:53
"4ndre4" ha scritto nel messaggio
news:64b63fec-7a3d-4d82-9c57-21222e457335@googlegroups.com...
Ti stai facendo del male. Non si deve derivare una classe TObjList da
TObjectList. Se proprio vuoi fare una cosa del genere (e sono sicuro che
esistano soluzioni migliori al tuo problema), devi avere una classe
TTuoLoader che accetti un dataset ed una objectlist e contenga la logica di
popolamento.
...
Avrai ragione, ma non mi puoi spiegare perchè non si fa? E come invece si fa
?
4ndre4 12 Feb 2017 01:30
On Saturday, 11 February 2017 19:53:12 UTC, Stark wrote:

[...]
> Avrai ragione, ma non mi puoi spiegare perchè non si fa? E come invece si fa
> ?

Ma tu le leggi le risposte che ti vengono scritte o scrivi tanto per farlo?
"Come invece si fa" e` scritto precisamente nel mio messaggio a cui stai
rispondendo. Ti ho detto che devi crearti un TTuoLoader. A te sembra normale
che, se esiste una classe TObjectList, tu debba crearne un'altra chiamata
"TObjList" (?) che semplicemente la estenda per fare qualcosa in piu` che serve
a te, nello specifico? E` un chiaro design smell, ma non e` che posso farti qui
un intero corso di OO. Comincia a studiare:

https://en.wikipedia.org/wiki/Composition_over_inheritance
Stark 12 Feb 2017 10:58
"4ndre4" ha scritto nel messaggio
news:f9bb9bda-702d-40f7-86ab-15baabe070fa@googlegroups.com...
Ma tu le leggi le risposte che ti vengono scritte o scrivi tanto per farlo?
"Come invece si fa" e` scritto precisamente nel mio messaggio a cui stai
rispondendo. Ti ho detto che devi crearti un TTuoLoader. A te sembra normale
che, se esiste una classe TObjectList, tu debba crearne un'altra chiamata
"TObjList" (?) che semplicemente la estenda per fare qualcosa in piu` che
serve a te, nello specifico? E` un chiaro design smell, ma non e` che posso
farti qui un intero corso di OO. Comincia a studiare:
---
Le leggo, ma io con quella classe pensavo proprio di aver fatta quello che
tu suggerisci come TTuoLoader. Per quello avevo derivato la classe da
TObjectList: per dargli un metodo LoadObjList che accede alla fonte dei dati
(un dataset) e carica nella objectList tanti oggetti TTitolo, che sono poi i
records di una tabella Titoli.
E sto proprio studiando, è per quello che faccio qualche tentativo di object
orientation, sbagliando vedo ...
4ndre4 12 Feb 2017 11:25
On Sunday, 12 February 2017 09:58:18 UTC, Stark wrote:

[...]
> Le leggo, ma io con quella classe pensavo proprio di aver fatta quello che
> tu suggerisci come TTuoLoader.

E qui dimostri di non aver letto la mia risposta precedente, altrimenti
capiresti perche` quel che hai fatto tu NON e` quel che ho suggerito di fare io.
E non hai neanche letto l'articolo che ti ho linkato. Tu non vuoi imparare a
risolvere i tuoi problemi, tu vuoi qualcuno che ti dia la pappa pronta.

>Per quello avevo derivato la classe da
> TObjectList: per dargli un metodo LoadObjList

E io ti ho spiegato che non bisogna derivare, ma costruire un TTuoLoader che
abbia un metodo che accetti un dataset e una tobjectlist e carichi i dati. Ce la
fai a capire, detta cosi`, o hai bisogno che ti si scriva il codice?
Alberto Salvati 12 Feb 2017 11:50
Questa classe è SBAGLIATA.

A.
Stark 12 Feb 2017 18:30
"4ndre4" ha scritto nel messaggio
news:276331f3-ad3c-4fc7-a1b0-c79ad5f4026f@googlegroups.com...
E non hai neanche letto l'articolo che ti ho linkato. Tu non vuoi imparare a
risolvere i tuoi problemi, tu vuoi qualcuno che ti dia la pappa pronta.
--
Ma perchè siete ossessionati dalla paura che uno voglia la pappa fatta ?
Capisco che ti devo ringraziare per il solo fatto che interagisci con me, ma
non è vero che voglio la pappa fatta, magari solo un esempio! L'ho letto
l'articolo, non ho difficoltà con l'inglese, ma quando leggo la teoria tutto
mi sembra chiaro, poi non riesco a mettere in pratica. Provo ad interpretare
quello che mi hai detto e riparto dalla classe che avevo fatto io e che è,
ok, sbagliata. Dovrebbe essere rifatta sul tipo di quanto segue ?
TLoader = class
private
MyObjects: TObjectList;
public
function LoadObjList (aDataset: TDataset): TObjectList;
end;
4ndre4 12 Feb 2017 19:22
On Sunday, 12 February 2017 17:30:18 UTC, Stark wrote:

[...]
> Ma perchè siete ossessionati dalla paura che uno voglia la pappa fatta ?

Paura? Cioe` la cosa dovrebbe spaventarmi?

> non è vero che voglio la pappa fatta, magari solo un esempio!

L'esempio e` nel periodo che ho scritto nel messaggio precedente. Non ha senso
che mostri il tuo loader perche` manca tutto il resto della logica della tua
applicazione per capire se vada bene o meno. Devi prendere spunto da quel che ti
si consiglia ed applicarlo al tuo caso.
Alberto Salvati 13 Feb 2017 08:50
> Ma perchè siete ossessionati dalla paura che uno voglia la pappa fatta ?

Perchè, duole dirlo, spesso è così.

> TLoader = class
> private
> MyObjects: TObjectList;
> public
> function LoadObjList (aDataset: TDataset): TObjectList;
> end;

Un bel respiro prfondo, rileggi questo frammento di codice e rifletti.
E mo scrivi perchè, scusami ma devo dirtelo, hai scritto un altra *****ata.

A.
Stark 13 Feb 2017 14:14
> TLoader = class
> private
> MyObjects: TObjectList;
> public
> function LoadObjList (aDataset: TDataset): TObjectList;
> end;
Un bel respiro prfondo, rileggi questo frammento di codice e rifletti.
E mo scrivi perchè, scusami ma devo dirtelo, hai scritto un altra *****ata.
A.
----
Scusa, ma non vedo niente. Salvo forse che MyObjects è una proprietà inutile
messa così... Mi basterebbe LoadObjList.
Alberto Salvati 13 Feb 2017 14:21
> Scusa, ma non vedo niente.

Ok...affrontiamo la cosa da un livello diverso.
Delphi ha il garbage collector?
Basta un SI oppure un NO.


> Salvo forse che MyObjects è una proprietà inutile
> messa così... Mi basterebbe LoadObjList.

Che vuol dire "forse"?

A.

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione Delphi | Tutti i gruppi | it.comp.lang.delphi | Notizie e discussioni delphi | Delphi Mobile | Servizio di consultazione news.