AGB  ·  Datenschutz  ·  Impressum  







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

Variante Records?

Ein Thema von Pseudemys Nelsoni · begonnen am 20. Jan 2004 · letzter Beitrag vom 24. Jan 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Variante Records?

  Alt 20. Jan 2004, 13:50
hoi,

ich glaub ich lese mein Delphi Buch schon zum 3ten mal und bleibe immer wieder an der gleichen Stelle hängen - Variante Records, ich weiss gar nicht was für ein vorteil ich mit ihnen habe bzw wie sie funktionieren, ich weiss nur das sie immer den gleichen speicher belegen(?).
Hat jemand eine internetseite mit einem guten beispiel wo man soetwas braucht oder nen Tip?

mfg
Mario
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Variante Records?

  Alt 20. Jan 2004, 20:37
Moin Pseudemys Nelsoni,

in diesem Thread
Double in zwei Integer
hatte ich mal ein Beispiel für die Anwendung von Varianten Records gepostet.

Der Platz, den der Variante Teil belegt, wird bestimmt von der grössten Teilvariante.
Folgenden (verfremdeter ) Ausschnitt aus einem meiner Programme benutze ich zum Lesen einer Datei

Delphi-Quellcode:
  TcsD2S5CCPH = packed record
    dwMC : DWORD;
    dwMB : DWORD;
    dwSC : DWORD;
    dwSB : DWORD;
    dwCL : DWORD;
    case byte of
      $3F : (dwCE_3F : DWORD;);
      $5F : (dwGII_5F : DWORD;);
      $7F : (dwCE_7F : DWORD;
             dwGII_7F : DWORD;);
      $9F : (dwGIS_9F : DWORD;);
      $BF : (dwCE_BF : DWORD;
             dwGIS_BF : DWORD;);
      $DF : (dwGII_DF : DWORD;
             dwGIS_DF : DWORD;);
      $FF : (dwCE_FF : DWORD;
             dwGII_FF : DWORD;
             dwGIS_FF : DWORD;);
  end;
Der gesamte Record ist 32 Byte gross, da er sich aus 5 festen DWORD Werten und maximal 3 variablen (bei $FF) zusammensetzt.
In Abhängigkeit eines anderen Wertes aus der Datei haben die gelesenen Werte an der gleichen Stelle eine unterschiedliche Bedeutung (wie man eventuell an den Bezeichnern ablesen kann.
Im Wesentlichlichen dient also das erste Beispiel (im genannten Thread), der unterschiedlichen Interpretation von Werten, im zweiten dokumentatorischen Zwecken.
Wichtig: Auch die im zweiten gemachte Angabe der Case Label dient nur der Dokumentation. Ich hätte die auch einfach von 0 bis 6 durchnummerieren können, und statt "case byte of" wäre auch "case integer of". Damit es funktioniert muss nur ein Aufzählungstyp angegeben werden, der für die erforderliche Anzahl der zu unterscheidenden Fälle gross genug ist. Ich habe mich nur für Werte entschieden, die den möglichen Werten aus der Datei entspricht, damit das ganze übersichtlicher wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Variante Records?

  Alt 24. Jan 2004, 17:46
hoi, sehe den thread erst jetzt wieder, . Danke für die Erklärung
Mario
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:33 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