Variant und Single

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Variant und Single

Beitrag von Mathias »

Ich wollte estwas mit Variant ausprobieren, da habe ich festgestellt, das der Single als Double erkannt wird.

Code: Alles auswählen

program Project1;

uses
  Variants;

  procedure ProcessVariant(v: variant);
  begin
    case varType(v) of
      varSingle: begin
        Writeln('Single');
      end;
      varDouble: begin
        Writeln('Double');
      end;
      varCurrency: begin
        Writeln('Currency');
      end;
    end;
  end;

var
  f: single = 0;
  d: double = 0;
  e: extended = 0;
  c: currency = 0;

begin
  ProcessVariant(f);  // Double
  ProcessVariant(d);  // Double
  ProcessVariant(e);  // Double
  ProcessVariant(c);  // Curreny  
end. 
Es werden alle Fliesskommazahlen ausser curreny als Double erkannt.
Wieso ist das so?

Als Vorlage habe ich dies genommen: https://wiki.freepascal.org/Variant
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10919
Registriert: Mo 11. Sep 2006, 19:01

Re: Variant und Single

Beitrag von theo »

Warum ist dir das wichtig? Der Speicherbedarf ändert sich dadurch ja nicht.
Das ist bei Delphi auch so:
https://stackoverflow.com/questions/151 ... le-variant

wp_xyz
Beiträge: 5187
Registriert: Fr 8. Apr 2011, 09:01

Re: Variant und Single

Beitrag von wp_xyz »

Und ehrlich: Wenn dir wichtig ist, dass eine Variable ein Single ist, dann nimm doch auch genau diesen Typ und nicht den "Wald-und-Wiesen"-Typ variant a la BASIC.

Antworten