You probably intended the for loop variables i and j to affect which cards[] array value is set.
However, you use non-loop variables (x and y) in your arrays, so you iterate over the same cards[x,y] value 52 times.
Rather than ask on this forum, it is far better to simply experiment yourself to learn how loop iteration works in practice.
Something like
program project1;
{$Mode objfpc}{$H+}
type
TSuitRange = 1..4;
TSuitArray = array[TSuitRange] of Integer;
TRankRange = 1..13;
TRankArray = array[TRankRange] of Integer;
TCards = array[TSuitRange, TRankRange] of Integer;
var
suit: TSuitArray;
rank: TRankArray;
cards: TCards;
s, r: Integer;
begin
for s in TSuitArray do
suit[s] := s;
for r in TRankArray do
rank[r] := r;
for s in TSuitArray do
for r in TRankArray do
cards[s, r] := suit[s] + rank[r];
for s in TSuitArray do
for r in TRankArray do
WriteLn('cards[',s,',',r,']=',cards[s,r]);
ReadLn;
end.