SCAR Code:
type
TBands = record
vocalistPoints, guitaristPoints, drummerPoints,
bassistPoints, totalPoints: Extended;
name: string;
end;
const
minB = 1;
maxB = 20;
var
form: TForm;
labels: array[0..1] of array[minB..maxB] of TLabel;
lbledits: array[0..4] of TLabeledEdit;
groupbox: array[0..1] of TGroupBox;
scrollbox: TScrollBox;
button: TButton;
bands: array[minB..maxB] of TBands;
function accuracy(e: Extended; i: Integer): Extended;
var
x: Integer;
begin
Result:= e;
x:= Pos(',', FloatToStr(Result));
if(x = 0)then
Exit;
Result:= StrToFloat(Copy(FloatToStr(Result), 0, x - 1) + '.' + Copy(FloatToStr(Result), x + 1, i));
end;
function average(TEA: TExtendedArray): Extended;
var
i: Integer;
e: Extended;
begin
try
SetArrayLength(TEA, GetArrayLength(TEA));
for i:= 0 to GetArrayLength(TEA) - 1 do
e:= e + TEA[i];
Result:= e div GetArrayLength(TEA);
except
Result:= -1;
end;
end;
procedure refreshBands;
var
i: Integer;
s: string;
begin
for i:= Low(bands) to High(bands) do
begin
if(bands[i].name = '')then
Exit;
s:= '[Name: ' + bands[i].name + '] ' +
'[Total Pts: ' + FloatToStr(bands[i].totalPoints) + '] ' +
'[Vocalist Pts: ' + FloatToStr(bands[i].vocalistPoints) + ',' +
' Guitarist Pts: ' + FloatToStr(bands[i].guitaristPoints) + ',' +
' Bassist Pts: ' + FloatToStr(bands[i].bassistPoints) + ',' +
' Drummer Pts: ' + FloatToStr(bands[i].drummerPoints) + ']';
labels[1][i].Caption:= s;
end;
end;
procedure add(Sender: TObject);
var
i, i2: Integer;
TEA: TExtendedArray;
e: Extended;
begin
SetArrayLength(TEA, 4);
for i:= Low(bands) to High(bands) do
if(bands[i].Name = lbledits[0].Text)then
begin
WriteLn('Band exists already!');
Exit;
end;
for i:= 1 to 4 do
try
TEA[i - 1]:= accuracy(StrToFloat(lbledits[i].Text), 2);
except
TEA[i - 1]:= 0;
end;
e:= accuracy(average(TEA), 2);
for i:= High(bands) downto Low(bands) do
if(e > bands[i].totalPoints)then
i2:= i;
if(i2 > 0)then
begin
for i:= High(bands) downto i2 + 1 do
begin
bands[i]:= bands[i - 1];
bands[i]:= bands[i - 1];
end;
bands[i].name:= lbledits[0].Text;
bands[i].vocalistPoints:= TEA[0];
bands[i].guitaristPoints:= TEA[1];
bands[i].bassistPoints:= TEA[2];
bands[i].drummerPoints:= TEA[3];
bands[i].totalPoints:= e;
refreshBands;
end;
SetArrayLength(TEA, 0);
end;
function buildForm: Boolean;
var
i, i2: Integer;
TSA: TStringArray;
begin
form:= CreateForm;
form.SetBounds(0, 0, 500, 300);
form.Position:= poScreenCenter;
form.BorderStyle:= bsSingle;
form.BorderIcons:= [biMinimize, biSystemMenu];
for i:= 0 to 1 do
begin
groupbox[i]:= TGroupBox.Create(form);
groupbox[i].Parent:= form;
case i of
0: begin
groupbox[i].Caption:= 'Add Band';
groupbox[i].SetBounds(10, 10, 130, 250);
end;
1: begin
groupbox[i].Caption:= 'Top Bands';
groupbox[i].SetBounds(150, 10, 330, 250);
end;
end;
end;
TSA:= ['Band Name', 'Vocalist', 'Guitarist', 'Bassist', 'Drummer'];
scrollbox:= TScrollBox.Create(form);
scrollbox.BorderStyle:= bsNone;
scrollbox.Color:= clWhite;
scrollbox.Parent:= groupbox[1];
scrollbox.SetBounds(5, 15, 320, 230);
for i:= 0 to 4 do
begin
lbledits[i]:= TLabeledEdit.Create(form);
lbledits[i].Parent:= groupbox[0];
if(i > 0)then
begin
lbledits[i].SetBounds(45, 32 + i * 39, 30, 21);
lbledits[i].Text:= '10';
end else
lbledits[i].SetBounds(5, 30, 119, 21);
lbledits[i].EditLabel.Caption:= TSA[i];
end;
lbledits[0].Text:= 'perfectBand'
SetArrayLength(TSA, 0);
button:= TButton.Create(form);
button.Parent:= groupbox[0];
button.Caption:= 'Add';
button.SetBounds(5, 215, 119, 28);
button.OnClick:= @add;
for i:= Low(labels) to High(labels) do
for i2:= Low(labels[i]) to High(labels[i]) do
begin
labels[i][i2]:= TLabel.Create(form);
labels[i][i2].Parent:= scrollbox;
case i of
0: begin
labels[0][i2].Font.Color:= clBlue;
labels[0][i2].SetBounds(5, 5 + (i2 - 1) * 15, 21, 15);
labels[0][i2].Caption:= IntToStr(i2) + '.';
end;
1: begin
labels[1][i2].Font.Color:= clRed;
labels[1][i2].SetBounds(labels[0][i2].Left + (labels[0][i2].Width + 5), labels[0][i2].Top, 21, 15);
end;
end;
end;
Result:= (form.ShowModal = mrOK);
end;
function loadForm: Variant;
var
v: TVariantArray;
begin
SetArrayLength(v, 0);
Result:= ThreadSafeCall('buildForm', v);
end;
begin
try
loadForm;
except
finally
FreeForm(form);
end;
end.
..that you are trying to build?