AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi vorteile eines variant records gegenüber einem normalen ??
Thema durchsuchen
Ansicht
Themen-Optionen

vorteile eines variant records gegenüber einem normalen ??

Ein Thema von erniepb · begonnen am 8. Jun 2002 · letzter Beitrag vom 9. Jun 2002
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.124 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 8. Jun 2002, 13:43
Moin Ernie,

also das mit dem packed war die "Macht der Gewohnheit". Meist benutze ich Records für Dateien, und da macht das schon Sinn, um Lücken zwischen den einzelnen Datenfeldern zu vermeiden.
In Deinem Falle wirst Du wohl darauf verzichten können. Wie Du schon so richtig bemerkt hast drückt das auf die Performance.

Nun zum eigentlichen Problem:
Ist schon richtig, zum Speichern/Auslesen musst Du entscheiden, ob es sich nun um einen numerischen Wert handelt oder nicht.
Der Vorteil ist halt, dass Du nur einmal Speicher belegen musst, und ihn, je nach Art des Datums anders interpretieren kannst.

Code:
type
  TMyVariantRecord =
    record
      fNumeric : Boolean;
      case Boolean of
        false :
          (sContent : string[SizeOf(Extended)]);
        true :
          (exContent : extended);
    end;

var
  vr : TMyVariantRecord;

begin
  // speichern
  vr.fNumeric := true;
  try
    vr.exContent := StrToFloat(Edit1.Text);
  except
    vr.fNumeric := false;
    vr.sContent  := Edit1.Text;
  end;
  // auslesen
  if vr.fNumeric then
  begin
    ShowMessage('Numerisch: '+FloatToStr(vr.exContent));
  end
  else
  begin
    ShowMessage('Text:'+vr.sContent);
  end;
end;
So ist es auch möglich ein array of TMyVariantRecord anzulegen, bei dem die numerischen und nicht numerischen Werte problemlos gemischt gespeichert werden können. Man braucht nur eine Variable, und kann anhand des Flag Feldes entscheiden, wie der Inhalt jeweils zu interpretieren ist.
Um das zu tun, was Deiner Vorstellung entspricht, müsstest Du wohl den Typ Variant nehmen. Dem kannst Du beliebig Werte unterschiedlicher Typen zuweisen.
Aber der ist so richtig langsam.
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
 


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