ConvertImpl.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ConvertImpl;
  2. interface
  3. uses
  4.   Classes, SysUtils, InvokeRegistry, ConvertIntf;
  5. type
  6.   TConvert = class (TInvokableClass, IConvert)
  7.   protected
  8.     function ConvertCurrency (Source, Dest: string; Amount: Double): Double; stdcall;
  9.     function ToEuro (Source: string; Amount: Double): Double; stdcall;
  10.     function FromEuro (Dest: string; Amount: Double): Double; stdcall;
  11.     function TypesList: string; stdcall;    
  12.   end;
  13. implementation
  14. uses
  15.   ConvUtils, EuroConvConst;
  16. { TConvert }
  17. function TConvert.ConvertCurrency(Source, Dest: string;
  18.   Amount: Double): Double;
  19. var
  20.   BaseType, DestType: TConvType;
  21. begin
  22.   if DescriptionToConvType (cbEuroCurrency, Source, BaseType) and
  23.       DescriptionToConvType (cbEuroCurrency, Dest, DestType) then
  24.     Result := EuroConvert (Amount, BaseType, DestType, 4)
  25.   else
  26.     raise Exception.Create ('Undefined currency types');
  27. end;
  28. function TConvert.FromEuro(Dest: string; Amount: Double): Double;
  29. var
  30.   DestType: TConvType;
  31. begin
  32.   Result := 0;
  33.   if DescriptionToConvType (cbEuroCurrency, Dest, DestType) then
  34.     Result := EuroConvert (Amount, cuEUR, DestType, 4);
  35. end;
  36. function TConvert.ToEuro(Source: string; Amount: Double): Double;
  37. var
  38.   BaseType: TConvType;
  39. begin
  40.   Result := 0;
  41.   if DescriptionToConvType (cbEuroCurrency, Source, BaseType) then
  42.     Result := EuroConvert (Amount, BaseType, cuEUR, 4);
  43. end;
  44. function TConvert.TypesList: string;
  45. var
  46.   i: Integer;
  47.   ATypes: TConvTypeArray;
  48. begin
  49.   Result := '';
  50.   GetConvTypes(cbEuroCurrency, ATypes);
  51.   for i := Low(aTypes) to High(aTypes) do
  52.     Result := Result + ConvTypeToDescription (aTypes[i]) + ';';
  53. end;
  54. initialization
  55.   InvRegistry.RegisterInvokableClass (TConvert);
  56. end.