whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1548)

Database (90)
Files (137)
Forms (107)
Graphic (116)
IDE (21)
Indy (5)
Internet / LAN (131)
IntraWeb (0)
Math (76)
Misc (127)
Multimedia (45)
Objects/
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (268)
VCL (243)

Top15

Tips sort by
component


Search Tip

Add new Tip

Add&Win Game

Advertising

16 Visitors Online


 
...convert an interger in its textual equivalence?
Autor: Henning Huncke
Homepage: http://www.cyborg-fx.de
[ Print tip ]  

Tip Rating (9):  
     


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;


 

Rate this tip:

poor
very good


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners