Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Prístup k jednej premennej z viacerými typmi deklarácie

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.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny