ReNamer:Scripts:Roman numerals serialization

From den4b Wiki
Revision as of 15:03, 8 February 2017 by Den4b (talk | contribs) (Text replacement - "<source>" to "<syntaxhighlight lang="pascal">")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The script does a serialization with roman numerals. The roman number is added at the end of the file name.

For example, "Book.doc" will turn into new "Book I.doc" and so on.

Tested

  • ReNamer 5.74.4 Beta

Code

Author: SafetyCar. Date: 09 January 2009.

var
  Count: Integer;

function ArabicToRoman(Number:Integer): WideString;
var
  Fulls, Halves: TWideStringArray;
  AllFulls, AllHalves, Arabic, Roman: WideString;
  I, U: Integer;
  
begin
  Roman  := '';
  Arabic := IntToStr(Number);
  
  AllFulls  := 'I|X|C|M|(X)|(C)|(M)';
  AllHalves := 'V|L|D|(V)|(L)|(D)';
    
  Fulls  := WideSplitString(AllFulls, '|');
  Halves := WideSplitString(AllHalves, '|');
  
  for I:=0 to Length(Arabic)-1 do
  begin
    U := StrToInt(Arabic[Length(Arabic)-I]);
    If U = 0 then Roman := Roman;
    If U = 1 then Roman := Fulls[i] + Roman;
    If U = 2 then Roman := Fulls[i] + Fulls[i] + Roman;
    If U = 3 then Roman := Fulls[i] + Fulls[i] + Fulls[i] + Roman;
    If U = 4 then Roman := Fulls[i] + Halves[i] + Roman;
    If U = 5 then Roman := Halves[i] + Roman;
    If U = 6 then Roman := Halves[i] + Fulls[i] + Roman;
    If U = 7 then Roman := Halves[i] + Fulls[i] + Fulls[i] + Roman;
    If U = 8 then Roman := Halves[i] + Fulls[i] + Fulls[i] + Fulls[i] + Roman;
    If U = 9 then Roman := Fulls[i] + Fulls[I+1] + Roman;
  end;
  
  Result := Roman;
end;

begin
  Count := Count + 1;
  FileName := WideExtractBaseName(FileName) + ' ' + ArabicToRoman(Count) + WideExtractFileExt(FileName);
end.