AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi 2 Case Anweisungen in einem Variant-Record?

2 Case Anweisungen in einem Variant-Record?

Ein Thema von thx.azrael · begonnen am 9. Jul 2009 · letzter Beitrag vom 9. Jul 2009
Antwort Antwort
thx.azrael

Registriert seit: 7. Nov 2006
11 Beiträge
 
Delphi 2009 Professional
 
#1

2 Case Anweisungen in einem Variant-Record?

  Alt 9. Jul 2009, 10:36
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.344 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: 2 Case Anweisungen in einem Variant-Record?

  Alt 9. Jul 2009, 10:48
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
thx.azrael

Registriert seit: 7. Nov 2006
11 Beiträge
 
Delphi 2009 Professional
 
#3

Re: 2 Case Anweisungen in einem Variant-Record?

  Alt 9. Jul 2009, 10:54
Danke für die Idee. Macht zwar Optisch nicht ganz so viel her, funktioniert aber. Schön das sowas hier so schnell geht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.344 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: 2 Case Anweisungen in einem Variant-Record?

  Alt 9. Jul 2009, 11:25
Bitte

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf