LazStats: Fix SRHTestUnit crashing at CloseFile.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7839 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-11-03 10:45:14 +00:00
parent 54a5340153
commit d660825c51

View File

@ -73,6 +73,8 @@ type
F1Labels: StrDyneVec; F1Labels: StrDyneVec;
F2Labels: StrDyneVec; F2Labels: StrDyneVec;
procedure GetColsSelected(out AColsSelected: IntDyneVec);
function GetLabels(AColsSelected: IntDyneVec): Boolean; function GetLabels(AColsSelected: IntDyneVec): Boolean;
function Calc2Way(const AColsSelected: IntDyneVec; function Calc2Way(const AColsSelected: IntDyneVec;
@ -364,10 +366,7 @@ var
res: TSRHResults; res: TSRHResults;
begin begin
// Get column numbers of dependent variable and factors // Get column numbers of dependent variable and factors
SetLength(colNoSelected, 3); GetColsSelected(colNoSelected);
colNoSelected[0] := GetVariableIndex(OS3MainFrm.DataGrid, DepVar.Text);
colNoSelected[1] := GetVariableIndex(OS3MainFrm.DataGrid, Factor1.Text);
colNoSelected[2] := GetVariableIndex(OS3MainFrm.DataGrid, Factor2.Text);
// get labels for each factor level // get labels for each factor level
if not GetLabels(colNoSelected) then if not GetLabels(colNoSelected) then
@ -461,6 +460,16 @@ begin
end; end;
procedure TSRHTestForm.GetColsSelected(out AColsSelected: IntDyneVec);
begin
AColsSelected := nil;
SetLength(AColsSelected, 3);
AColsSelected[0] := GetVariableIndex(OS3MainFrm.DataGrid, DepVar.Text);
AColsSelected[1] := GetVariableIndex(OS3MainFrm.DataGrid, Factor1.Text);
AColsSelected[2] := GetVariableIndex(OS3MainFrm.DataGrid, Factor2.Text);
end;
function TSRHTestForm.GetLabels(AColsSelected: IntDyneVec): Boolean; function TSRHTestForm.GetLabels(AColsSelected: IntDyneVec): Boolean;
var var
i, nF1, nF2: integer; i, nF1, nF2: integer;
@ -758,8 +767,11 @@ var
begin begin
tb := Sender as TToolButton; tb := Sender as TToolButton;
tb.Down := true; tb.Down := true;
FChartSeries.Source := FChartSources[tb.Tag - 10];
if FChartSeries = nil then
exit;
FChartSeries.Source := FChartSources[tb.Tag - 10];
case tb.Tag-10 of case tb.Tag-10 of
0: begin // x = Factor 1 0: begin // x = Factor 1
FChartFrame.SetTitle(Factor1.Text); FChartFrame.SetTitle(Factor1.Text);
@ -798,13 +810,15 @@ procedure TSRHTestForm.Reset;
var var
i : integer; i : integer;
begin begin
FreeAndNil(FChartSeries);
inherited; inherited;
if FChartSources[0] <> nil then if FChartSources[0] <> nil then
begin begin
//SelectPlot(FSeriesButtons[0]);
for i := 0 to High(FChartSources) do for i := 0 to High(FChartSources) do
FChartSources[i].Clear; FChartSources[i].Clear;
SelectPlot(FSeriesButtons[0]);
end; end;
DepVar.Clear; DepVar.Clear;