Показать сообщение отдельно
  #2  
Старый 10.11.2006, 00:12
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Обязательно компонент?

Для начала вот (арабское в римское)
Код:
// Способ первый
function IntToRoman( num: Cardinal ): string;
const
  N = 13;
  vals: array [1..N] of word =
        ( 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 );
  roms: array [1..N] of string[2] =
        ( 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M' );
var 
  b: 1..N;
begin
   Result := '';
   b := N;
   while num > 0 do
   begin
      while vals[b] > num do
         Dec( b );
      Dec( num, vals[b] );
      Result := Result + roms[b];
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage( IntToRoman( 1561 ) );
end;

// Способ второй
function IntToRoman( num: Cardinal ): string;
const
  N = 13;
  vals: array [1..N] of word =
        ( 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 );
  roms: array [1..N] of string[2] =
        ( 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M' );
var 
  b: 1..N;
begin
   Result := '';
   b := N;
   while ( num > 0 ) and ( b >= 1 ) do
   begin
      if num >= vals[b] then
      begin
         Result := Result + roms[b];
         Dec( num, vals[b] );
      end
      else
         Dec( b );
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage( IntToRoman( 1561 ) );
end;

Обратное действие посложнее будет, там надо будет парсер писать... Попробуй самостоятельно (по аналогии)...

По поводу компонента... В инете про это много написано, не вижу смысла повторять все это тут... Ну а если не справишься, пиши, постораюсь помочь (чем смогу)...
Ответить с цитированием