Results 1 to 4 of 4

Thread: Out Of Range

  1. #1
    Join Date
    Aug 2007
    Location
    in a random little world
    Posts
    5,778
    Mentioned
    0 Post(s)
    Quoted
    7 Post(s)

    Default Out Of Range

    SCAR Code:
    {.include srl/srl.scar}

    var
      // InitForm variables.
      frmDesign : TForm;
      Label1, Label2, Label3, Label4, lblUser : TLabel;
      EdUser, EdPass, EdNick : TEdit;
      CbActive : TComboBox;
      btnBack, btnCreate, btnDelete, btnNext : 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].Loc := 'New Location';
    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;
      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;
      if (cbActive.Text = 'True') then
        Players[cUser].Active := True
      else
        Players[cUser].Active := False;
      AddUser;
      cUser := GetArrayLength(Players) - 1;
      lblUser.Caption := IntToStr(cUser);
      edNick.Text := Players[cUser].Nick;
      edUser.Text := Players[cUser].Name;
      edPass.Text := Players[cUser].Pass;
      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;
      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);
      edNick.Text := Players[cUser].Nick;
      edUser.Text := Players[cUser].Name;
      edPass.Text := Players[cUser].Pass;
      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;
      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);
      edNick.Text := Players[cUser].Nick;
      edUser.Text := Players[cUser].Name;
      edPass.Text := Players[cUser].Pass;
      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
      lo, na, ni: string;
      ac: Boolean;
    begin
      lo := Players[GetArrayLength(Players) - 1].Loc;
      na := Players[GetArrayLength(Players) - 1].Name;
      ni := Players[GetArrayLength(Players) - 1].Nick;
      ac := Players[GetArrayLength(Players) - 1].Active;
      Players[cUser].Loc := lo;
      Players[cUser].Name := na;
      Players[cUser].Nick := ni;
      Players[cUser].Active := ac;
      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;
      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;
      if (Players[cUser].Active) then
        cbActive.Text := 'True'
      else
        cbActive.Text := 'False';
    end;

    procedure SafeInitForm;
    var
      V : TVariantArray;
    begin
      SetArrayLength(V, 0);
      ThreadSafeCall('InitForm', V);
    end;

    procedure ShowInitFormModal;
    begin
      frmDesign.ShowModal;
    end;

    procedure SafeShowInitFormModal;
    var
      V : TVariantArray;
    begin
      SetArrayLength(V, 0);
      ThreadSafeCall('ShowInitFormModal', V);
    end;

    procedure MainInitForm;
    begin
      try
        SafeInitForm;
        SafeShowInitFormModal;
      finally
        FreeForm(frmDesign);
      except
        WriteLn('An error seems to have occurred in: InitForm');
      end;
    end;



    procedure InitForm;
    var
      TimeInitForm : Integer;
    begin
      TimeInitForm := GetSystemTime;
      frmDesign := CreateForm;
      with frmDesign do
      begin
        Position := poScreenCenter;
        BorderStyle := bsSingle;
        BorderIcons := [biMinimize,biSystemMenu];
        ClientWidth := 289;
        ClientHeight := 255;
        Caption := 'frmDesign';
        Color := clBtnFace;
        Font.Color := clWindowText;
        Font.Height := -11;
        Font.Name := 'MS Sans Serif';
        Font.Style := [];
        PixelsPerInch := 96;
      frmDesign.OnShow := @Start;//add this
      end;
      Label1 := TLabel.Create(frmDesign);
      with Label1 do
      begin
        Parent := frmDesign;
        Left := 32;
        Top := 48;
        Width := 66;
        Height := 13;
        Caption := 'Player Name :';
      end;
      lblUser := TLabel.Create(frmDesign);
      with lblUser do
      begin
        Parent := frmDesign;
        Left := 120;
        Top := 232;
        Width := 66;
        Height := 13;
        Caption := '0';
      end;
      Label2 := TLabel.Create(frmDesign);
      with Label2 do
      begin
        Parent := frmDesign;
        Left := 32;
        Top := 80;
        Width := 61;
        Height := 13;
        Caption := 'Player Pass :';
      end;
      Label3 := TLabel.Create(frmDesign);
      with Label3 do
      begin
        Parent := frmDesign;
        Left := 32;
        Top := 112;
        Width := 60;
        Height := 13;
        Caption := 'Player Nick :';
      end;
      Label4 := TLabel.Create(frmDesign);
      with Label4 do
      begin
        Parent := frmDesign;
        Left := 32;
        Top := 144;
        Width := 36;
        Height := 13;
        Caption := 'Active :';
      end;
      EdUser := TEdit.Create(frmDesign);
      with EdUser do
      begin
        Parent := frmDesign;
        Left := 128;
        Top := 48;
        Width := 121;
        Height := 21;
        TabOrder := 8;
        Text := 'EdUser';
      end;
      EdPass := TEdit.Create(frmDesign);
      with EdPass do
      begin
        Parent := frmDesign;
        Left := 128;
        Top := 80;
        Width := 121;
        Height := 21;
        TabOrder := 9;
        Text := 'EdPass';
      end;
      EdNick := TEdit.Create(frmDesign);
      with EdNick do
      begin
        Parent := frmDesign;
        Left := 128;
        Top := 112;
        Width := 121;
        Height := 21;
        TabOrder := 10;
        Text := 'EdNick';
      end;
      CbActive := TComboBox.Create(frmDesign);
      with CbActive do
      begin
        Parent := frmDesign;
        Left := 128;
        Top := 144;
        Width := 121;
        Height := 21;
        ItemHeight := 13;
        TabOrder := 11;
        Text := 'CbActive';
        with CbActive.Items do
        begin
          Add('True');
          Add('False');
        end;
      end;
      btnBack := TButton.Create(frmDesign);
      with btnBack do
      begin
        Parent := frmDesign;
        Left := 16;
        Top := 184;
        Width := 41;
        Height := 33;
        Caption := '<=';
        TabOrder := 12;
      btnBack.OnClick := @BackUser;//this
      end;
      btnCreate := TButton.Create(frmDesign);
      with btnCreate do
      begin
        Parent := frmDesign;
        Left := 64;
        Top := 184;
        Width := 73;
        Height := 33;
        Caption := 'Create Player';
        TabOrder := 13;
      btnCreate.OnClick := @CreateUser;//add
      end;
      btnDelete := TButton.Create(frmDesign);
      with btnDelete do
      begin
        Parent := frmDesign;
        Left := 144;
        Top := 184;
        Width := 73;
        Height := 33;
        Caption := 'Delete Player';
        TabOrder := 14;
      btnDelete.OnClick := @DeleteUser;//add
      end;
      btnNext := TButton.Create(frmDesign);
      with btnNext do
      begin
        Parent := frmDesign;
        Left := 224;
        Top := 184;
        Width := 41;
        Height := 33;
        Caption := '=>';
        TabOrder := 15;
      btnNext.OnClick := @ForwardUser;// add this
      end;
      WriteLn('InitForm compiled in ' + IntToStr(GetSystemTime - TimeInitForm) + ' milliseconds!');
    end;

    begin
      MainInitForm;
      cUser := 0;
      if (GetArrayLength(Players) = 0) then
        AddUser;
    end.
    http://oneunderuk.com/error.png
    then it says
    InitForm compiled in 32 milliseconds!
    An error seems to have occurred in: InitForm
    [Runtime Error] : Invalid Opcode in line 202 in script C:\Users\Thomas\Desktop\form.scar
    help meh!

    ~shut
    Last edited by Shuttleu; 05-09-2009 at 12:45 AM.

  2. #2
    Join Date
    Dec 2007
    Location
    192.168.1.73
    Posts
    2,439
    Mentioned
    6 Post(s)
    Quoted
    119 Post(s)

    Default

    Add the line
    SCAR Code:
    frmDesign.Visible := False;

    Into the frmDesign part of the form

    EDIT: Wait that doesn't seem to do it, which line is 202?

  3. #3
    Join Date
    Aug 2007
    Location
    in a random little world
    Posts
    5,778
    Mentioned
    0 Post(s)
    Quoted
    7 Post(s)

  4. #4
    Join Date
    Jun 2007
    Location
    Wednesday
    Posts
    2,446
    Mentioned
    3 Post(s)
    Quoted
    1 Post(s)

    Default

    Add
    SCAR Code:
    SetArrayLength(Players, 1);
      cUser := 0;
    to Start procedure - you try to set player details when the player array hasn't been set a length yet.
    By reading this signature you agree that mixster is superior to you in each and every way except the bad ways but including the really bad ways.

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
  •