I read jhildies tut on adding MultiPlayer to Forms and I did it exactly as he said to and I get unknown identifier errors. How Do I fix it? I get unknown Identifier LoadUs;. and I am sure that I will also get The same for SaveUs;. What should I do to fix it?
SCAR Code:
Program Form;
{.include Srl/SRL.scar}
var
frmDesign : TForm;
Label1 : TLabel;
Label2 : TLabel;
Username : TEdit;
Password : TEdit;
Nick : TEdit;
Loads : TEdit;
Active : TComboBox;
GroupBox1 : TGroupBox;
Previous : TButton;
DeletePlayer : TButton;
CreatePlayer : TButton;
Next : TButton;
cUser : integer;
{*******************************************************************************
procedure AddUser;
By: RsN
Description:
*******************************************************************************}
procedure AddUser;
begin
SetArrayLength(Players, GetArrayLength(Players) + 1);
Players[GetArrayLength(Players) - 1].Name := 'New Name';
Players[GetArrayLength(Players) - 1].Pass := 'New Pass';
Players[GetArrayLength(Players) - 1].Nick := 'New Nick';
Players[GetArrayLength(Players) - 1].Active := True;
Players[GetArrayLength(Players) - 1].Integer[0] := 0;
end;
{*******************************************************************************
procedure Inititate(Sender : TObject);
By: RsN
Description:
*******************************************************************************}
procedure Inititate(Sender: TObject);
begin
lblUser.Caption := IntToStr(cUser);
Players[cUser].Nick := edNick.Text;
Players[cUser].Name := edUser.Text;
Players[cUser].Pass := edPass.Text;
Players[cUser].Integer[0] := (strtoint(edloads.Text));
if (cbActive.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
cUser := GetArrayLength(Players) - 1;
end;
{*******************************************************************************
procedure CreateUser(Sender : TObject);
By: RsN
Description:
*******************************************************************************}
procedure CreateUser(Sender: TObject);
begin
Players[cUser].Nick := edNick.Text;
Players[cUser].Name := edUser.Text;
Players[cUser].Pass := edPass.Text;
Players[cUser].Integer[0] := Strtoint(edLoads.Text);
if (cbActive.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
AddUser;
cUser := GetArrayLength(Players) - 1;
lblUser.Caption := IntToStr(cUser);
edLocation.Text := Players[cUser].Loc;
edNick.Text := Players[cUser].Nick;
edUser.Text := Players[cUser].Name;
edPass.Text := Players[cUser].Pass;
Strtoint(edLoads.text) := Players[cUser].Integer[0];
if (Players[cUser].Active) then
cbActive.Text := 'True'
else
cbActive.Text := 'False';
end;
{*******************************************************************************
procedure ForwardUser(Sender : TObject);
By: RsN
Description:
*******************************************************************************}
procedure ForwardUser(Sender: TObject);
begin
Players[cUser].Nick := edNick.Text;
Players[cUser].Name := edUser.Text;
Players[cUser].Pass := edPass.Text;
Players[cUser].Integer[0] := Strtoint(edLoads.Text);
if (cbActive.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
if (cUser + 1 > GetArrayLength(Players) - 1) then
cUser := 0
else
cUser := cUser + 1;
lblUser.Caption := IntToStr(cUser);
edLocation.Text := Players[cUser].Loc;
edNick.Text := Players[cUser].Nick;
edUser.Text := Players[cUser].Name;
edPass.Text := Players[cUser].Pass;
Strtoint(edLoads.text) := Players[cUser].Integer[0];
if (Players[cUser].Active) then
cbActive.Text := 'True'
else
cbActive.Text := 'False';
end;
{*******************************************************************************
procedure BackUser(Sender : TObject);
By: RsN
Description:
*******************************************************************************}
procedure BackUser(Sender: TObject);
begin
Players[cUser].Nick := edNick.Text;
Players[cUser].Name := edUser.Text;
Players[cUser].Pass := edPass.Text;
Players[cUser].Integer[0] := Strtoint(edLoads.Text);
if (cbActive.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
if (cUser - 1 < 0) then
cUser := GetArrayLength(Players) - 1
else
cUser := cUser - 1;
lblUser.Caption := IntToStr(cUser);
edLocation.Text := Players[cUser].Loc;
edNick.Text := Players[cUser].Nick;
edUser.Text := Players[cUser].Name;
edPass.Text := Players[cUser].Pass;
Strtoint(edLoads.text) := Players[cUser].Integer[0];
if (Players[cUser].Active) then
cbActive.Text := 'True'
else
cbActive.Text := 'False';
end;
{*******************************************************************************
procedure DeleteUser(Sender : TObject);
By: RsN
Description:
*******************************************************************************}
procedure DeleteUser(Sender: TObject);
var
na, ni: string;
ac: Boolean;
in: integer;
begin
na := Players[GetArrayLength(Players) - 1].Name;
ni := Players[GetArrayLength(Players) - 1].Nick;
ac := Players[GetArrayLength(Players) - 1].Active;
in :=Players[GetArrayLength(Players) - 1].Integer[0];
Players[cUser].Name := na;
Players[cUser].Nick := ni;
Players[cUser].Active := ac;
Players[cUser].Integer[0] := in;
SetArrayLength(Players, GetArrayLength(Players) - 1);
if (cUser + 1 > GetArrayLength(Players) - 1) then
cUser := 0
else
cUser := cUser + 1;
lblUser.Caption := IntToStr(cUser);
edNick.Text := Players[cUser].Nick;
edUser.Text := Players[cUser].Name;
edPass.Text := Players[cUser].Pass;
strtoint(edloads.text) := Players[cUser].Integer[0];
if (Players[cUser].Active) then
cbActive.Text := 'True'
else
cbActive.Text := 'False';
end;
{*******************************************************************************
procedure Start(Sender : TObject);
By: RsN
Description:
*******************************************************************************}
procedure Start(Sender: TObject);
begin
lblUser.Caption := IntToStr(cUser);
edNick.Text := Players[cUser].Nick;
edUser.Text := Players[cUser].Name;
edPass.Text := Players[cUser].Pass;
strtoint(edLoads.text) := Players[cUser].integer[0];
if (Players[cUser].Active) then
cbActive.Text := 'True'
else
cbActive.Text := 'False';
end;
procedure FormStuff;
begin
frmDesign := CreateForm;
frmDesign.Left := 250;
frmDesign.Top := 114;
frmDesign.Width := 478;
frmDesign.Height := 287;
frmDesign.Caption := 'Player Setup';
frmDesign.Color := cl3DDKShadow;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
frmDesign.OnShow := @Start;
Label1 := TLabel.Create(frmDesign);
Label1.Parent := frmDesign;
Label1.Left := 128;
Label1.Top := 8;
Label1.Width := 175;
Label1.Height := 24;
Label1.Caption := 'Magic Tree Chopper';
Label1.Font.Color := clWindowText;
Label1.Font.Height := -21;
Label1.Font.Name := 'MS Sans Serif';
Label1.Font.Style := [];
Label1.ParentFont := False;
Label2 := TLabel.Create(frmDesign);
Label2.Parent := frmDesign;
Label2.Left := 280;
Label2.Top := 33;
Label2.Width := 50;
Label2.Height := 13;
Label2.Caption := 'by Skilld U';
edUser := TEdit.Create(frmDesign);
edUser.Parent := frmDesign;
edUser.Left := 16;
edUser.Top := 56;
edUser.Width := 121;
edUser.Height := 21;
edUser.Color := clGreen;
edUser.TabOrder := 0;
edUser.Text := 'Username';
edPass := TEdit.Create(frmDesign);
edPass.Parent := frmDesign;
edPass.Left := 16;
edPass.Top := 96;
edPass.Width := 121;
edPass.Height := 21;
edPass.Color := clGreen;
edPass.TabOrder := 1;
edPass.Text := 'Password';
edNick := TEdit.Create(frmDesign);
edNick.Parent := frmDesign;
edNick.Left := 16;
edNick.Top := 136;
edNick.Width := 121;
edNick.Height := 21;
edNick.Color := clGreen;
edNick.TabOrder := 3;
edNick.Text := 'Nick';
edLoads := TEdit.Create(frmDesign);
edLoads.Parent := frmDesign;
edLoads.Left := 16;
edLoads.Top := 176;
edLoads.Width := 121;
edLoads.Height := 21;
edLoads.Color := clGreen;
edLoads.TabOrder := 5;
edLoads.Text := 'Loads';
cbActive := TComboBox.Create(frmDesign);
cbActive.Parent := frmDesign;
cbActive.Left := 16;
cbActive.Top := 216;
cbActive.Width := 145;
cbActive.Height := 21;
cbActive.Color := clGreen;
cbActive.ItemHeight := 13;
cbActive.TabOrder := 6;
cbActive.Text := 'True';
cbActive.Items.Add('False');
GroupBox1 := TGroupBox.Create(frmDesign);
GroupBox1.Parent := frmDesign;
GroupBox1.Left := 168;
GroupBox1.Top := 56;
GroupBox1.Width := 281;
GroupBox1.Height := 97;
GroupBox1.Caption := 'Player Control';
GroupBox1.TabOrder := 7;
BackUser := TButton.Create(GroupBox1);
BackUser.Parent := GroupBox1;
BackUser.Left := 8;
BackUser.Top := 48;
BackUser.Width := 41;
BackUser.Height := 25;
BackUser.Font.Color := clGreen;
BackUser.Caption := '<=';
BackUser.TabOrder := 0;
BackUser.OnClick := @BackUser;
DeleteUser := TButton.Create(GroupBox1);
DeleteUser.Parent := GroupBox1;
DeleteUser.Left := 56;
DeleteUser.Top := 48;
DeleteUser.Width := 81;
DeleteUser.Height := 25;
DeleteUser.Font.Color := clGreen;
DeleteUser.Caption := 'Delete Player';
DeleteUser.TabOrder := 2;
DeleteUser.OnClick := @DeleteUser;
CreateUser := TButton.Create(GroupBox1);
CreateUser.Parent := GroupBox1;
CreateUser.Left := 144;
CreateUser.Top := 48;
CreateUser.Width := 83;
CreateUser.Height := 25;
CreateUser.Caption := 'Create Player';
CreateUser.TabOrder := 3;
CreateUser.OnClick := @CreateUser;
ForwardUser := TButton.Create(GroupBox1);
ForwardUser.Parent := GroupBox1;
ForwardUser.Left := 232;
ForwardUser.Top := 48;
ForwardUser.Width := 41;
ForwardUser.Height := 25;
ForwardUser.Caption := '=>';
ForwardUser.TabOrder := 4;
ForwardUser.OnClick := @ForwardUser;
end;
procedure ShowForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('FormStuff', v);
end;
procedure ShowformModal;
begin
frmDesign.ShowModal;
end;
procedure SafeShowModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowformModal', v);
end;
begin
LoadUs;
cUser := 0;
if (GetArrayLength(Players) = 0) then
AddUser;
Safeinitform;
SafeShowFormModal;
Saveus;
end.