Difference between revisions of "Variant/de"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category included in page template)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Variant}}
 
{{Variant}}
  
Speicherbedarf: 16 Byte bzw. 128 Bit<br>
+
 
Eigenschaft: Varianten bieten eine grössere Flexibilität und brauchen dafür mehr Arbeitsspeicherplatz als normale Variablen. Operationen mit Varianten werden deutlich langsamer als mit statisch typisierten [[Data field/de|Datenfeldern / Variablen]] ausgeführt.
+
Zurück zu den [[Data type/de|Datentypen]].
Varianten können Werte beliebigen [[Data type/de|Datentyps]] mit Ausnahme von strukturierten Typen und Zeigern enthalten.
+
 
<br>
+
 
Definition eines Datenfeldes vom [[Data type/de|Datentyp]] Variant:<br>
+
Speicherbedarf bei 32 Bit Kompilierung: 16 Byte bzw. 128 Bit
<syntaxhighlight>
+
 
 +
Speicherbedarf bei 64 Bit Kompilierung: 24 Byte bzw. 192 Bit
 +
 
 +
Eigenschaft: Der [[Data type/de|Datentyps]] Variant bietet in der Programmierung eine grosse Flexibilität. Dafür braucht der [[Data type/de|Datentyp]] Variant mehr Arbeitsspeicher als normale Datenfelder / Variablen.
 +
Variablen vom Datentyp Variant können mit Ausnahme von strukturierten Datentypen Werte von beliebigen Datentypen speichern.
 +
Operationen mit dem Datentyp Variant sind deutlich langsamer als mit statisch typisierten [[Data field/de|Datenfeldern / Variablen]].  
 +
 
 +
Zwei Beispiele für Funktionen aus der Unit '''Variants''':
 +
 
 +
Die Funktion VarType() prüft von welchem Datentyp der Inhalt einer Variablen vom Datentyp Variant ist.
 +
 
 +
Die Funktion VarToStr() wandelt den Inhalt einer Variablen vom Datentyp Variant in den Datentyp String.
 +
 
 +
Definition eines Datenfeldes vom [[Data type/de|Datentyp]] Variant:
 +
 
 +
<syntaxhighlight lang=pascal>
 
var
 
var
 
   v: Variant;
 
   v: Variant;
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
 
<br>
+
Definition der Datenfelder für die Beispiele:
--[[User:Olaf|Olaf]] 17:33, 30 August 2012 (UTC)
+
 
[[Category:Pascal]]
+
<syntaxhighlight lang=pascal>
 +
var
 +
  v: Variant;
 +
  s: String;
 +
  i: Integer;
 +
</syntaxhighlight>
 +
 
 +
Beispiel 1:
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  //Wertzuweisung:
 +
  v := 1;
 +
 
 +
  // Beispiele für zulässige Castings / Typzuweisungen / Konvertierungen des Datentyp:
 +
  //Explizite Datentyp Konvertierungen:
 +
  s := VarToStr(v);
 +
  s := AnsiString(v);
 +
  i := Integer(v);
 +
  //Implizite Datentyp Konvertierung:
 +
  i := v;
 +
</syntaxhighlight>
 +
 
 +
Beispiel 2:
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  //Wertzuweisung:
 +
  v := 'Tomate';
 +
 
 +
  // Beispiele für zulässige Castings / Typzuweisungen / Konvertierungen des Datentyp:
 +
  //Explizite Datentyp Konvertierungen:
 +
  s := VarToStr(v);
 +
  s := AnsiString(v);
 +
</syntaxhighlight>
 +
 
 +
Beispiel 3:
 +
 
 +
<syntaxhighlight lang=pascal>
 +
//Beispiel für die Ermittlung des Datentyps des Inhaltes eines Datenfeldes vom Datentyp Variant:
 +
Case varType(v) of
 +
    varEmpty:
 +
        ShowMessage('Empty');
 +
    varNull:
 +
        ShowMessage('Null');
 +
    varSingle:
 +
        ShowMessage('Datentyp: Single');
 +
    varDouble:
 +
        ShowMessage('Datentyp: Double');
 +
    varDecimal:
 +
        ShowMessage('Datentyp: Decimal');
 +
    varCurrency:
 +
        ShowMessage('Datentyp: Currency');
 +
    varDate:
 +
        ShowMessage('Datentyp: Date');
 +
    varOleStr:
 +
        ShowMessage('Datentyp: UnicodeString');
 +
    varStrArg:
 +
        ShowMessage('Datentyp: COM-compatible string');
 +
    varString:
 +
        ShowMessage('Datentyp: Zeiger auf einen dynamisch erweiterbaren String');
 +
    varDispatch:
 +
        ShowMessage('Datentyp: Zeiger auf ein Automations Objekt');
 +
    varBoolean:
 +
        ShowMessage('Datentyp: Wordbool');
 +
    varVariant:
 +
        ShowMessage('Datentyp: Variant');
 +
    varUnknown:
 +
        ShowMessage('Datentyp: unbekannt');
 +
    varShortInt:
 +
        ShowMessage('Datentyp: ShortInt');
 +
    varSmallint:
 +
        ShowMessage('Datentyp: Smallint');
 +
    varInteger:
 +
        ShowMessage('Datentyp: Integer');
 +
    varInt64:
 +
        ShowMessage('Datentyp: Int64');
 +
    varByte:
 +
        ShowMessage('Datentyp: Byte');
 +
    varWord:
 +
        ShowMessage('Datentyp: Word');
 +
    varLongWord:
 +
        ShowMessage('Datentyp: LongWord');
 +
    varQWord:
 +
        ShowMessage('Datentyp: QWord');
 +
    varError:
 +
        ShowMessage('Fehlermeldung des Betriebsystems');
 +
else
 +
  ShowMessage('Sonstiger Datentyp oder Zustand');
 +
end;
 +
</syntaxhighlight>

Latest revision as of 06:54, 3 March 2020

Deutsch (de) English (en) español (es) français (fr) polski (pl)


Zurück zu den Datentypen.


Speicherbedarf bei 32 Bit Kompilierung: 16 Byte bzw. 128 Bit

Speicherbedarf bei 64 Bit Kompilierung: 24 Byte bzw. 192 Bit

Eigenschaft: Der Datentyps Variant bietet in der Programmierung eine grosse Flexibilität. Dafür braucht der Datentyp Variant mehr Arbeitsspeicher als normale Datenfelder / Variablen. Variablen vom Datentyp Variant können mit Ausnahme von strukturierten Datentypen Werte von beliebigen Datentypen speichern. Operationen mit dem Datentyp Variant sind deutlich langsamer als mit statisch typisierten Datenfeldern / Variablen.

Zwei Beispiele für Funktionen aus der Unit Variants:

Die Funktion VarType() prüft von welchem Datentyp der Inhalt einer Variablen vom Datentyp Variant ist.

Die Funktion VarToStr() wandelt den Inhalt einer Variablen vom Datentyp Variant in den Datentyp String.

Definition eines Datenfeldes vom Datentyp Variant:

var
  v: Variant;

Definition der Datenfelder für die Beispiele:

var
  v: Variant;
  s: String;
  i: Integer;

Beispiel 1:

  //Wertzuweisung:
  v := 1;

  // Beispiele für zulässige Castings / Typzuweisungen / Konvertierungen des Datentyp: 
  //Explizite Datentyp Konvertierungen:
  s := VarToStr(v);
  s := AnsiString(v);
  i := Integer(v);
  //Implizite Datentyp Konvertierung:
  i := v;

Beispiel 2:

  //Wertzuweisung:
  v := 'Tomate';

  // Beispiele für zulässige Castings / Typzuweisungen / Konvertierungen des Datentyp:
  //Explizite Datentyp Konvertierungen:
  s := VarToStr(v);
  s := AnsiString(v);

Beispiel 3:

 //Beispiel für die Ermittlung des Datentyps des Inhaltes eines Datenfeldes vom Datentyp Variant:
 Case varType(v) of
    varEmpty:
        ShowMessage('Empty');
    varNull:
        ShowMessage('Null');
    varSingle:
        ShowMessage('Datentyp: Single');
    varDouble:
        ShowMessage('Datentyp: Double');
    varDecimal:
        ShowMessage('Datentyp: Decimal');
    varCurrency:
        ShowMessage('Datentyp: Currency');
    varDate:
        ShowMessage('Datentyp: Date');
    varOleStr:
        ShowMessage('Datentyp: UnicodeString');
    varStrArg:
        ShowMessage('Datentyp: COM-compatible string');
    varString:
        ShowMessage('Datentyp: Zeiger auf einen dynamisch erweiterbaren String');
    varDispatch:
        ShowMessage('Datentyp: Zeiger auf ein Automations Objekt');
    varBoolean:
        ShowMessage('Datentyp: Wordbool');
    varVariant:
        ShowMessage('Datentyp: Variant');
    varUnknown:
        ShowMessage('Datentyp: unbekannt');
    varShortInt:
        ShowMessage('Datentyp: ShortInt');
    varSmallint:
        ShowMessage('Datentyp: Smallint');
    varInteger:
        ShowMessage('Datentyp: Integer');
    varInt64:
        ShowMessage('Datentyp: Int64');
    varByte:
        ShowMessage('Datentyp: Byte');
    varWord:
        ShowMessage('Datentyp: Word');
    varLongWord:
        ShowMessage('Datentyp: LongWord');
    varQWord:
        ShowMessage('Datentyp: QWord');
    varError:
        ShowMessage('Fehlermeldung des Betriebsystems');
 else
   ShowMessage('Sonstiger Datentyp oder Zustand');
 end;