Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Case Abfrage in Recorddeklaration ??? (https://www.delphipraxis.net/118862-case-abfrage-recorddeklaration.html)

mr_emre_d 16. Aug 2008 17:12


Case Abfrage in Recorddeklaration ???
 
Code:
  TBefehl=record
    Case Typ:TBefehlsTyp of
      BT_STAND:();
      BT_MOVE:(X,Y:Word);
  end;
Wie ist das zu verstehen ? Ich möchte nur wissen, was das Case bei einer Typendeklaration ( record ) zu verloren hat !

Gegoogelt hab ich auch schon nach "delphi case in record" aber bin nicht fündig geworden !

Danke im vorraus :D

MfG

grenzgaenger 16. Aug 2008 17:15

Re: Case Abfrage in Recorddeklaration ???
 
Delphi-Referenz durchsuchenvariante records

taaktaak 16. Aug 2008 17:16

Re: Case Abfrage in Recorddeklaration ???
 
z.B. hier steht etwas zur Fragestellung

mr_emre_d 16. Aug 2008 17:45

Re: Case Abfrage in Recorddeklaration ???
 
ich verstehe es einfach nicht !

Code:
_TRIGGER_TYPE_UNION = packed record
    case Integer of
      0: (Daily: DAILY);
      1: (Weekly: WEEKLY);
      2: (MonthlyDate: MONTHLYDATE);
      3: (MonthlyDOW: MONTHLYDOW);
    end; // das hier fehlte
  end;
...
  blubb := rec.Daily // Hat hier blubb anschließend den Wert 0 ??? bzw Weekly den Wert 1 usw. ?

Neutral General 16. Aug 2008 17:52

Re: Case Abfrage in Recorddeklaration ???
 
Hi,

Delphi-Quellcode:
TColorRec = record
  case Integer of
    1: (r,g,b: Byte);
    2: (ColorArray: Array[0..2] of Byte);
    3: (Color: TColor);
  end;
Das ist denke ich mal ein gutes Beispiel.

(r,g,b,a), (ColorArray) und (Color) belegen hier den gleichen Speicher. Die Art wie auf diesen Speicher zugegriffen dieser Speicher interpretiert wird unterscheidet sich nur.

Delphi-Quellcode:
var
  Color: TColorRec;

begin
  Color.r := 255;
  Color.g := 0;
  Color.b := 255;

  Panel1.Color := RGB(Color.r,Color.g,Color.b);
  Panel2.Color := RGB(Col.ColorArray[0],Col.ColorArray[1],Col.ColorArray[2]);
  Panel3.Color := Color.Color;
end;
Damit kann man sich das verdeutlichen ;)

Edit: Zum 543 mal geändert -.-^^

Christian Seehase 16. Aug 2008 17:58

Re: Case Abfrage in Recorddeklaration ???
 
Moin Michael,

Zitat:

Zitat von Neutral General
Die Art wie auf diesen Speicher zugegriffen wird unterscheidet sich nur.

Ich würde sagen:
Die Unterscheidung besteht darin, wie der Speicherinhalt zu interpretieren ist.

Neutral General 16. Aug 2008 18:02

Re: Case Abfrage in Recorddeklaration ???
 
Hi,

Ok du hast Recht. Ist ein bisschen schlecht ausgedrückt. Habe aber das richtige gemeint :mrgreen:

*Obigen beitrag editiere*

mr_emre_d 16. Aug 2008 18:25

Re: Case Abfrage in Recorddeklaration ???
 
OK, wie man darauf zugreift habe ich schon verstanden ( gibts eh nichts zu verstehen, ist logisch )

aber erkär mir mal das hier
Code:
TColorRec = record
  case Integer of
    1: ... // was macht das Case Integer of und 1, 2, 3 ...

EDIT:
Zitat:

(r,g,b,a), (ColorArray) und (Color) belegen hier den gleichen Speicher
Den gleichen Speicher ? heißt das dann, dass r denselben wert hat wie Coloarray[0] und g = Colorarray[1] usw ?
Oder meinst du vlt., dass sie die gleiche Größe haben ? Wenn nicht, dann ist das ja ziemlich interessant :D

Neutral General 16. Aug 2008 18:28

Re: Case Abfrage in Recorddeklaration ???
 
Compilier mal meinen Code und probiers aus.

mr_emre_d 16. Aug 2008 18:30

Re: Case Abfrage in Recorddeklaration ???
 
Code:
  ColRec.r := 255;
  ColRec.g := 0;
  ColRec.b := 0;
  Form1.Color := ColRec.Color;
das ist mal geil :D und könntest du mir schnell erklären was das case integer of macht ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 Uhr.
Seite 1 von 2  1 2      

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