|
@@ -31,169 +31,6 @@ Type TConvType = type Integer;
|
|
|
TConvTypeArray = array of TConvType;
|
|
|
TConversionProc = function(const AValue: Double): Double;
|
|
|
|
|
|
-var
|
|
|
-
|
|
|
-{cbArea family}
|
|
|
-
|
|
|
- auSquareMillimeters,
|
|
|
- auSquareCentimeters,
|
|
|
- auSquareDecimeters,
|
|
|
- auSquareMeters,
|
|
|
- auSquareDecameters,
|
|
|
- auSquareHectometers,
|
|
|
- auSquareKilometers,
|
|
|
- auSquareInches,
|
|
|
- auSquareFeet ,
|
|
|
- auSquareYards ,
|
|
|
- auSquareMiles,
|
|
|
- auAcres ,
|
|
|
- auCentares ,
|
|
|
- auAres ,
|
|
|
- auHectares ,
|
|
|
- auSquareRods ,
|
|
|
-
|
|
|
-{cbDistance family}
|
|
|
-
|
|
|
- duMicromicrons,
|
|
|
- duAngstroms ,
|
|
|
- duMillimicrons,
|
|
|
- duMicrons,
|
|
|
- duMillimeters,
|
|
|
- duCentimeters,
|
|
|
- duDecimeters,
|
|
|
- duMeters,
|
|
|
- duDecameters,
|
|
|
- duHectometers,
|
|
|
- duKilometers,
|
|
|
- duMegameters,
|
|
|
- duGigameters,
|
|
|
- duInches,
|
|
|
- duFeet,
|
|
|
- duYards,
|
|
|
- duMiles ,
|
|
|
- duNauticalMiles,
|
|
|
- duAstronomicalUnits,
|
|
|
- duLightYears,
|
|
|
- duParsecs,
|
|
|
- duCubits,
|
|
|
- duFathoms,
|
|
|
- duFurlongs,
|
|
|
- duHands,
|
|
|
- duPaces,
|
|
|
- duRods,
|
|
|
- duChains,
|
|
|
- duLinks,
|
|
|
- duPicas,
|
|
|
- duPoints,
|
|
|
-
|
|
|
-{cbMass family}
|
|
|
-
|
|
|
- muNanograms,
|
|
|
- muMicrograms,
|
|
|
- muMilligrams,
|
|
|
- muCentigrams,
|
|
|
- muDecigrams,
|
|
|
- muGrams,
|
|
|
- muDecagrams,
|
|
|
- muHectograms,
|
|
|
- muKilograms,
|
|
|
- muMetricTons,
|
|
|
- muDrams,
|
|
|
- muGrains,
|
|
|
- muLongTons,
|
|
|
- muTons,
|
|
|
- muOunces,
|
|
|
- muPounds,
|
|
|
- muStones,
|
|
|
-
|
|
|
-{cbTemperature family}
|
|
|
-
|
|
|
- tuCelsius,
|
|
|
- tuKelvin,
|
|
|
- tuFahrenheit,
|
|
|
- tuRankine,
|
|
|
- tuReamur,
|
|
|
-
|
|
|
-{
|
|
|
-cbTime family
|
|
|
-}
|
|
|
-
|
|
|
- tuMilliSeconds,
|
|
|
- tuSeconds,
|
|
|
- tuMinutes,
|
|
|
- tuHours,
|
|
|
- tuDays,
|
|
|
- tuWeeks,
|
|
|
- tuFortnights,
|
|
|
- tuMonths,
|
|
|
- tuYears,
|
|
|
- tuDecades,
|
|
|
- tuCenturies,
|
|
|
- tuMillennia,
|
|
|
- tuDateTime,
|
|
|
- tuJulianDate,
|
|
|
- tuModifiedJulianDate,
|
|
|
-
|
|
|
-{
|
|
|
-cbVolume family
|
|
|
-}
|
|
|
-
|
|
|
- vuCubicMillimeters,
|
|
|
- vuCubicCentimeters,
|
|
|
- vuCubicDecimeters,
|
|
|
- vuCubicMeters,
|
|
|
- vuCubicDecameters,
|
|
|
- vuCubicHectometers,
|
|
|
- vuCubicKilometers,
|
|
|
- vuCubicInches,
|
|
|
- vuCubicFeet,
|
|
|
- vuCubicYards,
|
|
|
- vuCubicMiles,
|
|
|
- vuMilliLiters,
|
|
|
- vuCentiLiters,
|
|
|
- vuDeciLiters,
|
|
|
- vuLiters,
|
|
|
- vuDecaLiters,
|
|
|
- vuHectoLiters,
|
|
|
- vuKiloLiters,
|
|
|
- vuAcreFeet,
|
|
|
- vuAcreInches,
|
|
|
- vuCords,
|
|
|
- vuCordFeet,
|
|
|
- vuDecisteres,
|
|
|
- vuSteres,
|
|
|
- vuDecasteres,
|
|
|
- vuFluidGallons,
|
|
|
- vuFluidQuarts,
|
|
|
- vuFluidPints,
|
|
|
- vuFluidCups,
|
|
|
- vuFluidGills,
|
|
|
- vuFluidOunces,
|
|
|
- vuFluidTablespoons,
|
|
|
- vuFluidTeaspoons,
|
|
|
- vuDryGallons,
|
|
|
- vuDryQuarts,
|
|
|
- vuDryPints,
|
|
|
- vuDryPecks,
|
|
|
- vuDryBuckets,
|
|
|
- vuDryBushels,
|
|
|
- vuUKGallons,
|
|
|
- vuUKPottles,
|
|
|
- vuUKQuarts,
|
|
|
- vuUKPints,
|
|
|
- vuUKGills,
|
|
|
- vuUKOunces,
|
|
|
- vuUKPecks,
|
|
|
- vuUKBuckets,
|
|
|
- vuUKBushels : TConvType;
|
|
|
-
|
|
|
-var
|
|
|
- cbArea : TConvFamily;
|
|
|
- cbDistance : TConvFamily;
|
|
|
- cbMass : TConvFamily;
|
|
|
- cbTemperature : TConvFamily;
|
|
|
- cbTime : TConvFamily;
|
|
|
- cbVolume : TConvFamily;
|
|
|
|
|
|
Type TConvUtilFloat = double;
|
|
|
|
|
@@ -223,144 +60,30 @@ Type
|
|
|
property Description: String read FDescription;
|
|
|
end;
|
|
|
|
|
|
+ TConvTypeFactor = class(TConvTypeInfo)
|
|
|
+ private
|
|
|
+ FFactor: Double;
|
|
|
+ protected
|
|
|
+ property Factor: Double read FFactor;
|
|
|
+ public
|
|
|
+ constructor Create(const AConvFamily: TConvFamily; const ADescription: string;
|
|
|
+ const AFactor: Double);
|
|
|
+ function ToCommon(const AValue: Double): Double; override;
|
|
|
+ function FromCommon(const AValue: Double): Double; override;
|
|
|
+ end;
|
|
|
|
|
|
-Implementation
|
|
|
+ TConvTypeProcs = class(TConvTypeInfo)
|
|
|
+ private
|
|
|
+ FToProc: TConversionProc;
|
|
|
+ FFromProc: TConversionProc;
|
|
|
+ public
|
|
|
+ constructor Create(const AConvFamily: TConvFamily; const ADescription: string;
|
|
|
+ const AToProc, AFromProc: TConversionProc);
|
|
|
+ function ToCommon(const AValue: Double): Double; override;
|
|
|
+ function FromCommon(const AValue: Double): Double; override;
|
|
|
+ end;
|
|
|
|
|
|
-ResourceString // Note, designations for FFU's are guesses.
|
|
|
-
|
|
|
- txtauSquareMillimeters = 'Square millimeters (mm^2)';
|
|
|
- txtauSquareCentimeters = 'Square centimeters (cm^2)';
|
|
|
- txtauSquareDecimeters = 'Square decimeters (dm^2)';
|
|
|
- txtauSquareMeters = 'Square meters (m^2)';
|
|
|
- txtauSquareDecameters = 'Square decameters (dam^2)';
|
|
|
- txtauSquareHectometers = 'Square hectometers (hm^2)';
|
|
|
- txtauSquareKilometers = 'Square kilometers (km^2)';
|
|
|
- txtauSquareInches = 'Square inch (in^2)';
|
|
|
- txtauSquareFeet = 'Square feet (ft^2)';
|
|
|
- txtauSquareYards = 'Square yards (yd^2)';
|
|
|
- txtauSquareMiles = 'Square miles (mi^2)';
|
|
|
- txtauAcres = 'Square acres (acre^2)';
|
|
|
- txtauCentares = 'Centares (care^2)';
|
|
|
- txtauAres = 'Ares (are=dam^2)';
|
|
|
- txtauHectares = 'Hectares (ha=hm^2)';
|
|
|
- txtauSquareRods = 'Square Rods (sqr)';
|
|
|
- txtduMicromicrons = 'micro microms (mumum)';
|
|
|
- txtduAngstroms = 'Aengstroem (ang)';
|
|
|
- txtduMillimicrons = 'millimicroms (mmum)';
|
|
|
- txtduMicrons = 'microns (um)';
|
|
|
- txtduMillimeters = 'millimeters (mm)';
|
|
|
- txtduCentimeters = 'centimeters (cm)';
|
|
|
- txtduDecimeters = 'decimeters (dm)';
|
|
|
- txtduMeters = 'meters (m)';
|
|
|
- txtduDecameters = 'decameters (dam)';
|
|
|
- txtduHectometers = 'hectometers (hm)';
|
|
|
- txtduKilometers = 'kilometers (km)';
|
|
|
- txtduMegameters = 'megameters (Mm)';
|
|
|
- txtduGigameters = 'gigameters (Gm)';
|
|
|
- txtduInches = 'inches (in)';
|
|
|
- txtduFeet = 'feet (ft)';
|
|
|
- txtduYards = 'yards (yd)';
|
|
|
- txtduMiles = 'miles (mi)';
|
|
|
- txtduNauticalMiles = 'nautical miles (nmi)';
|
|
|
- txtduAstronomicalUnits = 'astronomical units (au)';
|
|
|
- txtduLightYears = 'light years (ly)';
|
|
|
- txtduParsecs = 'Parsec (Ps)';
|
|
|
- txtduCubits = 'Cubits (cb)';
|
|
|
- txtduFathoms = 'Fathom (Fth)';
|
|
|
- txtduFurlongs = 'Furlongs (furl)';
|
|
|
- txtduHands = 'Hands (hnd)';
|
|
|
- txtduPaces = 'Paces (pc)';
|
|
|
- txtduRods = 'Rods (rd)';
|
|
|
- txtduChains = 'Chains (ch)';
|
|
|
- txtduLinks = 'Links (lnk)';
|
|
|
- txtduPicas = 'Pica''s (pc)';
|
|
|
- txtduPoints = 'Points (pnts)'; // carat/Karaat 2E-6 gram ?
|
|
|
- txtmuNanograms = 'nanograms (ng)';
|
|
|
- txtmuMicrograms = 'micrograms (um)';
|
|
|
- txtmuMilligrams = 'milligrams (mg)';
|
|
|
- txtmuCentigrams = 'centigrams (cg)';
|
|
|
- txtmuDecigrams = 'decigrams (dg)';
|
|
|
- txtmuGrams = 'grams (g)';
|
|
|
- txtmuDecagrams = 'decagrams (dag)';
|
|
|
- txtmuHectograms = 'hectograms (hg)';
|
|
|
- txtmuKilograms = 'kilograms (kg)';
|
|
|
- txtmuMetricTons = 'metric ton (t)';
|
|
|
- txtmuDrams = 'dramgs (??)';
|
|
|
- txtmuGrains = 'grains (??)';
|
|
|
- txtmuLongTons = 'longton (??)';
|
|
|
- txtmuTons = 'imperial ton (??)'; // calling metric ton "ton" is normal in metric countries
|
|
|
- txtmuOunces = 'ounce (??)';
|
|
|
- txtmuPounds = 'pounds (??)'; // what kind? Metric pound =0.5
|
|
|
- txtmuStones = 'stones (??)';
|
|
|
- txttuCelsius = 'degrees Celsius (degC)';
|
|
|
- txttuKelvin = 'degrees Kelvin (K)';
|
|
|
- txttuFahrenheit = 'degrees Fahrenheit (degF)';
|
|
|
- txttuRankine = 'degrees Rankine (degR)';
|
|
|
- txttuReamur = 'degrees Reamur (degReam)';
|
|
|
- txttuMilliSeconds = 'milli seconds (ms)';
|
|
|
- txttuSeconds = 'seconds (s)';
|
|
|
- txttuMinutes = 'minutes (min)';
|
|
|
- txttuHours = 'hours (hr)';
|
|
|
- txttuDays = 'days (days)';
|
|
|
- txttuWeeks = 'weeks (weeks)';
|
|
|
- txttuFortnights = 'Fortnights (??)';
|
|
|
- txttuMonths = 'Months (months)';
|
|
|
- txttuYears = 'Years (years)';
|
|
|
- txttuDecades = 'Decades (decades)';
|
|
|
- txttuCenturies = 'Centuries (centuries)';
|
|
|
- txttuMillennia = 'Millennia (millenia)';
|
|
|
- txttuDateTime = 'DateTime (??)';
|
|
|
- txttuJulianDate = 'JulianDate (??)';
|
|
|
- txttuModifiedJulianDate = 'Modified JulianData (??)';
|
|
|
-
|
|
|
- txtvuCubicMillimeters = 'cubic millimeters (mm^3)';
|
|
|
- txtvuCubicCentimeters = 'cubic centimeters (cm^3)';
|
|
|
- txtvuCubicDecimeters = 'cubic decimeters (dm^3)';
|
|
|
- txtvuCubicMeters = 'cubic meters (m^3)';
|
|
|
- txtvuCubicDecameters = 'cubic decameters (dam^3)';
|
|
|
- txtvuCubicHectometers = 'cubic hectometers (hm^3)';
|
|
|
- txtvuCubicKilometers = 'cubic kilometers (km^3)';
|
|
|
- txtvuCubicInches = 'cubic inches (in^3)';
|
|
|
- txtvuCubicFeet = 'cubic feet (ft^3)';
|
|
|
- txtvuCubicYards = 'cubic yards (yd^3)';
|
|
|
- txtvuCubicMiles = 'cubic miles (mi^3)';
|
|
|
- txtvuMilliLiters = 'milliliters (ml)';
|
|
|
- txtvuCentiLiters = 'centiliters (cl)';
|
|
|
- txtvuDeciLiters = 'deciliters (dl)';
|
|
|
- txtvuLiters = 'liters (l)';
|
|
|
- txtvuDecaLiters = 'decaliters (dal)';
|
|
|
- txtvuHectoLiters = 'hectoliters (hl)';
|
|
|
- txtvuKiloLiters = 'kiloliters (kl)';
|
|
|
- txtvuAcreFeet = 'acrefeet (acre ft)';
|
|
|
- txtvuAcreInches = 'acreinches (acre in)';
|
|
|
- txtvuCords = 'cords (??)';
|
|
|
- txtvuCordFeet = 'cordfeet (??)';
|
|
|
- txtvuDecisteres = 'decisteres (??)';
|
|
|
- txtvuSteres = 'steres (??)';
|
|
|
- txtvuDecasteres = 'decasteres (??)';
|
|
|
- txtvuFluidGallons = 'US fluid gallons (fl gal)';
|
|
|
- txtvuFluidQuarts = 'US fluid Quarts (fl Quart)';
|
|
|
- txtvuFluidPints = 'US fluid Pints (fl pints)';
|
|
|
- txtvuFluidCups = 'US fluid Cups (fl Cups)';
|
|
|
- txtvuFluidGills = 'US fluid Gills (fl Quart)';
|
|
|
- txtvuFluidOunces = 'US fluid Ounces (fl Ounces)';
|
|
|
- txtvuFluidTablespoons = 'US fluid Tablespoons (fl Tablespoons)';
|
|
|
- txtvuFluidTeaspoons = 'US fluid teaspoons (fl teaspoon)';
|
|
|
- txtvuDryGallons = 'US dry gallons (dr gal)';
|
|
|
- txtvuDryQuarts = 'US dry Quarts (dr Quart)';
|
|
|
- txtvuDryPints = 'US dry Pints (dr pints)';
|
|
|
- txtvuDryPecks = 'US dry pecks (dr pecks)';
|
|
|
- txtvuDryBuckets = 'US dry buckets (dr buckets)';
|
|
|
- txtvuDryBushels = 'US dry bushels (dr bushels)';
|
|
|
- txtvuUKGallons = 'UK gallons (fl gal)';
|
|
|
- txtvuUKPottles = 'UK Pottles (fl pttle)';
|
|
|
- txtvuUKQuarts = 'UK Quarts (fl Quart)';
|
|
|
- txtvuUKPints = 'UK Pints (fl pints)';
|
|
|
- txtvuUKGills = 'UK Gills (fl Quart)';
|
|
|
- txtvuUKOunces = 'UK Ounces (fl Ounces)';
|
|
|
- txtvuUKPecks = 'UK pecks (dr pecks)';
|
|
|
- txtvuUKBuckets = 'UK buckets (dr buckets)';
|
|
|
- txtvuUKBushels = 'UK bushels (dr bushels)';
|
|
|
+Implementation
|
|
|
|
|
|
Type ResourceData = record
|
|
|
Description : String;
|
|
@@ -518,200 +241,40 @@ begin
|
|
|
FConvFamily :=AConvFamily;
|
|
|
end;
|
|
|
|
|
|
- // initial FFU factors from a HP48g calculator and BSD units program. However after
|
|
|
- // a while, the bushels/forthnight got boring, so please check.
|
|
|
- // undefined/uncertain factors get -1, and convert() functions
|
|
|
- // should check that and bomb on it.
|
|
|
-
|
|
|
-procedure RegisterArea;
|
|
|
|
|
|
+constructor TConvTypeFactor.Create(const AConvFamily: TConvFamily; const ADescription: string;const AFactor: Double);
|
|
|
begin
|
|
|
- auSquareMillimeters := RegisterConversionType(cbArea,txtauSquareMillimeters,1E-6);
|
|
|
- auSquareCentimeters := RegisterConversionType(cbArea,txtauSquareCentimeters,1E-4);
|
|
|
- auSquareDecimeters := RegisterConversionType(cbArea,txtauSquareDecimeters,1E-2);
|
|
|
- auSquareMeters := RegisterConversionType(cbArea,txtauSquareMeters,1);
|
|
|
- auSquareDecameters := RegisterConversionType(cbArea,txtauSquareDecameters,1E2);
|
|
|
- auSquareHectometers := RegisterConversionType(cbArea,txtauSquareHectometers,1E4);
|
|
|
- auSquareKilometers := RegisterConversionType(cbArea,txtauSquareKilometers,1E6);
|
|
|
- auSquareInches := RegisterConversionType(cbArea,txtauSquareInches,0.00064516);
|
|
|
- auSquareFeet := RegisterConversionType(cbArea,txtauSquareFeet,0.092903040);
|
|
|
- auSquareYards := RegisterConversionType(cbArea,txtauSquareYards,0.83612736);
|
|
|
- auSquareMiles := RegisterConversionType(cbArea,txtauSquareMiles,2589988.11034);
|
|
|
- auAcres := RegisterConversionType(cbArea,txtauAcres,4046.87260987);
|
|
|
- auCentares := RegisterConversionType(cbArea,txtauCentares,-1);
|
|
|
- auAres := RegisterConversionType(cbArea,txtauAres,100);
|
|
|
- auHectares := RegisterConversionType(cbArea,txtauHectares,10000);
|
|
|
- auSquareRods := RegisterConversionType(cbArea,txtauSquareRods,25.2929538117);
|
|
|
+ inherited create(AConvFamily,ADescription);
|
|
|
+ FFactor:=AFactor;
|
|
|
end;
|
|
|
|
|
|
-procedure RegisterLengths;
|
|
|
-
|
|
|
-begin
|
|
|
- duMicromicrons := RegisterConversionType(cbDistance,txtduMicromicrons,1E-12);
|
|
|
- duAngstroms := RegisterConversionType(cbDistance,txtduAngstroms,1E-10);
|
|
|
- duMillimicrons := RegisterConversionType(cbDistance,txtduMillimicrons,1E-9);
|
|
|
- duMicrons := RegisterConversionType(cbDistance,txtduMicrons,1E-6);
|
|
|
- duMillimeters := RegisterConversionType(cbDistance,txtduMillimeters,1E-3);
|
|
|
- duCentimeters := RegisterConversionType(cbDistance,txtduCentimeters,1E-2);
|
|
|
- duDecimeters := RegisterConversionType(cbDistance,txtduDecimeters,1E-1);
|
|
|
- duMeters := RegisterConversionType(cbDistance,txtduMeters,1);
|
|
|
- duDecameters := RegisterConversionType(cbDistance,txtduDecameters,10);
|
|
|
- duHectometers := RegisterConversionType(cbDistance,txtduHectometers,100);
|
|
|
- duKilometers := RegisterConversionType(cbDistance,txtduKilometers,1000);
|
|
|
- duMegameters := RegisterConversionType(cbDistance,txtduMegameters,1E6);
|
|
|
- duGigameters := RegisterConversionType(cbDistance,txtduGigameters,1E9);
|
|
|
- duInches := RegisterConversionType(cbDistance,txtduInches,0.0254);
|
|
|
- duFeet := RegisterConversionType(cbDistance,txtduFeet,0.3048);
|
|
|
- duYards := RegisterConversionType(cbDistance,txtduYards,0.9144);
|
|
|
- duMiles := RegisterConversionType(cbDistance,txtduMiles,1609.344);
|
|
|
- duNauticalMiles := RegisterConversionType(cbDistance,txtduNauticalMiles,1852);
|
|
|
- duAstronomicalUnits := RegisterConversionType(cbDistance,txtduAstronomicalUnits,149597900000.0);
|
|
|
- duLightYears := RegisterConversionType(cbDistance,txtduLightYears,9.46052840488E15);
|
|
|
- duParsecs := RegisterConversionType(cbDistance,txtduParsecs, 3.08567818585E16);
|
|
|
- duCubits := RegisterConversionType(cbDistance,txtduCubits,0.4572);
|
|
|
- duFathoms := RegisterConversionType(cbDistance,txtduFathoms,1.8288);
|
|
|
- duFurlongs := RegisterConversionType(cbDistance,txtduFurlongs,201.168);
|
|
|
- duHands := RegisterConversionType(cbDistance,txtduHands,0.1016);
|
|
|
- duPaces := RegisterConversionType(cbDistance,txtduPaces,0.9144);
|
|
|
- duRods := RegisterConversionType(cbDistance,txtduRods,5.0292);
|
|
|
- duChains := RegisterConversionType(cbDistance,txtduChains,20.1168);
|
|
|
- duLinks := RegisterConversionType(cbDistance,txtduLinks,0.201168);
|
|
|
- duPicas := RegisterConversionType(cbDistance,txtduPicas,0.0042333333);
|
|
|
- duPoints := RegisterConversionType(cbDistance,txtduPoints,0.00035277778);
|
|
|
-end;
|
|
|
-
|
|
|
-procedure Registermass; // weight? :)
|
|
|
-
|
|
|
+function TConvTypeFactor.ToCommon(const AValue: Double): Double;
|
|
|
begin
|
|
|
- muNanograms := RegisterConversionType(cbMass,txtmuNanograms,1E-12);
|
|
|
- muMicrograms := RegisterConversionType(cbMass,txtmuMicrograms,1E-9);
|
|
|
- muMilligrams := RegisterConversionType(cbMass,txtmuMilligrams,1E-6);
|
|
|
- muCentigrams := RegisterConversionType(cbMass,txtmuCentigrams,1E-5);
|
|
|
- muDecigrams := RegisterConversionType(cbMass,txtmuDecigrams,1E-4);
|
|
|
- muGrams := RegisterConversionType(cbMass,txtmuGrams,1E-3);
|
|
|
- muDecagrams := RegisterConversionType(cbMass,txtmuDecagrams,1E-2);
|
|
|
- muHectograms := RegisterConversionType(cbMass,txtmuHectograms,1E-1);
|
|
|
- muKilograms := RegisterConversionType(cbMass,txtmuKilograms,1);
|
|
|
- muMetricTons := RegisterConversionType(cbMass,txtmuMetricTons,1000);
|
|
|
- muDrams := RegisterConversionType(cbMass,txtmuDrams,0.0017718452);
|
|
|
- muGrains := RegisterConversionType(cbMass,txtmuGrains,6.479891E-5);
|
|
|
- muLongTons := RegisterConversionType(cbMass,txtmuLongTons,1016.0469);
|
|
|
- muTons := RegisterConversionType(cbMass,txtmuTons,907.18474);
|
|
|
- muOunces := RegisterConversionType(cbMass,txtmuOunces,0.028349523);
|
|
|
- muPounds := RegisterConversionType(cbMass,txtmuPounds,0.45359237);
|
|
|
- muStones := RegisterConversionType(cbMass,txtmuStones,6.3502932);
|
|
|
+ result:=AValue * FFactor;
|
|
|
end;
|
|
|
|
|
|
-procedure RegisterTemperature;
|
|
|
+function TConvTypeFactor.FromCommon(const AValue: Double): Double;
|
|
|
begin
|
|
|
- tuCelsius := RegisterConversionType(cbTemperature,txttuCelsius,1);
|
|
|
- tuKelvin := RegisterConversionType(cbTemperature,txttuKelvin,1);
|
|
|
- tuFahrenheit := RegisterConversionType(cbTemperature,txttuFahrenheit,5/9);
|
|
|
- tuRankine := RegisterConversionType(cbTemperature,txttuRankine,0.5555556);
|
|
|
- tuReamur := RegisterConversionType(cbTemperature,txttuReamur,10/8); // Reaumur?
|
|
|
+ result:=AValue / FFactor;
|
|
|
end;
|
|
|
|
|
|
-Const Yearsec=365.24219879*24*3600.0; // year in seconds;
|
|
|
-
|
|
|
-procedure RegisterTimes;
|
|
|
-
|
|
|
+constructor TConvTypeProcs.Create(const AConvFamily: TConvFamily; const ADescription: string; const AToProc, AFromProc: TConversionProc);
|
|
|
begin
|
|
|
- tuMilliSeconds := RegisterConversionType(cbTime,txttuMilliSeconds,1E-3);
|
|
|
- tuSeconds := RegisterConversionType(cbTime,txttuSeconds,1);
|
|
|
- tuMinutes := RegisterConversionType(cbTime,txttuMinutes,60.0);
|
|
|
- tuHours := RegisterConversionType(cbTime,txttuHours,3600.0);
|
|
|
- tuDays := RegisterConversionType(cbTime,txttuDays,24*3600.0);
|
|
|
- tuWeeks := RegisterConversionType(cbTime,txttuWeeks,7*24*3600.0);
|
|
|
- tuFortnights := RegisterConversionType(cbTime,txttuFortnights,14*24*3600.0);
|
|
|
- tuMonths := RegisterConversionType(cbTime,txttuMonths,1/12*YearSec);
|
|
|
- tuYears := RegisterConversionType(cbTime,txttuYears,YearSec);
|
|
|
- tuDecades := RegisterConversionType(cbTime,txttuDecades,10*YearSec);
|
|
|
- tuCenturies := RegisterConversionType(cbTime,txttuCenturies,100*yearsec);
|
|
|
- tuMillennia := RegisterConversionType(cbTime,txttuMillennia,1000*yearsec);
|
|
|
- tuDateTime := RegisterConversionType(cbTime,txttuDateTime,-1);
|
|
|
- tuJulianDate := RegisterConversionType(cbTime,txttuJulianDate,-1);
|
|
|
- tuModifiedJulianDate := RegisterConversionType(cbTime,txttuModifiedJulianDate,-1);
|
|
|
+ inherited create(AConvFamily,ADescription);
|
|
|
+ ftoproc:=AToProc;
|
|
|
+ ffromproc:=AFromProc;
|
|
|
end;
|
|
|
|
|
|
-const flgal=0.0037854118;
|
|
|
-
|
|
|
-
|
|
|
-procedure RegisterVolumes;
|
|
|
+function TConvTypeProcs.ToCommon(const AValue: Double): Double;
|
|
|
begin
|
|
|
- vuCubicMillimeters := RegisterConversionType(cbVolume,txtvuCubicMillimeters,1E-9);
|
|
|
- vuCubicCentimeters := RegisterConversionType(cbVolume,txtvuCubicCentimeters,1E-6);
|
|
|
- vuCubicDecimeters := RegisterConversionType(cbVolume,txtvuCubicDecimeters,1E-3);
|
|
|
- vuCubicMeters := RegisterConversionType(cbVolume,txtvuCubicMeters,1);
|
|
|
- vuCubicDecameters := RegisterConversionType(cbVolume,txtvuCubicDecameters,1E3);
|
|
|
- vuCubicHectometers := RegisterConversionType(cbVolume,txtvuCubicHectometers,1E6);
|
|
|
- vuCubicKilometers := RegisterConversionType(cbVolume,txtvuCubicKilometers,1E9);
|
|
|
- vuCubicInches := RegisterConversionType(cbVolume,txtvuCubicInches,1.6387064E-5);
|
|
|
- vuCubicFeet := RegisterConversionType(cbVolume,txtvuCubicFeet,0.028316847);
|
|
|
- vuCubicYards := RegisterConversionType(cbVolume,txtvuCubicYards,0.76455486);
|
|
|
- vuCubicMiles := RegisterConversionType(cbVolume,txtvuCubicMiles,4.1681818E9);
|
|
|
- vuMilliLiters := RegisterConversionType(cbVolume,txtvuMilliLiters,1E-6);
|
|
|
- vuCentiLiters := RegisterConversionType(cbVolume,txtvuCentiLiters,1E-5);
|
|
|
- vuDeciLiters := RegisterConversionType(cbVolume,txtvuDeciLiters,1E-4);
|
|
|
- vuLiters := RegisterConversionType(cbVolume,txtvuLiters,1E-3);
|
|
|
- vuDecaLiters := RegisterConversionType(cbVolume,txtvuDecaLiters,1E-2);
|
|
|
- vuHectoLiters := RegisterConversionType(cbVolume,txtvuHectoLiters,1E-1);
|
|
|
- vuKiloLiters := RegisterConversionType(cbVolume,txtvuKiloLiters,1);
|
|
|
- vuAcreFeet := RegisterConversionType(cbVolume,txtvuAcreFeet, -1);
|
|
|
- vuAcreInches := RegisterConversionType(cbVolume,txtvuAcreInches, -1);
|
|
|
- vuCords := RegisterConversionType(cbVolume,txtvuCords,128*0.028316847);
|
|
|
- vuCordFeet := RegisterConversionType(cbVolume,txtvuCordFeet,128*0.028316847);
|
|
|
- vuDecisteres := RegisterConversionType(cbVolume,txtvuDecisteres,0.1);
|
|
|
- vuSteres := RegisterConversionType(cbVolume,txtvuSteres,1);
|
|
|
- vuDecasteres := RegisterConversionType(cbVolume,txtvuDecasteres,10);
|
|
|
- vuFluidGallons := RegisterConversionType(cbVolume,txtvuFluidGallons,flgal);
|
|
|
- vuFluidQuarts := RegisterConversionType(cbVolume,txtvuFluidQuarts,0.25*flgal);
|
|
|
- vuFluidPints := RegisterConversionType(cbVolume,txtvuFluidPints,0.5*0.25*flgal);
|
|
|
- vuFluidCups := RegisterConversionType(cbVolume,txtvuFluidCups, -1);
|
|
|
- vuFluidGills := RegisterConversionType(cbVolume,txtvuFluidGills,-1);
|
|
|
- vuFluidOunces := RegisterConversionType(cbVolume,txtvuFluidOunces,1/16*0.5*0.25*flgal);
|
|
|
- vuFluidTablespoons := RegisterConversionType(cbVolume,txtvuFluidTablespoons,-1);
|
|
|
- vuFluidTeaspoons := RegisterConversionType(cbVolume,txtvuFluidTeaspoons,-1);
|
|
|
- vuDryGallons := RegisterConversionType(cbVolume,txtvuDryGallons,-1);
|
|
|
- vuDryQuarts := RegisterConversionType(cbVolume,txtvuDryQuarts,-1);
|
|
|
- vuDryPints := RegisterConversionType(cbVolume,txtvuDryPints,-1);
|
|
|
- vuDryPecks := RegisterConversionType(cbVolume,txtvuDryPecks, 0.0088097675);
|
|
|
- vuDryBuckets := RegisterConversionType(cbVolume,txtvuDryBuckets,-1);
|
|
|
- vuDryBushels := RegisterConversionType(cbVolume,txtvuDryBushels,0.03523907);
|
|
|
- vuUKGallons := RegisterConversionType(cbVolume,txtvuUKGallons,0.0045460993);
|
|
|
- vuUKPottles := RegisterConversionType(cbVolume,txtvuUKPottles,-1);
|
|
|
- vuUKQuarts := RegisterConversionType(cbVolume,txtvuUKQuarts,0.0011365248);
|
|
|
- vuUKPints := RegisterConversionType(cbVolume,txtvuUKPints,-1);
|
|
|
- vuUKGills := RegisterConversionType(cbVolume,txtvuUKGills,-1);
|
|
|
- vuUKOunces := RegisterConversionType(cbVolume,txtvuUKOunces,2.8413121E-5);
|
|
|
- vuUKPecks := RegisterConversionType(cbVolume,txtvuUKPecks,0.0090921986);
|
|
|
- vuUKBuckets := RegisterConversionType(cbVolume,txtvuUKBuckets,-1);
|
|
|
- vuUKBushels := RegisterConversionType(cbVolume,txtvuUKBushels,0.036368794);
|
|
|
+ result:=FTOProc(Avalue);
|
|
|
end;
|
|
|
|
|
|
-Procedure RegisterFamilies;
|
|
|
-Begin
|
|
|
- cbArea := RegisterConversionFamily('Area');
|
|
|
- cbDistance := RegisterConversionFamily('Distance');
|
|
|
- cbMass := RegisterConversionFamily('Mass');
|
|
|
- cbTemperature := RegisterConversionFamily('Temperature');
|
|
|
- cbTime := RegisterConversionFamily('Time');
|
|
|
- cbVolume := RegisterConversionFamily('Volume');
|
|
|
-End;
|
|
|
-
|
|
|
-
|
|
|
-Procedure RegisterAll;
|
|
|
+function TConvTypeProcs.FromCommon(const AValue: Double): Double;
|
|
|
begin
|
|
|
- RegisterFamilies;
|
|
|
- RegisterVolumes;
|
|
|
- RegisterTimes;
|
|
|
- RegisterTemperature;
|
|
|
- Registermass;
|
|
|
- RegisterLengths;
|
|
|
- RegisterArea;
|
|
|
+ result:=FFromProc(Avalue);
|
|
|
end;
|
|
|
|
|
|
-initialization
|
|
|
- registerall;
|
|
|
finalization
|
|
|
setlength(theunits,0);
|
|
|
setlength(thefamilies,0);
|