...convert an interger in its textual equivalence?
Author: Henning Huncke
function Zahl2Wort(Zahl: Integer): string;
const
  coZehnerWoerter: array [1..9] of string = ('zehn', 'zwan', 'drei', 'vier', 'fünf',
    'sech', 'sieb', 'acht', 'neun');
  coEinerWoerter: array [1..9] of string = ('ein', 'zwei', 'drei', 'vier', 'fünf',
    'sechs', 'sieben', 'acht', 'neun');
  {------------------------------------------------------------------------------}
  function GetGroup(aHunderter, aZehner, aEiner, GroupIndex: Integer): string;
  begin
    Result := '';
    if aHunderter > 0 then 
    begin
      Result := coEinerWoerter[aHunderter] + 'hundert'
    end;
    if aEiner > 0 then 
    begin
      if (aZehner = 1) and (aEiner = 1) then 
      begin
        if aHunderter > 0 then Result := Result + 'undelf'
        else 
          Result := Result + 'elf';
      end 
      else if (aZehner = 1) and (aEiner = 2) then 
      begin
        if aHunderter > 0 then Result := Result + 'undzwölf'
        else 
          Result := Result + 'zwölf';
      end 
      else 
        Result := Result + coEinerWoerter[aEiner];
    end;
    if (aZehner > 0) and not ((aZehner = 1) and
      ((aEiner = 2) or (aEiner = 1))) then 
    begin
      if aZehner > 1 then Result := Result + 'und';
      if aZehner = 3 then Result := Result + coZehnerWoerter[aZehner] + 'ßig'
      else 
        Result := Result + coZehnerWoerter[aZehner];
      if (aZehner > 1) and not (aZehner = 3) then Result := Result + 'zig'
    end;
    case GroupIndex of
      1: 
        begin
          if (aEiner = 1) and (aZehner = 0) then Result := Result + 's';
        end;
      2: Result := Result + 'tausend';
      3: 
        begin
          if (aEiner = 1) and (aZehner = 0) and (aHunderter = 0) then
            Result := Result + 'emillionen'
          else 
            Result := Result + 'millionen';
        end;
      4: 
        begin
          if (aEiner = 1) and (aZehner = 0) and (aHunderter = 0) then
            Result := Result + 'emilliarde'
          else 
            Result := Result + 'milliarden';
        end;
    end;
  end;
  {------------------------------------------------------------------------------}
var
  Einer, Zehner, Hunderter, GroupCount, ZahlLength: Integer;
  Dummy: string;
begin
  Result     := '';
  Dummy      := IntToStr(Zahl);
  ZahlLength := Length(Dummy);
  GroupCount := StrToInt(FloatToStr(RoundUp(ZahlLength / 3, 0)));
  while (Length(Dummy) mod 3) > 0 do
    Dummy := '0' + Dummy;
  while GroupCount > 0 do 
  begin
    // Hunderter
    Hunderter := StrToInt(Copy(Dummy, 1, 1));
    System.Delete(Dummy, 1, 1);
    // Zehner
    Zehner := StrToInt(Copy(Dummy, 1, 1));
    System.Delete(Dummy, 1, 1);
    // Einer
    Einer := StrToInt(Copy(Dummy, 1, 1));
    System.Delete(Dummy, 1, 1);
    Result := Result + GetGroup(Hunderter, Zehner, Einer, GroupCount);
    Dec(GroupCount);
  end;
  Result[1] := Char(Ord(Result[1]) - 32);
end;
printed from
  www.swissdelphicenter.ch
  developers knowledge base