Ciao,
ho dichiarato questa struttura:
TDatiGenPortlet=Record
AltForm:Integer;
LarghForm:Integer;
StrCode:String;
DatiJsonDef:TJSONData;
end;
TJSONData, è un oggetto dichiarato nella unit fpjson.
Il mio dubbio è questo: se dichiaro una variabile di tipo TDatiGenPortlet, quando ho finito di usarla, devo fare qualcosa di particolare per evitare memory leak dovuti a DatiJsonDef??
Grazie, Mario
In tutta onestà non ho mai usato i record così. Hai già provato a ficcarci un costruttore e un distruttore e vedere se compila? Se si, metti un brackpoint e guarda se passa dal distruttore prima o poi.
Quando ho imparato il Pascal, nel millennio scorso, le classi non esistevano ancora, ed ho imparato ad usare i record.
Poi, come accade spesso, quando per anni usi qualcosa che funziona, abbandonarlo per altro, non è sempre semplice !!!
Ci avevo provato, ma non compilava ...
Oggi mi sono deciso, e sto facendo la modifica. Non la sto facendo "come si deve", ma comunque funzionante.
Praticamente ho modificato la dichiarazione così
TDatiPortletClass = class(TObject)
public
NomeSrc:String;
AltForm:Integer;
LarghForm:Integer;
StrCode:String;
DatiJsonDef:TJSONData;
public
constructor Create;
destructor Destroy; override;
end;
Fatto così, le modifiche da fare al codice sono veramente minime, e nella destroy posso ora specificare la Free di DatiJsonDef, togliendomi il problema per cui avevo aperto questo thread
Quando poi avrò tempo, sistemerò la classe, usando le proprietà e non le semplici variabili.
Ciao, Mario