嗨,我想将某种货币转换为另一种货币,例如从USD转换为EUR,但也转换为其他任何货币,我不知道该怎么做,有人可以帮我吗?
答案 0 :(得分:2)
您可以轻松地使用以下方法作为指导:
function EuroToDollar(amount: integer): double;
begin
Result := amount * 1.17;
end;
我从1.17
处获得了Google的收入,但是您可以在任何地方轻松找到转化率。
这种方法不错,但不灵活,因为如果考虑到很多货币,您应该创建很多功能。我已经创建了这个简单的VCL应用程序:
type
TCurrency = (cEuro, cDollar, cWhatever);
TConversion = reference to function(target: TCurrency; amount: double): double;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
CurrencyList: TDictionary<TCurrency, TConversion>;
public
function Convert(fromCurr: TCurrency; toCurr: TCurrency; amount: double): double;
end;
我使用字典来存储您必须使用的货币和兑换方法。
//example
procedure TForm1.Button1Click(Sender: TObject);
var
euro, dollar: double;
begin
//euro-dollar
euro := Convert(cEuro, cDollar, 2);
ShowMessage(euro.ToString);
//dollar-euro
dollar := Convert(cDollar, cEuro, 5);
ShowMessage(dollar.ToString);
end;
function TForm1.Convert(fromCurr, toCurr: TCurrency; amount: double): double;
begin
Result := CurrencyList[fromCurr](toCurr, amount);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CurrencyList := TDictionary<TCurrency, TConversion>.Create();
CurrencyList.Add(TCurrency.cEuro, function(target: TCurrency; amount: double): double
begin
case target of
cDollar:
begin
Result := amount * 1.17;
end;
end;
end);
CurrencyList.Add(TCurrency.cDollar, function(target: TCurrency; amount: double): double
begin
case target of
cEuro:
begin
Result := amount * 0.86;
end;
end;
end);
end;
通过这种方式,您可以一次定义一种货币,然后只需在case
中添加新值即可添加转化。这是我认为您可以做的事情的骨架,但是可能还有更多的事情(例如从网站获取转换常数),但这超出了答案的范围。