Na frázi absolute zapomeň, neměla by se používat je-li vyhnutí.
Ve standardním pascalu by to mělo vypadat takto:
var
xy: record
CoToJe: byte;
case CoToJe of
1: a: array[0..7, 0..7] of Integer;
2: b: array[0..63] of Integer;
end;
end;
Pak je jasné, proč jsou v CASE čísla větvení. Prostě jakou hodnotu obsahovalo CoToJe, taková větev deklarace se vybrala. Protože se ve skutečnosti jedná o redefinici téhož místa paměti, DELPHI dovoluje zjednodušení na uvedení jen typu a hodnot. Lze to třeba taky takto:type TBarva (Cervena, Modra);
var
xy: record
case TBarva of
Cervena: a: array[0..7, 0..7] of Integer;
Modra: b: array[0..63] of Integer;
end;
end;
Že to nejde přes switch je dáno syntaxí jazyka.Doporučuji, sežeň si někde knížku "Delphi v kostce" z O'Reilly (česky vydal Computer press), tam najdeš odpovědi na většinu tvých dotazů (to neznamená, že bych nechtěl odpovídat, jen bys to měl takříkajíc při ruce ).
PS: V redefinicích doporučuju použít packed record, aby se tam někde nenacpaly výplňové bajty pro zaokrouhlení adres.