Lazstats: Merge LatinSpecsUnit with LatinSqrsUnit. Inherit from BasicStatsReportFormUnit. Remove LatinSpecsUnit from project, delete files. Less hints and warnings.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7922 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2020-12-04 23:58:20 +00:00
parent 77d3a8e70f
commit d2ffe083b1
9 changed files with 1436 additions and 1721 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,581 +0,0 @@
object LatinSpecsFrm: TLatinSpecsFrm
Left = 887
Height = 519
Top = 260
Width = 420
AutoSize = True
Caption = 'Latin Squares Analysis Specification Form'
ClientHeight = 519
ClientWidth = 420
OnActivate = FormActivate
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.1.0.0'
object Label1: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 8
Height = 15
Top = 8
Width = 67
BorderSpacing.Left = 8
BorderSpacing.Top = 8
Caption = 'File Variables'
ParentColor = False
end
object Label8: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = nPerCellEdit
AnchorSideTop.Side = asrCenter
Left = 8
Height = 15
Top = 491
Width = 99
BorderSpacing.Left = 8
Caption = 'No. Cases per cell: '
ParentColor = False
end
object VarList: TListBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel7
AnchorSideBottom.Control = Bevel1
Left = 8
Height = 445
Top = 25
Width = 240
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Top = 2
BorderSpacing.Right = 8
Constraints.MinWidth = 150
ItemHeight = 0
OnSelectionChange = VarListSelectionChange
TabOrder = 0
end
object ResetBtn: TButton
AnchorSideRight.Control = CancelBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 226
Height = 25
Top = 486
Width = 54
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 12
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 3
end
object CancelBtn: TButton
AnchorSideRight.Control = OKBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 292
Height = 25
Top = 486
Width = 62
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 12
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Cancel'
ModalResult = 2
TabOrder = 4
end
object OKBtn: TButton
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 366
Height = 25
Top = 486
Width = 42
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 12
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'OK'
ModalResult = 1
OnClick = OKBtnClick
TabOrder = 5
end
object nPerCellEdit: TEdit
AnchorSideLeft.Control = Label8
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = OKBtn
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 115
Height = 23
Top = 487
Width = 48
Alignment = taRightJustify
BorderSpacing.Left = 8
BorderSpacing.Right = 12
TabOrder = 2
Text = 'nPerCellEdit'
end
object Bevel1: TBevel
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = OKBtn
Left = 0
Height = 8
Top = 470
Width = 420
Anchors = [akLeft, akRight, akBottom]
Shape = bsBottomLine
end
object Panel7: TPanel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = VarList
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Bevel1
Left = 256
Height = 440
Top = 25
Width = 156
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Right = 8
BevelOuter = bvNone
ChildSizing.VerticalSpacing = 16
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsHomogenousChildResize
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 440
ClientWidth = 156
TabOrder = 1
object PanelA: TPanel
AnchorSideRight.Side = asrBottom
Left = 0
Height = 60
Top = 0
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 0
object ACodeLabel: TLabel
AnchorSideLeft.Control = ACodeEdit
AnchorSideBottom.Control = ACodeEdit
Left = 37
Height = 15
Top = 8
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor A Code Variable'
ParentColor = False
end
object AInBtn: TBitBtn
AnchorSideLeft.Control = PanelA
AnchorSideTop.Control = PanelA
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = AInBtnClick
Spacing = 0
TabOrder = 0
end
object AOutBtn: TBitBtn
AnchorSideLeft.Control = PanelA
AnchorSideTop.Control = AInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = AOutBtnClick
Spacing = 0
TabOrder = 1
end
object ACodeEdit: TEdit
AnchorSideLeft.Control = AInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelA
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = AOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'ACodeEdit'
end
end
object PanelB: TPanel
Left = 0
Height = 60
Top = 76
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 1
object BCodeLabel: TLabel
AnchorSideLeft.Control = BCodeEdit
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = BCodeEdit
Left = 37
Height = 15
Top = 8
Width = 118
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor B Code Variable'
ParentColor = False
end
object BInBtn: TBitBtn
AnchorSideLeft.Control = PanelB
AnchorSideTop.Control = PanelB
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = BInBtnClick
Spacing = 0
TabOrder = 0
end
object BOutBtn: TBitBtn
AnchorSideLeft.Control = PanelB
AnchorSideTop.Control = BInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = BOutBtnClick
Spacing = 0
TabOrder = 1
end
object BCodeEdit: TEdit
AnchorSideLeft.Control = BInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelB
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = BOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'BCodeEdit'
end
end
object PanelC: TPanel
Left = 0
Height = 60
Top = 152
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 2
object CCodeLabel: TLabel
AnchorSideLeft.Control = CCodeEdit
AnchorSideBottom.Control = CCodeEdit
Left = 37
Height = 15
Top = 8
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor C Code Variable'
ParentColor = False
end
object CInBtn: TBitBtn
AnchorSideLeft.Control = PanelC
AnchorSideTop.Control = PanelC
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = CInBtnClick
Spacing = 0
TabOrder = 0
end
object COutBtn: TBitBtn
AnchorSideLeft.Control = PanelC
AnchorSideTop.Control = CInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = COutBtnClick
Spacing = 0
TabOrder = 1
end
object CCodeEdit: TEdit
AnchorSideLeft.Control = CInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelC
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = COutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'CCodeEdit'
end
end
object PanelD: TPanel
Left = 0
Height = 60
Top = 228
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 3
object DCodeLabel: TLabel
AnchorSideLeft.Control = DCodeEdit
AnchorSideBottom.Control = DCodeEdit
Left = 37
Height = 15
Top = 8
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor D Code Variable'
ParentColor = False
end
object DInBtn: TBitBtn
AnchorSideLeft.Control = PanelD
AnchorSideTop.Control = PanelD
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DInBtnClick
Spacing = 0
TabOrder = 0
end
object DOutBtn: TBitBtn
AnchorSideLeft.Control = PanelD
AnchorSideTop.Control = DInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DOutBtnClick
Spacing = 0
TabOrder = 1
end
object DCodeEdit: TEdit
AnchorSideLeft.Control = DInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelD
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'DCodeEdit'
end
end
object PanelGrp: TPanel
Left = 0
Height = 60
Top = 304
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 4
object GrpCodeLabel: TLabel
AnchorSideLeft.Control = GrpCodeEdit
AnchorSideBottom.Control = GrpCodeEdit
Left = 37
Height = 15
Top = 8
Width = 108
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Group Code Variable'
ParentColor = False
end
object GrpInBtn: TBitBtn
AnchorSideLeft.Control = PanelGrp
AnchorSideTop.Control = PanelGrp
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = GrpInBtnClick
Spacing = 0
TabOrder = 0
end
object GrpOutBtn: TBitBtn
AnchorSideLeft.Control = PanelGrp
AnchorSideTop.Control = GrpInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = GrpOutBtnClick
Spacing = 0
TabOrder = 1
end
object GrpCodeEdit: TEdit
AnchorSideLeft.Control = GrpInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelGrp
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = GrpOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'GrpCodeEdit'
end
end
object PanelDep: TPanel
Left = 0
Height = 60
Top = 380
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 5
object DepVarLabel: TLabel
AnchorSideLeft.Control = DepVarEdit
AnchorSideBottom.Control = DepVarEdit
Left = 37
Height = 15
Top = 8
Width = 102
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
ParentColor = False
end
object DataInBtn: TBitBtn
AnchorSideLeft.Control = PanelDep
AnchorSideTop.Control = PanelDep
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DataInBtnClick
Spacing = 0
TabOrder = 0
end
object DataOutBtn: TBitBtn
AnchorSideLeft.Control = PanelDep
AnchorSideTop.Control = DataInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DataOutBtnClick
Spacing = 0
TabOrder = 1
end
object DepVarEdit: TEdit
AnchorSideLeft.Control = DataInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelDep
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DataOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'DepVarEdit'
end
end
end
end

View File

@ -1,415 +0,0 @@
unit LatinSpecsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Buttons,
MainUnit, Globals;
type
{ TLatinSpecsFrm }
TLatinSpecsFrm = class(TForm)
AInBtn: TBitBtn;
nPerCellEdit: TEdit;
GrpOutBtn: TBitBtn;
DataInBtn: TBitBtn;
DataOutBtn: TBitBtn;
AOutBtn: TBitBtn;
BInBtn: TBitBtn;
BOutBtn: TBitBtn;
CInBtn: TBitBtn;
COutBtn: TBitBtn;
DInBtn: TBitBtn;
DOutBtn: TBitBtn;
GrpInBtn: TBitBtn;
Label8: TLabel;
PanelA: TPanel;
PanelB: TPanel;
PanelC: TPanel;
PanelD: TPanel;
PanelGrp: TPanel;
PanelDep: TPanel;
Panel7: TPanel;
ResetBtn: TButton;
CancelBtn: TButton;
OKBtn: TButton;
ACodeEdit: TEdit;
BCodeEdit: TEdit;
CCodeEdit: TEdit;
DCodeEdit: TEdit;
GrpCodeEdit: TEdit;
DepVarEdit: TEdit;
Label1: TLabel;
ACodeLabel: TLabel;
BCodeLabel: TLabel;
CCodeLabel: TLabel;
DCodeLabel: TLabel;
GrpCodeLabel: TLabel;
DepVarLabel: TLabel;
VarList: TListBox;
Bevel1: TBevel;
procedure AInBtnClick(Sender: TObject);
procedure AOutBtnClick(Sender: TObject);
procedure BInBtnClick(Sender: TObject);
procedure BOutBtnClick(Sender: TObject);
procedure CInBtnClick(Sender: TObject);
procedure COutBtnClick(Sender: TObject);
procedure DataInBtnClick(Sender: TObject);
procedure DataOutBtnClick(Sender: TObject);
procedure DInBtnClick(Sender: TObject);
procedure DOutBtnClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GrpInBtnClick(Sender: TObject);
procedure GrpOutBtnClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure VarListSelectionChange(Sender: TObject; {%H-}User: boolean);
private
{ private declarations }
FAutoSized: Boolean;
procedure UpdateBtnStates;
function Validate(out AMsg: String; out AControl: TWinControl): Boolean;
public
{ public declarations }
procedure PrepareForPlan(APlan: integer);
end;
var
LatinSpecsFrm: TLatinSpecsFrm;
implementation
uses
Math,
Utils, LatinSqrsUnit;
{ TLatinSpecsFrm }
procedure TLatinSpecsFrm.PrepareForPlan(APlan: Integer);
begin
ResetBtnClick(nil);
case APlan of
1: begin
PanelD.Visible := false;
PanelGrp.Visible := false;
end;
2: begin
PanelD.Visible := true;
PanelGrp.Visible := false;
end;
3: begin
PanelD.Visible := true;
PanelGrp.Visible := false;
end;
4: begin
PanelD.Visible := true;
PanelGrp.Visible := false;
end;
5: begin
PanelD.Visible := false;
PanelGrp.Visible := true;
end;
6: begin
PanelD.Visible := false;
PanelGrp.Visible := true;
end;
7: begin
PanelD.Visible := true;
PanelGrp.Visible := true;
end;
9: begin
PanelD.Visible := true;
PanelGrp.Visible := true;
end;
end;
end;
procedure TLatinSpecsFrm.ResetBtnClick(Sender: TObject);
var
i: integer;
begin
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
ACodeEdit.Text := '';
BCodeEdit.Text := '';
CCodeEdit.Text := '';
DCodeEdit.Text := '';
GrpCodeEdit.Text := '';
DepVarEdit.Text := '';
nPerCellEdit.Text := '';
UpdatebtnStates;
end;
procedure TLatinSpecsFrm.FormActivate(Sender: TObject);
var
w: Integer;
begin
if FAutoSized then
exit;
w := MaxValue([ResetBtn.Width, CancelBtn.Width, OKBtn.Width]);
ResetBtn.Constraints.MinWidth := w;
CancelBtn.Constraints.MinWidth := w;
OKBtn.Constraints.MinWidth := w;
VarList.Constraints.MinHeight := Panel7.Height;
Constraints.MinWidth := nPerCellEdit.Left + nPerCellEdit.Width + Width - ResetBtn.Left + ResetBtn.BorderSpacing.Left;
Constraints.MinHeight := Height;
FAutoSized := true;
end;
procedure TLatinSpecsFrm.FormCreate(Sender: TObject);
begin
Assert(OS3MainFrm <> nil);
end;
procedure TLatinSpecsFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(Self);
end;
procedure TLatinSpecsFrm.AInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (ACodeEdit.Text = '') then
begin
ACodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.AOutBtnClick(Sender: TObject);
begin
if ACodeEdit.Text <> '' then
begin
VarList.Items.Add(ACodeEdit.Text);
ACodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.BInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (BCodeEdit.Text = '') then
begin
BCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.BOutBtnClick(Sender: TObject);
begin
if BCodeEdit.Text <> '' then
begin
VarList.Items.Add(BCodeEdit.Text);
BCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.CInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (CCodeEdit.Text = '') then
begin
CCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.COutBtnClick(Sender: TObject);
begin
if CCodeEdit.Text <> '' then
begin
VarList.Items.Add(CCodeEdit.Text);
CCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DataInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (DepVarEdit.Text = '') then
begin
DepVarEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DataOutBtnClick(Sender: TObject);
begin
if DepVarEdit.Text <> '' then
begin
VarList.Items.Add(DepVarEdit.Text);
DepVarEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (DCodeEdit.Text = '') then
begin
DCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DOutBtnClick(Sender: TObject);
begin
if DCodeEdit.Text <> '' then
begin
VarList.Items.Add(DCodeEdit.Text);
DCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.GrpInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (GrpCodeEdit.Text = '') then
begin
GrpCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.GrpOutBtnClick(Sender: TObject);
begin
if GrpCodeEdit.Text <> '' then
begin
VarList.Items.Add(GrpCodeEdit.Text);
GrpCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.OKBtnClick(Sender: TObject);
var
C: TWinControl;
msg: String;
begin
if not Validate(msg, C) then begin
C.SetFocus;
ErrorMsg(msg);
ModalResult := mrNone;
end;
end;
procedure TLatinSpecsFrm.UpdateBtnStates;
begin
AInBtn.Enabled := (VarList.ItemIndex > -1) and (ACodeEdit.Text = '');
BInBtn.Enabled := (VarList.ItemIndex > -1) and (BCodeEdit.Text = '');
CInBtn.Enabled := (VarList.ItemIndex > -1) and (CCodeEdit.Text = '');
DInBtn.Enabled := (VarList.ItemIndex > -1) and (DCodeEdit.Text = '');
GrpInBtn.Enabled := (VarList.ItemIndex > -1) and (GrpCodeEdit.Text = '');
DataInBtn.Enabled := (VarList.ItemIndex > -1) and (DepVarEdit.Text = '');
AOutBtn.Enabled := (ACodeEdit.Text <> '');
BOutBtn.Enabled := (BCodeEdit.Text <> '');
COutBtn.Enabled := (CCodeEdit.Text <> '');
DOutBtn.Enabled := (DCodeEdit.Text <> '');
GrpOutBtn.Enabled := (GrpCodeEdit.Text <> '');
DataOutBtn.Enabled := (DepVarEdit.Text <> '');
end;
function TLatinSpecsFrm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
var
n: Integer;
begin
Result := false;
if (nPerCellEdit.Text = '') then begin
AMsg := 'Please specify the number of cases per cell.';
AControl := nPercellEdit;
exit;
end;
if not TryStrToInt(nPerCellEdit.Text, n) or (n <= 0) then begin
AMsg := 'Please specify a valid (positive) number for the cases per cell.';
AControl := nPercellEdit;
exit;
end;
if PanelA.Visible and (ACodeEdit.Text = '') then
begin
AMsg := 'Factor A code variable is not specified.';
AControl := ACodeEdit;
exit;
end;
if PanelB.Visible and (BCodeEdit.Text = '') then
begin
AMsg := 'Factor B code variable is not specified.';
Acontrol := BCodeEdit;
exit;
end;
if PanelC.Visible and (CCodeEdit.Text = '') then
begin
AMsg := 'Factor C code variable is not specified.';
Acontrol := CCodeEdit;
exit;
end;
if PanelD.Visible and (DCodeEdit.Text = '') then
begin
AMsg := 'Factor D code variable is not specified.';
Acontrol := DCodeEdit;
exit;
end;
if PanelGrp.Visible and (GrpCodeEdit.Text = '') then
begin
AMsg := 'Group code variable is not specified.';
Acontrol := GrpCodeEdit;
exit;
end;
if PanelDep.Visible and (DepVarEdit.Text = '') then
begin
AMsg := 'Dependent variable is not specified.';
Acontrol := DepVarEdit;
exit;
end;
Result := true;
end;
procedure TLatinSpecsFrm.VarListSelectionChange(Sender: TObject; User: boolean);
begin
UpdateBtnStates;
end;
initialization
{$I latinspecsunit.lrs}
end.

View File

@ -1,109 +1,538 @@
object LatinSqrsFrm: TLatinSqrsFrm
Left = 199
Height = 248
Top = 108
Width = 523
inherited LatinSqrsForm: TLatinSqrsForm
Left = 225
Height = 573
Top = 168
Width = 914
HelpType = htKeyword
HelpKeyword = 'html/LatinandGreco-LatinSquares.htm'
ActiveControl = Plan
AutoSize = True
BorderStyle = bsDialog
Caption = 'Latin and Greco-Latin Squares Analyses'
ClientHeight = 248
ClientWidth = 523
OnActivate = FormActivate
OnCreate = FormCreate
Position = poMainFormCenter
LCLVersion = '2.1.0.0'
object ComputeBtn: TButton
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Plan
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = CloseBtn
Left = 372
Height = 25
Top = 214
Width = 76
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 2
ClientHeight = 573
ClientWidth = 914
inherited ParamsPanel: TPanel
Height = 557
Width = 355
ClientHeight = 557
ClientWidth = 355
inherited CloseBtn: TButton
Left = 300
Top = 532
end
inherited ComputeBtn: TButton
Left = 216
Top = 532
end
inherited ResetBtn: TButton
Left = 154
Top = 532
end
inherited HelpBtn: TButton
Tag = 130
Left = 95
Top = 532
end
inherited ButtonBevel: TBevel
Top = 516
Width = 355
end
object PlanLabel: TLabel[5]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = ParamsPanel
Left = 0
Height = 15
Top = 0
Width = 73
Caption = 'Winer''s Plans:'
ParentColor = False
end
object PlanCombo: TComboBox[6]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = PlanLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
Left = 0
Height = 23
Top = 17
Width = 355
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2
BorderSpacing.Bottom = 8
DropDownCount = 16
ItemHeight = 15
Items.Strings = (
'Plan 1. Three Factors (A,B,C) with no interactions.'
'Plan 2. Four Factors (A,B,C,D) with partial interactions.'
'Plan 3. Like Plan 2 but different assumptions (Partial confounding of interaction ABC.)'
'Plan 4. The Greco-Latin with no interactions assumed.'
'Plan 5. Repeated measures Latin Square (random assignment of groups to rows.)'
'Plan 6. Fractional replication of a three factor factorial experiment in incomplete blocks.'
'Plan 7. Plan 5 with superimposing of an orthogonal Latin square.'
'Plan 9. AxBxC (same square used for all levels of Factor C.)'
)
OnChange = PlanComboChange
Style = csDropDownList
TabOrder = 4
end
object PlanPanel: TPanel[7]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = PlanCombo
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonBevel
Left = 0
Height = 468
Top = 48
Width = 355
Anchors = [akTop, akLeft, akRight, akBottom]
BevelOuter = bvNone
ClientHeight = 468
ClientWidth = 355
TabOrder = 5
Visible = False
object Label1: TLabel
AnchorSideLeft.Control = PlanPanel
AnchorSideTop.Control = PlanPanel
Left = 0
Height = 15
Top = 0
Width = 67
Caption = 'File Variables'
ParentColor = False
end
object VarList: TListBox
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = AInBtn
AnchorSideBottom.Control = nPerCellEdit
Left = 0
Height = 416
Top = 17
Width = 158
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 2
BorderSpacing.Right = 6
BorderSpacing.Bottom = 12
ItemHeight = 0
OnDblClick = VarListDblClick
OnSelectionChange = VarListSelectionChange
TabOrder = 0
end
object AInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = VarList
Left = 164
Height = 26
Top = 17
Width = 26
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = AInBtnClick
Spacing = 0
TabOrder = 1
end
object AOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = AInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 47
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = AOutBtnClick
Spacing = 0
TabOrder = 2
end
object ACodeLabel: TLabel
AnchorSideLeft.Control = ACodeEdit
AnchorSideBottom.Control = ACodeEdit
Left = 198
Height = 15
Top = 21
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor A Code Variable'
ParentColor = False
end
object ACodeEdit: TEdit
AnchorSideLeft.Control = AInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = AOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 38
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 3
Text = 'ACodeEdit'
end
object BInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = AOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 89
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = BInBtnClick
Spacing = 0
TabOrder = 4
end
object BOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = BInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 119
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = BOutBtnClick
Spacing = 0
TabOrder = 5
end
object BCodeLabel: TLabel
AnchorSideLeft.Control = BCodeEdit
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = BCodeEdit
Left = 198
Height = 15
Top = 93
Width = 118
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor B Code Variable'
ParentColor = False
end
object BCodeEdit: TEdit
AnchorSideLeft.Control = BInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = BOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 110
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 6
Text = 'BCodeEdit'
end
object CCodeLabel: TLabel
AnchorSideLeft.Control = CCodeEdit
AnchorSideBottom.Control = CCodeEdit
Left = 198
Height = 15
Top = 165
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor C Code Variable'
ParentColor = False
end
object CCodeEdit: TEdit
AnchorSideLeft.Control = CInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = COutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 182
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 7
Text = 'CCodeEdit'
end
object CInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = BOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 161
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = CInBtnClick
Spacing = 0
TabOrder = 8
end
object COutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = CInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 191
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = COutBtnClick
Spacing = 0
TabOrder = 9
end
object DInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = COutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 233
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DInBtnClick
Spacing = 0
TabOrder = 10
end
object DOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 263
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DOutBtnClick
Spacing = 0
TabOrder = 11
end
object DCodeLabel: TLabel
AnchorSideLeft.Control = DCodeEdit
AnchorSideBottom.Control = DCodeEdit
Left = 198
Height = 15
Top = 237
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor D Code Variable'
ParentColor = False
end
object DCodeEdit: TEdit
AnchorSideLeft.Control = DInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 254
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 12
Text = 'DCodeEdit'
end
object GrpInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 305
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = GrpInBtnClick
Spacing = 0
TabOrder = 13
end
object GrpOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = GrpInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 335
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = GrpOutBtnClick
Spacing = 0
TabOrder = 14
end
object GrpCodeLabel: TLabel
AnchorSideLeft.Control = GrpCodeEdit
AnchorSideBottom.Control = GrpCodeEdit
Left = 198
Height = 15
Top = 309
Width = 108
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Group Code Variable'
ParentColor = False
end
object GrpCodeEdit: TEdit
AnchorSideLeft.Control = GrpInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = GrpOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 326
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 15
Text = 'GrpCodeEdit'
end
object DataInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = GrpOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 377
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DataInBtnClick
Spacing = 0
TabOrder = 16
end
object DataOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DataInBtn
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 164
Height = 26
Top = 407
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DataOutBtnClick
Spacing = 0
TabOrder = 17
end
object DepVarLabel: TLabel
AnchorSideLeft.Control = DepVarEdit
AnchorSideBottom.Control = DepVarEdit
Left = 198
Height = 15
Top = 381
Width = 102
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
ParentColor = False
end
object DepVarEdit: TEdit
AnchorSideLeft.Control = DataInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DataOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 398
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 18
Text = 'DepVarEdit'
end
object Label8: TLabel
AnchorSideLeft.Control = PlanPanel
AnchorSideTop.Control = nPerCellEdit
AnchorSideTop.Side = asrCenter
Left = 8
Height = 15
Top = 449
Width = 138
BorderSpacing.Left = 8
Caption = 'Number of Cases per cell: '
ParentColor = False
end
object nPerCellEdit: TEdit
AnchorSideLeft.Control = Label8
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = PlanPanel
AnchorSideBottom.Side = asrBottom
Left = 154
Height = 23
Top = 445
Width = 48
Alignment = taRightJustify
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 12
TabOrder = 19
Text = 'nPerCellEdit'
end
end
end
object CloseBtn: TButton
AnchorSideTop.Control = Plan
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 460
Height = 25
Top = 214
Width = 55
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
Caption = 'Close'
ModalResult = 11
TabOrder = 3
inherited ParamsSplitter: TSplitter
Left = 367
Height = 573
end
object Plan: TRadioGroup
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 8
Height = 198
Top = 8
Width = 515
AutoFill = True
AutoSize = True
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
Caption = 'Winer''s Plans:'
ChildSizing.LeftRightSpacing = 12
ChildSizing.TopBottomSpacing = 6
ChildSizing.VerticalSpacing = 2
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 178
ClientWidth = 511
Items.Strings = (
'Plan 1. Three Factors (A,B,C) with no interactions.'
'Plan 2. Four Factors (A,B,C,D) with partial interactions.'
'Plan 3. Like Plan 2 but different assumptions (Partial confounding of interaction ABC.)'
'The Greco-Latin with no interactions assumed.'
'Plan 5. Repeated measures Latin Square (random assignment of groups to rows.)'
'Plan 6. Fractional replication of a three factor factorial experiment in incomplete blocks.'
'Plan 7. Plan 5 with superimposing of an orthogonal Latin square.'
'Plan 9. AxBxC (same square used for all levels of Factor C.)'
)
TabOrder = 0
end
object HelpBtn: TButton
Tag = 130
AnchorSideTop.Control = Plan
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ComputeBtn
Left = 313
Height = 25
Top = 214
Width = 51
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
Caption = 'Help'
OnClick = HelpBtnClick
inherited PageControl: TPageControl
Left = 376
Height = 557
Width = 530
ActivePage = ReportPage
TabIndex = 0
TabOrder = 1
end
end

View File

@ -963,8 +963,12 @@ Label
const
ZERO = 0.0;
var
ISZ, MAX, LIM, I, J, NV1, M, M1, ITP, NP, NP1, L3, DF: integer;
G21, G22, G23, AVG: double;
ISZ, MAX, LIM, I, J, NV1, M, M1, ITP, NP, NP1, L3: integer;
DF: Integer = 0;
G21: Double = 0.0;
G22: Double = 0.0;
G23: Double = 0.0;
AVG: double;
begin
//

View File

@ -239,7 +239,6 @@ var
NoSelected : integer;
ColNoSelected : IntDyneVec = nil;
finished : boolean;
error : integer;
lReport: TStrings;
begin
SetLength(ColNoSelected,NoVariables);

View File

@ -1844,9 +1844,9 @@ end;
// Menu "Analysis" > "Comparisons" > "Latin and Greco-Latin Squares"
procedure TOS3MainFrm.mnuAnalysisComp_LatinSquaresClick(Sender: TObject);
begin
if LatinSqrsFrm = nil then
Application.CreateForm(TLatinSqrsFrm, LatinSqrsFrm);
LatinSqrsFrm.ShowModal;
if LatinSqrsForm = nil then
Application.CreateForm(TLatinSqrsForm, LatinSqrsForm);
LatinSqrsForm.Show;
end;
// Menu "Analysis" > "Comparisons" > "ABC Anova with B Nested in A"

View File

@ -120,10 +120,10 @@ label
var
// vtimesw, v, ainverse : matrix;
// w : vector;
ainverse : array of array of double;
ainverse : array of array of double = nil;
m, nm,l,k,j,its,i: integer;
z,y,x,scale,s,h,g,f,c,anorm: double;
rv1: array of double;
rv1: array of double = nil;
BEGIN
setlength(rv1,n);
@ -930,7 +930,9 @@ procedure SVDinverse(VAR a : DblDyneMat; N : integer);
// a shorter version of the matinv routine that ignores v, w, and vtimes w
// matrices in the singular value decompensation inverse procedure
var
v, w, vtimesw : DblDyneMat;
v: DblDyneMat = nil;
w: DblDyneMat = nil;
vtimesw: DblDyneMat = nil;
begin
SetLength(v,N,N);
SetLength(w,N,N);
@ -1387,8 +1389,9 @@ end; // End ord function
procedure Rank(v1col : integer; VAR Values : DblDyneVec);
// calculates the ranks for values stored in the data grid in column v1col
var
pcntiles, CatValues : DblDyneVec;
freq : IntDyneVec;
pcntiles: DblDyneVec = nil;
CatValues : DblDyneVec = nil;
freq : IntDyneVec = nil;
i, j, nocats : integer;
Temp, cumfreq, upper, lower : double;
@ -1463,8 +1466,11 @@ procedure PRank(v1col: integer; var Values: DblDyneVec; AReport: TStrings);
// computes the percentile ranks of values stored in the data grid
// at column v1col
var
pcntiles, cumfm, CatValues: DblDyneVec;
freq, cumf: IntDyneVec;
pcntiles: DblDyneVec = nil;
cumfm: DblDyneVec = nil;
CatValues: DblDyneVec = nil;
freq: IntDyneVec = nil;
cumf: IntDyneVec = nil;
Temp: double;
i, j, nocats, ncases: integer;
begin