dynamiczna tablica i problemy z pamiecia

0

czemu to nie dziala:

type
  TMainForm = class(TForm)
  {...}
  public
    karty: array of array of Integer;
    wylosowane: array[1..24] of Integer;
    procedure Rozdaj;
  end;

{...}

procedure TMainForm.Rozdaj;
var
  i: Integer;
  x, y, z: Integer;
  max, max2: integer;
  tmp: Integer;

  function sprawdz(a: integer): integer;
  var
    i: Integer;
  begin
    for i:= 1 to 24 do
    begin
      if (a = wylosowane[i]) and (a < 24) then
        a:= sprawdz(a + 1)
      else if (a = wylosowane[i]) and (a = 24) then
        a:= sprawdz(1);
    end;
    Result:= a;
  end;
begin
  max:= strtoint(Edit1.Text);
  max2:= 24 div max;

  for i:= 1 to 24 do
    wylosowane[i]:= 0;

  SetLength(karty, max, max2);

  for x:= 0 to max do
    for y:= 0 to max2 do
      karty[x][y]:= 0;

  i:= 1;
  for x:= 0 to max do
  begin
    for y:= 0 to max2 do
    begin
      Randomize;
      z:= Random(24) + 1;
      tmp:= sprawdz(z);
      wylosowane[i]:= tmp;
      karty[x][y]:= tmp;
      inc(i);
    end;
  end;
end;

procedura rozdaj jest wywolywana przy kliknieciu buttona
i pojawia sie blad pamieci albo zamyka sie program

0
  for x:= 0 to max-1 do
      for y:= 0 to max2-1 do

I wszędzie indziej tak samo (-1).

1 użytkowników online, w tym zalogowanych: 0, gości: 1