Ich würde mir so etwas wie "atomare" Einheiten definieren:
m und
kN.
Dann kann man sich zusammengesetzte Einheiten definieren:
Delphi-Quellcode:
type = record
units: array[m..kN]of integer;
end;
Der Inhalt des Arrays gibt dann den Exponenten der Einheit an. Zum Beispiel:
m entspricht {1, 0};
kN/m entspricht {-1, 1}
Dann kann man sich Operationen auf den Zusammengesetzten Einheiten definieren: Multiplikation/Division entspricht der Addition/Substraktion der Arrays. Addition/Subtraktion entspricht einem Test auf Gleichheit der Arrays; bei Ungleichheit könnte man eine
Exception werfen.
Aber ehrlich gesagt würde ich die Werte gleich mit rein packen:
Delphi-Quellcode:
type = record
value: double;
units: array[m..kN]of integer;
end;