Verwenden von Umrechnungsfunktionen (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Umrechnen von Maßeinheiten (C++)

In Fällen, in denen die Umrechnung komplexer ist, können Sie eine andere Syntax verwenden und die Umrechnung durch eine Funktion statt eines Umrechnungsfaktors definieren. Beispielsweise können Temperaturangaben nicht mit einem Umrechnungsfaktor umgerechnet werden, da die Temperaturskalen unterschiedliche Ursprünge besitzen.

Das folgende Beispiel, das der Unit StdConvs entnommen wurde, zeigt, wie ein Umrechnungstyp registriert wird, indem Funktionen zur Umrechnung von Werten bereitgestellt werden.

Deklarieren von Variablen

Zuerst müssen Variablen für die Bezeichner deklariert werden. Die Bezeichner werden in der neuen Umrechnungsfamilie cbTemperature und den Maßeinheiten dieser Familie verwendet:

TConvFamily cbTemperature;
 TConvType tuCelsius;
 TConvType tuKelvin;
 TConvType tuFahrenheit;

Hinweis: Die hier aufgeführten Maßeinheiten bilden eine Teilmenge der Temperaturmaße, die in der Unit StdConvs tatsächlich registriert sind.

Registrieren der Umrechnungsfamilie

Als Nächstes muss die Umrechnungsfamilie registriert werden:

cbTemperature = RegisterConversionFamily("Temperature");

Registrieren der Grundeinheit

Anschließend definieren und registrieren Sie die Grundeinheit der Umrechnungsfamilie. In diesem Beispiel ist Grad Celsius die Grundeinheit. Beachten Sie, dass bei der Grundeinheit ein einfacher Umrechnungsfaktor angegeben werden kann, da hier keine Umrechnung erforderlich ist:

tuCelsius = RegisterConversionType(cbTemperature, "Celsius", 1);

Erstellen von Methoden zum Umrechnen in die und aus der Grundeinheit

Sie müssen Funktionen erstellen, die Werte der verschiedenen Temperaturskalen in Grad Celsius umrechnen, da ein einfacher Umrechnungsfaktor hierfür nicht ausreicht. Die folgenden Funktionen wurden aus der Unit StdConvs übernommen:

double __fastcall FahrenheitToCelsius(const double AValue) {
     return (((AValue - 32) * 5) / 9);
 }
 
 double __fastcall CelsiusToFahrenheit(const double AValue) {
     return (((AValue * 9) / 5) + 32);
 }
 
 double __fastcall KelvinToCelsius(const double AValue) {
     return (AValue - 273.15);
 }
 
 double __fastcall CelsiusToKelvin(const double AValue) {
     return (AValue + 273.15);
 }

Registrieren weiterer Maßeinheiten

Nach der Definition der Umrechnungsfunktionen können Sie weitere Maßeinheiten für die Umrechnungsfamilie registrieren. Sie geben zudem Beschreibungen dieser Maßeinheiten an.

Mit folgendem Quelltext werden die weiteren Maßeinheiten der Umrechnungsfamilie registriert:

tuKelvin = RegisterConversionType(cbTemperature, "Kelvin", KelvinToCelsius,
 		CelsiusToKelvin);
 tuFahrenheit = RegisterConversionType(cbTemperature, "Fahrenheit",
 		FahrenheitToCelsius, CelsiusToFahrenheit);

Verwenden der neuen Maßeinheiten

Die registrierten Maßeinheiten stehen nun Anwendungen für Umrechnungen zur Verfügung. Die globale Funktion Convert kann Temperaturwerte beliebig zwischen den in der Umrechnungsfamilie cbTemperature registrierten Einheiten umrechnen. Mit der folgenden Anweisung wird beispielsweise ein Wert von Grad Fahrenheit in Grad Kelvin umgerechnet.

Convert(StrToFloat(Edit1->Text), tuFahrenheit, tuKelvin);

Siehe auch