Results 1 to 3 of 3

Thread: A form prbolem... ([Runtime Error] : Out Of Range)

  1. #1
    Join Date
    Jan 2008
    Location
    Frankfurt, Germany
    Posts
    742
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default A form prbolem... ([Runtime Error] : Out Of Range)

    Well, I want to create my own multiplayer from, but I'm having a problem which I don't know how handle:
    SCAR Code:
    program New;
    {.include srl/srl.scar}
    var
      cUser : Integer;
      frmDesign : TForm;
      Label2 : TLabel;
      Label8 : TLabel;
      GroupBox1 : TGroupBox;
      Label1 : TLabel;
      Label3 : TLabel;
      Label4 : TLabel;
      Label5 : TLabel;
      Label6 : TLabel;
      Label7 : TLabel;
      NameEd : TEdit;
      PassEd : TEdit;
      NickEd : TEdit;
      PinEd : TEdit;
      LoadEd : TEdit;
      ActiveEd : TComboBox;
      GroupBox2 : TGroupBox;
      ButtonBack : TButton;
      ButtonNext : TButton;
      ButtonDelete : TButton;
      ButtonNew : TButton;
      ButtoOkay : TButton;

    procedure AddUser;
    begin
      SetArrayLength(Players, GetArrayLength(Players) + 1);
      Players[GetArrayLength(Players) - 1].Name := '>>Your Username Here<<';
      Players[GetArrayLength(Players) - 1].Pass := '>>Your Password Here<<';
      Players[GetArrayLength(Players) - 1].Nick := '>>Your Nickname Here<<';
      Players[GetArrayLength(Players) - 1].Strings[0] := '0';{Out Of Range Error Here}
      Players[GetArrayLength(Players) - 1].Active := True;
    end;

    procedure Inititate(Sender: TObject);
    begin
      Players[cUser].Nick := Nicked.Text;
      Players[cUser].Name := NameEd.Text;
      Players[cUser].Pass := Passed.Text;
      Players[cUser].Strings[0] := LoadEd.Text;
      if (ActiveEd.Text = 'True') then
        Players[cUser].Active := True
      else
        Players[cUser].Active := False;
      cUser := GetArrayLength(Players) - 1;
    end;

    procedure CreateUser(Sender: TObject);
    begin
      Players[cUser].Nick := Nicked.Text;
      Players[cUser].Name := NameEd.Text;
      Players[cUser].Pass := Passed.Text;
      Players[cUser].Strings[0] := LoadEd.Text;
      if (ActiveEd.Text = 'True') then
        Players[cUser].Active := True
      else
        Players[cUser].Active := False;
      AddUser;
      Nicked.Text := Players[cUser].Nick;
      NameEd.Text := Players[cUser].Name;
      Passed.Text := Players[cUser].Pass;
      LoadEd.Text := Players[cUser].Strings[0];
      if (Players[cUser].Active) then
        ActiveEd.Text := 'True'
      else
        ActiveEd.Text := 'False';
    end;

    procedure ForwardUser(Sender: TObject);
    begin
      Players[cUser].Nick := Nicked.Text;
      Players[cUser].Name := NameEd.Text;
      Players[cUser].Pass := Passed.Text;
      Players[cUser].Strings[0] := LoadEd.Text;
      if (ActiveEd.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;
      Nicked.Text := Players[cUser].Nick;
      NameEd.Text := Players[cUser].Name;
      Passed.Text := Players[cUser].Pass;
      LoadEd.Text := Players[cUser].Strings[0];
      if (Players[cUser].Active) then
        ActiveEd.Text := 'True'
      else
        ActiveEd.Text := 'False';
    end;

    procedure BackUser(Sender: TObject);
    begin
      Players[cUser].Nick := Nicked.Text;
      Players[cUser].Name := NameEd.Text;
      Players[cUser].Pass := Passed.Text;
      Players[cUser].Strings[0] := LoadEd.Text;
      if (ActiveEd.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;
      Nicked.Text := Players[cUser].Nick;
      NameEd.Text := Players[cUser].Name;
      Passed.Text := Players[cUser].Pass;
      LoadEd.Text := Players[cUser].Strings[0];
      if (Players[cUser].Active) then
        ActiveEd.Text := 'True'
      else
        ActiveEd.Text := 'False';
    end;

    procedure DeleteUser(Sender: TObject);
    var
      na, ni, lo: string;
      ac: Boolean;
    begin
      na := Players[GetArrayLength(Players) - 1].Name;
      ni := Players[GetArrayLength(Players) - 1].Nick;
      ac := Players[GetArrayLength(Players) - 1].Active;
      lo := Players[GetArrayLength(Players) - 1].Strings[0];
      Players[cUser].Name := na;
      Players[cUser].Nick := ni;
      Players[cUser].Active := ac;
      Players[cUser].Strings[0]:= lo;
      SetArrayLength(Players, GetArrayLength(Players) - 1);
      if (cUser + 1 > GetArrayLength(Players) - 1) then
        cUser := 0
      else
        cUser := cUser + 1;
      Nicked.Text := Players[cUser].Nick;
      NameEd.Text := Players[cUser].Name;
      Passed.Text := Players[cUser].Pass;
      LoadEd.Text := Players[cUser].Strings[0];
      if (Players[cUser].Active) then
        ActiveEd.Text := 'True'
      else
        ActiveEd.Text := 'False';
    end;

    procedure Start(Sender: TObject);
    begin
      NickEd.Text := Players[cUser].Nick;
      NameEd.Text := Players[cUser].Name;
      PassEd.Text := Players[cUser].Pass;
      LoadEd.Text := Players[cUser].Strings[0];
      if (Players[cUser].Active) then
        ActiveEd.Text := 'True'
      else
        ActiveEd.Text := 'False';
    end;

    procedure FinishForm(Sender: TObject);
    begin
      frmDesign.ModalResult:= mrOk;
    end;
     
    procedure MiningInitForm;
    begin
      frmDesign := CreateForm;
      frmDesign.Left := 250;
      frmDesign.Top := 114;
      frmDesign.Width := 696;
      frmDesign.Height := 480;
      frmDesign.Caption := 'frmDesign';
      frmDesign.Color := clSkyBlue;
      frmDesign.Font.Color := clWindowText;
      frmDesign.Font.Height := -11;
      frmDesign.Font.Name := 'MS Sans Serif';
      frmDesign.Font.Style := [];
      frmDesign.Visible := False;
      frmDesign.PixelsPerInch := 96;
      Label2 := TLabel.Create(frmDesign);
      Label2.Parent := frmDesign;
      Label2.Left := 32;
      Label2.Top := 160;
      Label2.Width := 4;
      Label2.Height := 20;
      Label2.Font.Color := clWindowText;
      Label2.Font.Height := -16;
      Label2.Font.Name := 'MS Sans Serif';
      Label2.Font.Style := [];
      Label2.ParentFont := False;
      Label8 := TLabel.Create(frmDesign);
      Label8.Parent := frmDesign;
      Label8.Left := 64;
      Label8.Top := 16;
      Label8.Width := 540;
      Label8.Height := 34;
      Label8.Caption := 'Pure1993'#39's Guild Miner';
      Label8.Font.Color := clWindowText;
      Label8.Font.Height := -29;
      Label8.Font.Name := 'Neurochrome';
      Label8.Font.Style := [fsBold];
      Label8.ParentFont := False;
      GroupBox1 := TGroupBox.Create(frmDesign);
      GroupBox1.Parent := frmDesign;
      GroupBox1.Left := 16;
      GroupBox1.Top := 72;
      GroupBox1.Width := 281;
      GroupBox1.Height := 369;
      GroupBox1.Caption := 'Player Options';
      GroupBox1.TabOrder := 0;
      Label1 := TLabel.Create(GroupBox1);
      Label1.Parent := GroupBox1;
      Label1.Left := 16;
      Label1.Top := 32;
      Label1.Width := 155;
      Label1.Height := 20;
      Label1.Caption := 'Enter Your Username';
      Label1.Font.Color := clWindowText;
      Label1.Font.Height := -16;
      Label1.Font.Name := 'MS Sans Serif';
      Label1.Font.Style := [];
      Label1.ParentFont := False;
      Label3 := TLabel.Create(GroupBox1);
      Label3.Parent := GroupBox1;
      Label3.Left := 16;
      Label3.Top := 88;
      Label3.Width := 150;
      Label3.Height := 20;
      Label3.Caption := 'Enter Your Password';
      Label3.Font.Color := clWindowText;
      Label3.Font.Height := -17;
      Label3.Font.Name := 'MS Sans Serif';
      Label3.Font.Style := [];
      Label3.ParentFont := False;
      Label4 := TLabel.Create(GroupBox1);
      Label4.Parent := GroupBox1;
      Label4.Left := 16;
      Label4.Top := 144;
      Label4.Width := 151;
      Label4.Height := 20;
      Label4.Caption := 'Enter Your Nickname';
      Label4.Font.Color := clWindowText;
      Label4.Font.Height := -17;
      Label4.Font.Name := 'MS Sans Serif';
      Label4.Font.Style := [];
      Label4.ParentFont := False;
      Label5 := TLabel.Create(GroupBox1);
      Label5.Parent := GroupBox1;
      Label5.Left := 16;
      Label5.Top := 200;
      Label5.Width := 235;
      Label5.Height := 20;
      Label5.Caption := 'Enter Your Pin (If You Have One)';
      Label5.Font.Color := clWindowText;
      Label5.Font.Height := -17;
      Label5.Font.Name := 'MS Sans Serif';
      Label5.Font.Style := [];
      Label5.ParentFont := False;
      Label6 := TLabel.Create(GroupBox1);
      Label6.Parent := GroupBox1;
      Label6.Left := 16;
      Label6.Top := 256;
      Label6.Width := 131;
      Label6.Height := 20;
      Label6.Caption := 'How Many Loads?';
      Label6.Font.Color := clWindowText;
      Label6.Font.Height := -17;
      Label6.Font.Name := 'MS Sans Serif';
      Label6.Font.Style := [];
      Label6.ParentFont := False;
      Label7 := TLabel.Create(GroupBox1);
      Label7.Parent := GroupBox1;
      Label7.Left := 16;
      Label7.Top := 312;
      Label7.Width := 52;
      Label7.Height := 20;
      Label7.Caption := 'Active?';
      Label7.Font.Color := clWindowText;
      Label7.Font.Height := -17;
      Label7.Font.Name := 'MS Sans Serif';
      Label7.Font.Style := [];
      Label7.ParentFont := False;
      NameEd := TEdit.Create(GroupBox1);
      NameEd.Parent := GroupBox1;
      NameEd.Left := 16;
      NameEd.Top := 56;
      NameEd.Width := 153;
      NameEd.Height := 21;
      NameEd.TabOrder := 0;
      NameEd.Text := '>>Your Username Here<<';
      PassEd := TEdit.Create(GroupBox1);
      PassEd.Parent := GroupBox1;
      PassEd.Left := 16;
      PassEd.Top := 112;
      PassEd.Width := 153;
      PassEd.Height := 21;
      PassEd.TabOrder := 1;
      PassEd.Text := '>>Your Password Here<<';
      NickEd := TEdit.Create(GroupBox1);
      NickEd.Parent := GroupBox1;
      NickEd.Left := 16;
      NickEd.Top := 168;
      NickEd.Width := 153;
      NickEd.Height := 21;
      NickEd.TabOrder := 2;
      NickEd.Text := '>>Your Nickname Here<<';
      PinEd := TEdit.Create(GroupBox1);
      PinEd.Parent := GroupBox1;
      PinEd.Left := 16;
      PinEd.Top := 224;
      PinEd.Width := 153;
      PinEd.Height := 21;
      PinEd.TabOrder := 3;
      PinEd.Text := '>>Pin Number Here<<';
      LoadEd := TEdit.Create(GroupBox1);
      LoadEd.Parent := GroupBox1;
      LoadEd.Left := 16;
      LoadEd.Top := 280;
      LoadEd.Width := 153;
      LoadEd.Height := 21;
      LoadEd.TabOrder := 4;
      LoadEd.Text := '>>Number of Loads Here<<';
      ActiveEd := TComboBox.Create(GroupBox1);
      ActiveEd.Parent := GroupBox1;
      ActiveEd.Left := 16;
      ActiveEd.Top := 336;
      ActiveEd.Width := 153;
      ActiveEd.Height := 21;
      ActiveEd.ItemHeight := 13;
      ActiveEd.TabOrder := 5;
      ActiveEd.Text := 'True';
      ActiveEd.Items.Add('True');
      ActiveEd.Items.Add('False');
      GroupBox2 := TGroupBox.Create(frmDesign);
      GroupBox2.Parent := frmDesign;
      GroupBox2.Left := 328;
      GroupBox2.Top := 160;
      GroupBox2.Width := 337;
      GroupBox2.Height := 121;
      GroupBox2.Caption := 'Player Controls';
      GroupBox2.TabOrder := 1;
      ButtonBack := TButton.Create(GroupBox2);
      ButtonBack.Parent := GroupBox2;
      ButtonBack.Left := 8;
      ButtonBack.Top := 48;
      ButtonBack.Width := 49;
      ButtonBack.Height := 25;
      ButtonBack.Caption := '<---';
      ButtonBack.TabOrder := 0;
      ButtonBack.OnClick := @BackUser;
      ButtonNext := TButton.Create(GroupBox2);
      ButtonNext.Parent := GroupBox2;
      ButtonNext.Left := 280;
      ButtonNext.Top := 48;
      ButtonNext.Width := 49;
      ButtonNext.Height := 25;
      ButtonNext.Caption := '--->';
      ButtonNext.TabOrder := 1;
      ButtonNext.OnClick := @ForwardUser;
      ButtonDelete := TButton.Create(GroupBox2);
      ButtonDelete.Parent := GroupBox2;
      ButtonDelete.Left := 64;
      ButtonDelete.Top := 48;
      ButtonDelete.Width := 81;
      ButtonDelete.Height := 25;
      ButtonDelete.Caption := 'Delete Player';
      ButtonDelete.TabOrder := 2;
      ButtonDelete.OnClick := @DeleteUser;
      ButtonNew := TButton.Create(GroupBox2);
      ButtonNew.Parent := GroupBox2;
      ButtonNew.Left := 193;
      ButtonNew.Top := 48;
      ButtonNew.Width := 80;
      ButtonNew.Height := 25;
      ButtonNew.Caption := 'New Player';
      ButtonNew.TabOrder := 3;
      ButtonNew.OnClick := @CreateUser;
      ButtoOkay := TButton.Create(GroupBox2);
      ButtoOkay.Parent := GroupBox2;
      ButtoOkay.Left := 152;
      ButtoOkay.Top := 48;
      ButtoOkay.Width := 33;
      ButtoOkay.Height := 25;
      ButtoOkay.Caption := 'OK';
      ButtoOkay.TabOrder := 4;
      ButtoOkay.OnClick := @FinishForm;
    end;

    procedure TheForm;
    var
      v: TVariantArray;
    begin
      SetArrayLength(V, 0);
      ThreadSafeCall('MiningInitForm', v);
    end;

    procedure ShowFormModal;
    begin
      frmDesign.ShowModal;
    end;

    procedure TehForm;
    var
      v: TVariantArray;
    begin
      SetArrayLength(V, 0);
      ThreadSafeCall('ShowFormModal', v);
    end;

    begin
      cUser := 0;
      if (GetArrayLength(Players) = 0) then
        AddUser;
      TheForm;
      TehForm;
    end.
    As I already mentioned in the script, the error is in this line: Players
    SCAR Code:
    [GetArrayLength(Players) - 1].Strings[0] := '0';
    and the error is [Runtime Error] : Out Of Range in line 34 in script C:\Program Files\SCAR 3.14\Scripts\123.scar. Can anyone help?
    (btw: please don't tell me to just use the srl-player-form, because I want to create something like this myself and not use something which has already been created.)
    Thanks a lot,
    -Pure1993
    There is nothing right in my left brain and there is nothing left in my right brain.

  2. #2
    Join Date
    May 2006
    Location
    Amsterdam
    Posts
    3,620
    Mentioned
    5 Post(s)
    Quoted
    0 Post(s)

    Default

    SetLength(Players[GetArrayLength(Players) - 1].Strings, 1);

    Add that after

    SetArrayLength(Players, GetArrayLength(Players) + 1);
    Verrekte Koekwous

  3. #3
    Join Date
    Jan 2008
    Location
    Frankfurt, Germany
    Posts
    742
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    works! thank you!
    There is nothing right in my left brain and there is nothing left in my right brain.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •