unit ConvertTextWorte;

interface

uses
  Windows, SysUtils, Classes;

function ConvIntToTextWord(Anzahl : Integer) : String;


implementation


function ConvIntToTextWord(Anzahl : Integer): String;
var
  inWorten, Einer, Endung : String;
  Zehner, intEiner       : Integer;
const
  MaxZWort : Integer = 13;
  und      : String = 'und';
  s        : String = 's';
  en       : String = 'en';
  e        : String = 'e';
  ZWort    : Array[1..13] of String =    ('null','ein','zwei','drei','vier','fünf','sech','sieb','acht','neun','zehn','elf','zwölf');
  Dekade   : Array[1..9]  of String =    ('zehn','zwanzig','dreißig','vierzig','fünfzig','sechzig','siebzig','achtzig','neunzig');
begin
  //für größer 99
  inWorten := InttoStr(Anzahl);
  // Im Bereich Null-zwölf
  If Anzahl < MaxZWort then
  begin
    inWorten := ZWort[Anzahl+1];
    case Anzahl of
      1: Insert(e,inWorten,length(inWorten)+1);//e ersetzen durch s, wenn "eins" angezeigt werden soll
      6: Insert(s,inWorten,length(inWorten)+1);
      7: Insert(en,inWorten,length(inWorten)+1);
    end;
  end else
  // Im Bereich dreizehn-neunundneunzig
  begin
    If length(inWorten) = 2 then
    begin
      Zehner := StrtoInt(Copy(inWorten,1,1));
      Einer := Copy(inWorten,2,1);
      //erste/nächste Dekade erreicht?
      If Einer = '0' then
        inWorten := Dekade[Zehner]
      else
      begin
        intEiner := StrtoInt(Einer);
        Einer := ZWort[intEiner+1];
        Endung := Dekade[Zehner];
        If Zehner > 1 then
        begin
          Case intEiner of
            6: inWorten := Einer + s + und + Endung;
            7: inWorten := Einer + en + und + Endung;
          else
            inWorten := Einer + und + Endung;
          end;
        end else
        inWorten := Einer + Endung;
      end;
    end;
  end;
  Result := inWorten;
end;

end.