2015-03-31 112 views
1

我正試圖將免費Pascal中的一個小程序放入JSON格式的Fixer.io當前匯率中,並使用它們進行簡單的貨幣換算。 我已經得到以下,它將英鎊兌換成波蘭語złoty的匯率並將其打印到屏幕上。將JSON數據的值傳遞給Free Pascal變量

{$mode objfpc}{$H+} 

uses fphttpclient, fpjson, jsonparser; 

Var 
    S : String; 
    J: TJSONData; 
    initialAmount, endAmount, rate: real; 

begin 
    With TFPHttpClient.Create(Nil) do 
    try 
     S:=Get('http://api.fixer.io/latest?base=GBP'); 
    finally 
     Free; 
    end; 
    J:= GetJSON(S); 
    writeln ('Current exchange rate of GBP to Polish złoty: ',J.FindPath('rates.PLN').AsFloat:2:2); 
end. 

我正在努力做的是將該匯率的價值傳遞給我可用於貨幣轉換的變量。

沿着這個東西線:

rate := J.FindPath('rates.PLN').AsFloat:2:2; 
writeln; 
write ('Enter initial amount in GBP £'); 
readln (initialAmount); 
endAmount := initialAmount * rate; 
writeln (endAmount);  

有什麼建議?

回答

1

您提出的代碼看起來很好,除了兩個問題。

  1. 我期待編譯器報告第一個問題:刪除:2:2。 IIRC,該標記保留用於WriteLn聲明。

  2. 如果您閱讀代碼,第二個問題應該是顯而易見的:在最後一行,您打印速率而不是最終數量。

+0

嗯,我修改了程序的最後一行來顯示結束金額而不是速率。 ':2:2'將數字顯示爲2位小數,因爲它在'WriteLn'語句中。程序的這部分編譯和運行沒有任何問題。 問題是代碼的第二部分,速率:= J.FindPath('rates.PLN')。AsFloat:2:2;'不是一種將變量傳遞給變量'rate'的有效方法。 – 2015-04-01 10:14:15

+1

我只是很密集...你指的是'rate:= J.FindPath('rates.PLN')這行':2:2'。AsFloat:2:2;'take that出來解決問題謝謝你。 – 2015-04-02 08:43:20