Author: Peter Thörnqvist How to convert roman notation to a numeric value Answer: 1 function RomanToDec(const Value: string): integer; 2 var 3 i, lastValue, curValue: integer; 4 begin 5 Result := 0; 6 lastValue := 0; 7 for i := Length(Value) downto 1 do 8 begin 9 case UpCase(Value[i]) of 10 'C': 11 curValue := 100; 12 'D': 13 curValue := 500; 14 'I': 15 curValue := 1; 16 'L': 17 curValue := 50; 18 'M': 19 curValue := 1000; 20 'V': 21 curValue := 5; 22 'X': 23 curValue := 10; 24 else 25 raise Exception.CreateFmt('Invalid character: %s', [Value[i]]); 26 end; 27 if curValue < lastValue then 28 Dec(Result, curValue) 29 else 30 Inc(Result, curValue); 31 lastValue := curValue; 32 end; 33 end;