ich versuche mich weiter in der OOP und Klassen und so. Und ich verstehe gerade nicht, warum ich beim Freigeben eine Klasse rausfliege:
Der Code (die wesentlichen Teile) Teil 1 - Definintion:
Code: Alles auswählen
const
TSignalPoint = class
Time: double;
Value: double;
constructor Create; overload;
constructor Create(t: double; v: double); overload;
end;
TTimeSeries = class
Name: string;
NoEntries: integer;
Signal: TObjectList<TSignalPoint>;
constructor Create;
destructor Destroy; override;
procedure SaveToFile(fname: string);
end;
TTimeSeriesArray = Array of TTimeSeries;
var
BoltLTS: TTimeSeriesArray;
// Class: TSignalPoint
// -------------------
// create generic signal point (0,0)
constructor TSignalPoint.Create;
begin
inherited;
Time := 0.0;
Value := 0.0;
end;
// create signal point from time and value pair
constructor TSignalPoint.Create(t: double; v: double);
begin
Time := t;
Value := v;
end;
// Class: TTimeSeries
// ------------------
// create empty timeseries
constructor TTimeSeries.Create;
begin
inherited;
Name := '';
NoEntries := 0;
Signal := TObjectList<TSignalPoint>.Create;
end;
destructor TTimeSeries.Destroy;
begin
Signal.Free;
inherited Destroy;
end;
Code: Alles auswählen
try
BoltLTS := Read_TimeSeries_MultiChannel(FullFileName);
LogMemo.Append(' LTS-file loaded');
LogMemo.Append(Format(' No Bolts: %d ',[Length(BoltLTS)]));
// Output of some LTS parameter
for i:=0 to Length(BoltLTS)-1 do
LogMemo.Append(Format(' Bolt: %d ("%s"): %d',
[i,BoltLTS[i].Name,BoltLTS[i].NoEntries]));
for i:=0 to Length(BoltLTS)-1 do
processTimeSeries(BoltLTS[i]);
finally
for i:=0 to Length(BoltLTS)-1 do
begin
LogMemo.Append(Format(' Free Bolt: %d ("%s")',
[i,BoltLTS[i].Name]));
BoltLTS[i].Free; // <---- genau das funktioniert nicht
end;
SetLength(BoltLTS,0);
end;
Es könnte was einfaches sein; es könnte auch sein, dass ich einfach noch was nicht richtig verstanden habe (Constructor, Destructor mit inherited). Auch im Zusammenspiel mit Generics und dem Array of ....
Dankbar für jeden Tipp.
Photor
PS: wenn gebraucht, kann ich versuchen ein abgespecktes Projekt zusammenstellen.