AGB  ·  Datenschutz  ·  Impressum  







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

Delphi-Equivalent zur C-union

Ein Thema von oXmoX · begonnen am 21. Jun 2005 · letzter Beitrag vom 22. Jun 2005
 
NicoDE
(Gast)

n/a Beiträge
 
#15

Re: Delphi-Equivalent zur C-union

  Alt 22. Jun 2005, 14:06
Zitat von Zerolith:
Also heißt: Wenn ich eine Liste habe. Die z.B. aus lauter Records mit dieser "Union-Strukutr" besteht kann ich folgendes machen:
Delphi-Quellcode:
Liste[0].Index := 1; // Integer
Liste[0].Value := 'String';
Liste[1].Index := 2;
Liste[1].Value := 325;
Liste[2].Index := 3;
Liste[2].Value := TRUE;
Liste[3].Index := 4;
Liste[3].Value := '2005-05-15 15:00:42';
Die Frage ist, als was .Value deklariert ist. Da Delphi typsicher ist, dürfte die Zuweisung nicht funktionieren.

Eine Lösung könnte so aussehen (obwohl ich die Problemstellung eher mit Klassen oder Variants lösen würde):
Delphi-Quellcode:
type
  TListEntryType = (letAString, letInteger, letBoolean);
  TListEntry = record
    Idx: Integer;
    Typ: TListEntryType;
    Val: record
      case TListEntryType of
        letAString: (AsAString: AnsiString);
        letInteger: (AsInteger: Integer);
        letBoolean: (AsBoolean: Boolean);
    end;
  end;

//...

with Liste[0] do
begin
  Idx := 1;
  Typ := letAString;
  Val.AsAString := 'String';
end;
with Liste[1] do
begin
  Idx := 2;
  Typ := letInteger;
  Val.AsInteger := 325;
end;
with Liste[2] do
begin
  Idx := 3;
  Typ := letBoolean;
  Val.AsBoolean := True;
end;
with Liste[3] do
begin
  Idx := 4;
  Typ := letInteger; // falsch, aber möglich - Beispiel um Fehlerquellen aufzuzeigen :)
  Val.AsAString := '2005-05-15 15:00:42';
end;
  Mit Zitat antworten Zitat
 


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