2013-02-25 54 views
4

任何人都可以幫助我找到一個單元,它定義了Delphi XE3中的MulDiv函數用於跨平臺使用嗎?其原型是在Windows單元中定義的(通常情況下),OSX下顯然不起作用。是否有跨平臺使用的MulDiv功能?

在Delphi XE3中是否有一個MulDiv函數用於跨平臺使用?

回答

8

跨平臺使用功能沒有MulDiv功能,只有從Windows導入的功能。所以,如果你需要的話,你需要自己爲不同的平臺創建這樣的功能。例如拉撒路使用此類似代碼:

function MathRound(AValue: Extended): Int64; inline; 
begin 
    if AValue >= 0 then 
    Result := Trunc(AValue + 0.5) 
    else 
    Result := Trunc(AValue - 0.5); 
end; 

function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; 
begin 
    if nDenominator = 0 then 
    Result := -1 
    else 
    Result := MathRound(Int64(nNumber) * Int64(nNumerator)/nDenominator); 
end; 

來源lcltype.pp單元和問題#0009934

相關問題