Lade...
 

CX_VALUE - Wert

CX_VALUE

Klassenhierarchie
Beschreibung:

Diese Klasse erlaubt es, reelle Zahlen mit einer Einheit anzugeben. Da jedes Objekt dieser Klasse seine Einheit kennt, ist für einen Wert gewährleistet, dass nur erlaubte arithmetische Operationen möglich sind: z.B. ist "1 m + 5 h" eine unerlaubte Addition, während "1 m + 30 cm" den Wert "1,3 m" ergibt. Ein Wert kann zudem auch einheitslos werden: dieser Zustand kann bei Rechenoperationen, wie z.B. "5 m / 3 cm", entstehen und wird durch ein Wert ohne Einheit dargestellt: z.B. "1,2356".

Da in verschiedenen Ländern andere Einheiten verwendet werden und diese gleichzeitig im System gehalten werden können, müssen die Ergebnisse nach der Berechnung potenziell in die gewünschte Zieleinheit überführt werden. In den USA wird beispielsweise statt "Liter" die Einheit "Galone" verwendet. Um nach einer Rechenoperation die gewünschte Einheit zu erhalten, stehen die Funktionen Convert bzw. ConvertWeak zur Verfügung.

Code-Beispiel:

Var(value1, value2)
CreateTransObject(CX_VALUE) -> value1      // CX_VALUE erzeugen
"50cm" value1 Put                          // und Wert zuweisen
.................
55.4m -> value2                        // oder so 
................
value1 value2 +=     // Ergebnis :    value1 = 5590cm

 

Sonderfall Temperaturen
Temperaturen werden üblicher Weise in °C, °F oder Kelvin angegeben. Diese Angaben werden vom ClassiX-System ebenfalls unterstützt. Da °C und °F jedoch keine einfachen Faktoren sind, (10°C + 10°C ≠  2 · 10°C ≠ 20°C) wird beim Anlegen eines CX_VALUE mit °C oder °F (224347) der Wert implizit in Kelvin umgewandelt. Per CX_VALUE։։Convert kann eine Temperatur dennoch explizit in °C oder °F umgerechnet werden, jedoch lassen sich diese Werte anschließend nicht mit anderen Einheiten verrechnen.

Default Werte

CreateTransObject(CX_VALUE) erzeugt ein Objekt
- mit der im ClassiX-System angemeldeten Maßeinheit, siehe SetDefaultUnit und
- mit soviel Nachkomma-Stellen, wie es für diese Einheit vorgegeben ist.
Wurde SetDefaultUnit noch nicht aufgerufen, ist die Standard-Eiheit "Stück". Diese Einheit hat standardmäßig 0 Nachkommastellen.

Darstellung am Bildschirm

Zur Darstellung von Objekten dieser Klasse existieren folgende Möglichkeiten:

1. Verwendung eines Oberflächenobjektes vom Typ String. In diesem Fall wird das Objekt in einem einzigen Eingabefeld angegeben. Damit die Einheit beim Export mit angezeigt wird, ist das Flag NF_DIMENSIONED zu verwenden. Werden keine Flags übergeben, so werden standardmäßig die Flags NF_DIMENSIONED und NF_AUTOMATIC_DECIMALS verwendet. Folgende Abbildung zeigt ein Beispiel (Programmcode):

2. Die Verwendung von zwei Oberflächenobjekten vom Typ String, wobei in dem einen der Zahlenanteil und in dem anderen die Einheit eingegeben wird. Dabei kann auch das Oberflächenobjekt Numeric zur Verwaltung des Zahlenanteils dienen. Für die Einheit besteht die Möglichkeit, die Felder Enumeration bzw. Combo zu benutzen, so dass dem Benutzer eine Auswahl an Einheiten zur Verfügung gestellt werden kann (Programmcode):

Anmerkung: Die Bestandteile einer zusammengesetzten Einheit werden in ClassiX® durch das Multiplikationszeichen "*" und den im System eingestellten Trenner für Bruchzahlen (z.B. "/") voneinander getrennt angezeigt. Dabei ist zu beachten, dass ohne Klammerung gearbeitet wird, um die Ausgabe einer Einheit nicht zu verkomplizieren. Somit entspricht die Einheit "m/s*kg" der Einheit "m/(s*kg)" und nicht der Einheit "m*kg/s".

Im Zusammenhang mit diesen Darstellungsmöglichkeiten und bestimmten InstantView®- Anweisungen spielen die zum Objekt gehörigen Flags eine wichtige Rolle, da mit Ihnen die Darstellung des Objekts modifiziert werden kann.

 

Verhalten bei Put
Für den Import gelten bezüglich der precision für CX_VALUE die gleichen Regeln, wie für CX_NUMERIC.

ParameterTyp Beispiel Verhalten
CX_VALUE 3€ Nummerischer Wert wird mit Einheit in das Zielobjekt übernommen. Die Einheit ? wird hierbei wie eine reguläre Einheit behandelt.
CX_NUMERIC 1.25 Nummerischer Wert wird übernommen und die Einheit bleibt unverändert.
INTEGER 7
STRING ""
"7"
Ein String ohne Einheit wird als Zahl interpretiert und genauso behandelt, als wäre die Zahl auf dem Stack übergeben worden. Ein Leerstring wird dabei wie die Zahl 0 interpretiert. Auch hier verändert sich die Einheit also nicht.
STRING "€"
"?"
Ein String der nur aus einer Einheit besteht wird als CX_VALUE mit dem nummerischen Wert 0 interpretiert. Der nummerische Wert wird also auf 0 gesetzt und die Einheit aus dem String übernommen. ? wird auch hier wie eine reguläre Einheit behandelt.
STRING "7€" Ein String, der aus Einheit und Zahl besteht, wird ebenfalls als CX_VALUE interpretiert und genauso importiert, als würde stattdessen ein CX_VALUE auf dem Stack liegen.

 

Operatoren
Operator Kurzbeschreibung
+, -, *, / Arithmetik
+=, -=, *=, /= Arithmetik
>, <, =   Vergleiche
Methodenverzeichnis (MDI)
Funktion MA* Parameter Rückgabe Kurzbeschreibung
abs     OBJECT Wert ohne Vorzeichen
arc     OBJECT Bogenmaß
arccos     OBJECT Arcus-Kosinus
arcsin     OBJECT Arcus-Sinus
arctan     OBJECT Arcus-Tangens
AutoFormat   INTEGER, INTEGER OBJECT Liefert ein, entsprechend der gegeben Anzahl von Vor- und Nachkommastellen, formatiertes CX_VALUE Objekt zurück.
ceil     OBJECT Kleinste ganze Zahl größer als Objekt
ChangeUnitName   (MLSTRING)   Einheit umbenennen
Convert   (STRING) OBJECT Konvertieren in eine andere Einheit
ConvertWeak   (STRING) OBJECT wie Convert, beim Fehler NULL zurück
CopyUnitName   (INTEGER)   Einheitsname ändern
cos     OBJECT Kosinus
cosh     OBJECT Kosinus-Hyperbolikus
cot     OBJECT Kotangens
DigitalHours       Ein-/Ausgabesteuerung von Zeit-Einheiten
EqualUnit   (OBJECT) INTEGER Überprüft, ob zwei Werte die gleiche Einheit besitzen
exp     OBJECT Exponent
floor     OBJECT Größte ganze Zahl kleiner als Objekt
Get1Value     OBJECT Rückgabe: Zahl mit Wert 1
GetUnitParameter     OBJECT Rückgabe: Einheit 
GetValue     OBJECT Rückgabe: Objekt als Wert 
GetValuePer     OBJECT Rückgabe: Objekt als Wertebruch
ValuePer   (CX_VALUE) OBJECT Rückgabe: Objekt als Wertebruch
GrossAmount   (OBJECT) OBJECT Prozentwert addieren
HasUnit   (STRING) INTEGER Überprüft, ob der Wert eine bestimmte Einheit hat
ImportObject   (OBJECT) INTEGER Setzen der Zahl
IsArea     INTEGER Einheiten-Bereich testen: Flächen
IsCompound     INTEGER Einheiten-Bereich testen: zusammengesetzte Einheiten
IsCurrency     INTEGER Einheiten-Bereich testen: Währungen 
IsDuration     INTEGER Einheiten-Bereich testen: Zeiten 
IsEuroCurrency     INTEGER Einheiten-Bereich testen: Euro-Währungen
IsGeometrical     INTEGER Einheiten-Bereich testen: Längen, Flächen oder Raumangaben 
IsLength     INTEGER Einheiten-Bereich testen: Längen
IsPacking     INTEGER Einheiten-Bereich testen: Verpackungen
IsPieces     INTEGER Einheiten-Bereich testen: Stückangaben 
IsTemperature     INTEGER Einheiten-Bereich testen: Temperaturen 
IsUserDefined     INTEGER Einheiten-Bereich testen: selbstdefinierte Einheiten
IsVolume     INTEGER Einheiten-Bereich testen: Raumangaben 
IsWeight     INTEGER Einheiten-Bereich testen: Gewichte
ln     OBJECT natürl. Logarithmus 
log     OBJECT Logarithm. Basis 10 (log10 x)
max   (OBJECT) OBJECT  Vergleich "Größer"   if (a > b) a else b
min   (OBJECT) OBJECT  Vergleich "Kleiner"  if (a < b) a else b
NetAmount   (OBJECT) OBJECT Division mit Prozentwert
pow   (OBJECT) OBJECT Berechnet Zahl hoch Parameter-Zahl     xy
RateOfLastConversion     OBJECT Rückgabe: letzte Konvertierungsrate, die mit UnitConvert oder UnitCrossConvert von Einheiten- Konvertierungstabelle ausgeführt wurde.
ResetUnitName       Änderungen von ChangeUnitName und CopyUnitName zurücknehmen.
round   (OBJECT) OBJECT wie Round , nur mit Rückgabe des Objektes 
RoundAutomatically     OBJECT Runden der Zahl mit der Präzision, die sich aus der Einheit ergibt
RoundByPrecision       Runden mit aktueller Präzision
SetDefaultCurrency       Standard-Währungseinheit setzen
SetDefaultUnit       vorgegebene Einheit ändern
SetValue   STRING, INTEGER   Zeichenkette als Wert importieren
sin     OBJECT Sinus
sinh     OBJECT Sinus-Hyperbolikus
sqrt     OBJECT Quadrat-Wurzel 
tan     OBJECT Tangens
tanh     OBJECT Tangens-Hyperbolikus 
truncate   (OBJECT) OBJECT wie Truncate , nur mit Rückgabe des Objektes 
Unit *     Ein-/Ausgabesteuerung der Einheit als Text
UnitEnum *     Ein-/Ausgabesteuerung der Einheit als interner Wert
UnitNumber     INTEGER Interner Wert der einfachen Einheit
ValuePer   CX_VALUE CX_VALUE_PER Erstellt einen Wertebruch (CX_VALUE_PER)
Add   CX_AMOUNT CX_AMOUNT Operator + als Funktion
AddAssign   CX_AMOUNT   Operator += als Funktion
AdjustPrecision       Anpassen der Genauigkeit
Amount     OBJECT Rückgabe des Objektswertes
AmountWeak   CX_AMOUNT    
ChangeSign       Vorzeichen umdrehen
DiscreteRange   (OBJECT, OBJECT, OBJECT) INTEGER Zahlbereich testen
DivAssign   CX_AMOUNT   Operator /= als Funktion
Divide   CX_AMOUNT CX_AMOUNT Operator / als Funktion
GetFraction     OBJECT Zahl in Bruchzahl-Form
GetNumeric     OBJECT Rückgabe: Objekt als reelle Zahl 
InWords   (INTEGER, INTEGER) MLSTRING Zahl in Zahlwörter umsetzen
IsNegative     INTEGER Negatives Vorzeichen testen
IsZero     INTEGER Zahl auf Null testen
MulAssign   CX_AMOUNT   Operator *= als Funktion
Multiply   CX_AMOUNT CX_AMOUNT Operator * als Funktion
PercentDifference   (OBJECT) OBJECT Differenz von zwei Zahlen als Prozentwert 
Precision *     Verändern der Genauigkeit
PrecisionAdjusted     OBJECT wie AdjustPrecision, nur mit Rückgabe des Objektes
Reciprocal     OBJECT Kehrwertbildung
Round   (INTEGER)   Runden der Zahl
Rounded   (INTEGER)    
SetNumeric   STRING, INTEGER   Zeichenkette als Zahl importieren
SetPrecision   (INTEGER)   Anzahl an Nachkommastellen setzen
SetZero       Zahl auf Null setzen
string   INTEGER CX_STRING Liefert die String-Darstellung des Objektes
SubAssign   CX_AMOUNT   Operator -= als Funktion
Subtract   CX_AMOUNT CX_AMOUNT Operator - als Funktion
Truncate   (INTEGER)   Abschneiden von Nachkommastellen

Zudem sind für jede Einheit zwei übliche Anzahlen an Nachkommastellen vordefiniert. Diese lassen sich über die folgenden (statischen) Funktionen abfragen:

Funktionsname Kurzbeschreibung
UnitPrecision   nationale Genauigkeit der Einheit
RateTablePrecision internationale Genauigkeit der Einheit 
Datenverzeichnis (DDI)
Datenfeld Typ Referenz-Klasse I* Kurzbeschreibung
this CX_NUMERIC     Die Zahl

* I = Indizierbares Datenfeld

Verwendung in AppsWH
Modul Kurzbeschreibung
calcula.mod Einheiten-Taschenrechner Modul
qm\tmprture_qm.mod Konvertierungen zwischen Temperaturen Editiermodul