Einzelnen Beitrag anzeigen

Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Verständisfrage Deklaration

  Alt 5. Okt 2010, 14:18
Sozusagen sind das folgende 2 Typen zusammengefasst:
Delphi-Quellcode:
  TRect1 = packed record
    Left, Top, Right, Bottom: Longint;
  end;
  TRect2 = packed record
    TopLeft, BottomRight: TPoint;
  end;
Bei case of in einem Record wird jedoch der gleiche Speicherbereich verwendet.
Dh man hat sozusagen einen direkten Zugriff auf einen Cast der definierten Typen.

Hier noch ein Beispielcode zum testen:
Delphi-Quellcode:
type
  TRect = packed record
    case Integer of
      0: (Left, Top, Right, Bottom: Longint);
      1: (BottomRight, TopLeft: TPoint);
  end;
var
  rct: TRect;
begin
  rct.Left := 0;
  rct.Top := 1;
  rct.Right := 2;
  rct.Bottom := 3;
  ShowMessage(
    IntToStr(rct.TopLeft.X) + '/' + IntToStr(rct.TopLeft.Y) + sLineBreak +
    IntToStr(rct.BottomRight.X) + '/' + IntToStr(rct.BottomRight.Y)
  );

Geändert von mleyen ( 5. Okt 2010 um 14:26 Uhr)
  Mit Zitat antworten Zitat