AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage Deklaration

Ein Thema von gmc616 · begonnen am 5. Okt 2010 · letzter Beitrag vom 5. Okt 2010
Antwort Antwort
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

Verständnisfrage Deklaration

  Alt 5. Okt 2010, 14:10
Hallo DP.

Wie ist so eine Deklaration zu verstehen?

Delphi-Quellcode:
// aus Types.pas

  TRect = packed record
    case Integer of
      0: (Left, Top, Right, Bottom: Longint);
      1: (TopLeft, BottomRight: TPoint);
  end;



Danke, gmc

Geändert von gmc616 ( 5. Okt 2010 um 14:16 Uhr) Grund: Da war ein Tippfehler in meinr Überschrift
  Mit Zitat antworten Zitat
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verständnisfrage Deklaration

  Alt 5. Okt 2010, 14:22
Das nennt sich varianter Record (um mal einen Suchbegriff zu nennen).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz