Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zwei Variablen mit dem gleichen Speicher (https://www.delphipraxis.net/157312-zwei-variablen-mit-dem-gleichen-speicher.html)

generic 7. Jan 2011 13:22

AW: Zwei Variablen mit dem gleichen Speicher
 
Alternativ kann man in einer Variable mehrere "Views" abbilden.

Dazu baut man sich einen Record. In der Definition können per case-Befehl verschiedene Darstellung abgebildet werden. Alle Darstellungen müssen "gleich groß" sein.

mkinzler 7. Jan 2011 13:24

AW: Zwei Variablen mit dem gleichen Speicher
 
Zitat:

Zitat von generic (Beitrag 1073007)
Alternativ kann man in einer Variable mehrere "Views" abbilden.

Dazu baut man sich einen Record. In der Definition können per case-Befehl verschiedene Darstellung abgebildet werden. Alle Darstellungen müssen "gleich groß" sein.

Nennt man einen varianten Record ( was ich unter #1 ja schon erwähnt hatte)

JamesTKirk 7. Jan 2011 13:49

AW: Zwei Variablen mit dem gleichen Speicher
 
Zitat:

Zitat von generic (Beitrag 1073007)
Alle Darstellungen müssen "gleich groß" sein.

Nein, müssen sie nicht.

Delphi-Quellcode:
program recordtest;

{$apptype console}

type
  TMyRecord = record
    case Boolean of
      True: (A: Integer; B: Integer);
      False: (C: Byte);
  end;
   
begin
  Writeln(SizeOf(TMyRecord));
end.
Kompiliert ohne Fehler und gibt "8" aus.

Edit: Nur falls jemand das falsche denkt: kompiliert mit Delphi 2007 (kompiliert mit FPC auch, dieser gibt aber 4 aus O.o )
Edit2: Ok... FPC hatte mich derwischt... man sollte natürlich in dem Modus kompilieren, in dem SizeOf(Integer)=4 ist... :wall:

Gruß,
Sven

p80286 7. Jan 2011 17:03

AW: Zwei Variablen mit dem gleichen Speicher
 
Da hab ich jetzt ein Problem, irgendwo hab ich gelesen, daß solche Konstruktionen für jede "case-Zweig" einen eigenen Speicherbereich belegen. Es soll sich also nicht um unterschiedliche "Views" des gleichen Speicherbereichs handeln ????
Oder hatte packed diese Auswirkung?

Gruß
K-H

himitsu 7. Jan 2011 18:02

AW: Zwei Variablen mit dem gleichen Speicher
 
Wo willst du das gelesen haben?

Ab dem Case fängt jeder Zweig an der selben Stelle (Speicheradresse/Offset) an.
Speicher wird soviel reserviert, wie der größte Zweig belegt.

PACKED sagt nur, daß keine Speicherausrichtung verwendet werden soll.

p80286 7. Jan 2011 20:45

AW: Zwei Variablen mit dem gleichen Speicher
 
Keine Ahnung, war irgendein Buch oder Artikel über Records, angeblich sollten die Daten wie benötigt kopiert werden.
Gut, daß das Blödsinn ist!

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz