Page 1 of 1

Another struct problem declaration

Posted: Wed Apr 25, 2007 6:40 am
by zandor70
If I use

Code: Select all

var db_realm := { };
db_realm[1] := Struct { "total_loops" := Cint(0), "average_decs" := Cint(0), "delay_ms_after_spawnpoint" := Cint(20) };
print("db_realm[1] "+db_realm[1]);
I obtain as output from print:
db_realm[1] error{ errortext = "Array index out of bounds" }
while If I use

Code: Select all

var db_realm := { };
db_realm[1] := Struct;
db_realm[1] := Struct { "total_loops" := Cint(0), "average_decs" := Cint(0), "delay_ms_after_spawnpoint" := Cint(20) };
print("db_realm[1] "+db_realm[1]);
It's ok....

Posted: Wed Apr 25, 2007 7:42 am
by tekproxy
If it's a bug Muad will fix it, and you could also try coding it like this:

Code: Select all

CONST DEFAULT_DELAY := 20; // just say "no" to magic numbers
var db_realm := array{struct{ "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) }};
// or just use db_realm.append(struct{ ... });

Posted: Wed Apr 25, 2007 10:18 am
by zandor70
wait I try and post results

I have retested all:

Posted: Wed Apr 25, 2007 11:03 am
by zandor70

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := array{ Struct{ "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) }};
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) }};
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm.Append( Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) });
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm[1] := Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) };
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] error{ errortext = "Array index out of bounds" }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm[1] := Struct;
  db_realm[1] := Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) };
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm[1] := Struct { };
  db_realm[1].+total_loops := CInt(0);
  db_realm[1].+average_decs := CInt(0);
  db_realm[1].+delay_ms_after_spawnpoint := CInt(DEFAULT_DELAY);
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

THe syntax with problem is only when you define and load a struct inside array specifying array index... It seem like a sort of stack problem like the one of function parameter.

Posted: Wed Apr 25, 2007 2:43 pm
by tekproxy
Thanks for the very thorough testing. I'm sure MuadDib will appreciate it when debugging. ;)