2012-06-14 30 views

回答

1

我不能接受很多信用;我簡單地移植的代碼this VB Helper article成水晶,但它是一個有趣的練習:

NumberVar iCounter := 0; 
Local StringVar ch := ""; 
Local NumberVar result := 0; 
Local NumberVar new_value := 0; 
Local NumberVar old_value := 0; 
Local StringVar temp := ""; 

temp := UpperCase({[email protected]}); 

old_value = 1000; 

For iCounter := 1 To Len(temp) do 
(
    // See what the next character is worth. 
    ch := Mid(temp, iCounter, 1); 

    if ch = "I" then new_value := 1 
    else if ch = "V" then new_value := 5 
    else if ch = "X" then new_value := 10 
    else if ch = "L" then new_value := 50 
    else if ch = "C" then new_value := 100 
    else if ch = "D" then new_value := 500 
    else if ch = "M" then new_value := 1000; 

    // See if this character is bigger 
    // than the previous one. 
    If new_value > old_value Then 
     // The new value > the previous one. 
     // Add this value to the result 
     // and subtract the previous one twice. 
     result := result + new_value - 2 * old_value 
    Else 
     // The new value <= the previous one. 
     // Add it to the result. 
     result := result + new_value; 

    old_value := new_value; 
); 

// Format the number without commas or decimals 
ToText(result, 0, ""); 

只需用您的變量替換我{[email protected]}參數佔位符,你所有的設置。

1

只需使用Crystal Report提供的Roman()函數