Se me hace que para el caso viene bien una enumeracion como tipo para el Palo.
type
TPalo =(espada,basto,oro,copa);
TNaipe = record
Num: Byte;
Palo: TPalo;
end;
TBaraja = array[1..40] of TNaipe;
o bien, TPalo puede ser byte:
0: espada
1: basto
2: oro
3: copa
pero en realidad con una enumeracion es exactamente lo mismo porque
si el palo es Espada por ejemplo Ord(TPalo)=0
Este codigo iniciaria la baraja y la mostraria en la pantalla.
var
Baraja: TBaraja;
I: Integer;
Palo: String;
begin
for i:=1 to 10 do
begin
Baraja[i].Palo = espada;
Baraja[i].Num = i;
Baraja[10+i].Palo = basto;
Baraja[10+i].Num = i;
Baraja[i+20].Palo = oro;
Baraja[i+20].Num = i;
Baraja[i+30].Palo = copa;
Baraja[i+30].Num = i;
end;
for i:=1 to 40 do
begin
case Baraja[i].Palo of
0: Palo := 'Espada';
1: Palo := 'Basto';
2: Palo := 'Oro';
3: Palo := 'Copa;
end;
WriteLn(i, ': ', Baraja[i].Num, ' ', Palo);
end;