Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 2 Case Anweisungen in einem Variant-Record? (https://www.delphipraxis.net/136872-2-case-anweisungen-einem-variant-record.html)

thx.azrael 9. Jul 2009 10:36


2 Case Anweisungen in einem Variant-Record?
 
Guten Morgen DPler,

Ich benötige einen Varianten-Record mit mehreren CASE-Anweisungen. Bis jetzt habe ich versucht einfach 2 CASE Anweisungen in einen Record zu Packen, jedoch sagt mir der Delphi Compiler das die Abfrage Variable der 2. CASE-Anweisung nicht deklariert sei. In diesem Record möchte ich insgesamt 11 verschiedene Objekttypen differenzieren können. Zum besseren Verständnis füge ich hier mal meine Record ein:

Delphi-Quellcode:
type TObjectSet = set of 0 .. 10;

type TrtModelItem = record
                          Case WithEdit: Boolean Of
                                      True: (Edit: TPbFloatEdit);
                                      False: ();
                          Case ObjectType: TObjectSet Of
                                            0: (Stream: TPbStream);
                                            .
                                            .
                                            .
                                            10: (Output: TPbOutputUnit);
                    end;
In der Delphi Hilfe steht nichts darüber drin, dass die Anzahl der CASE-Anweisungen in einem Variant-Record beschränkt ist. Ansonsten habe ich bei einer ersten spontanen Suche auch nichts dazu gefunden.
Falls jemand eine Idee hat wie das ganze funktionieren kann oder eine alternative zu einem Record hat bin ich natürlich auch für etwas neues offen.

Mfg

azrael

himitsu 9. Jul 2009 10:48

Re: 2 Case Anweisungen in einem Variant-Record?
 
sowas geht unter Delphi nicht

einzige Lösung, leg die CASE jeweil in eigene Untertypen aus und kombinier es dann

Delphi-Quellcode:
type TObjectSet = set of 0 .. 10;

type TrtModelItemEdit = record
    Case WithEdit: Boolean Of
      True: (Edit: TPbFloatEdit);
      False: ();
  end;
  TrtModelItem = record
    Edit: TrtModelItemEdit;
    Case ObjectType: TObjectSet Of
      0: (Stream: TPbStream);
      ...
      10: (Output: TPbOutputUnit);
    end;

thx.azrael 9. Jul 2009 10:54

Re: 2 Case Anweisungen in einem Variant-Record?
 
Danke für die Idee. Macht zwar Optisch nicht ganz so viel her, funktioniert aber. Schön das sowas hier so schnell geht.

himitsu 9. Jul 2009 11:25

Re: 2 Case Anweisungen in einem Variant-Record?
 
Bitte :angel:

Hätt mir da aber auch eine andere Lösung gewünscht, ein CASE-Statment ist in Records leider immer an letzer Stelle und man kann auch keine anderen Felder dahinter anlegen. :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 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