- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Konvertera tal till text Kategori: Blandat
Inlagt: 2005-12-18
Läst: 1455
Inlagt av: Staffan Berg
Beskrivning
Här följer ett utförligt exempel som konvertera olika stora tal till textformat.
Kod
function RealToTxt(Amount : Real) : String; 
var 
Num : LongInt; 
Fracture : Integer; 
 
function Num2Str(Num: LongInt): String; 
Const hundred = 100; 
    thousand = 1000; 
    million = 1000000; 
    billion = 1000000000; 
 begin 
  if Num >= billion then 
   if (Num mod billion) = 0 then 
    Num2Str := Num2Str(Num div billion) + ' Billion' 
   else 
    Num2Str := Num2Str(Num div billion) + ' Billion ' + 
          Num2Str(Num mod billion) 
  else 
   if Num >= million then 
    if (Num mod million) = 0 then 
     Num2Str := Num2Str(Num div million) + ' Million' 
    else 
     Num2Str := Num2Str(Num div million) + ' Million ' + 
           Num2Str(Num mod million) 
   else 
    if Num >= thousand then 
     if (Num mod thousand) = 0 then 
      Num2Str := Num2Str(Num div thousand) + ' Thousand' 
     else 
      Num2Str := Num2Str(Num div thousand) + ' Thousand ' + 
            Num2Str(Num mod thousand) 
    else 
     if Num >= hundred then 
      if (Num mod hundred) = 0 then 
       Num2Str := Num2Str(Num div hundred) + ' Hundred' 
      else 
       Num2Str := Num2Str(Num div hundred) + ' Hundred ' + 
             Num2Str(Num mod hundred) 
     else 
     case (Num div 10) of 
     6,7,9: if (Num mod 10) = 0 then 
          Num2Str := Num2Str(Num div 10) + 'ty' 
         else 
          Num2Str := Num2Str(Num div 10) + 'ty-' + 
               Num2Str(Num mod 10); 
       8: if Num = 80 then 
          Num2Str := 'Eighty' 
         else 
          Num2Str := 'Eighty-' + Num2Str(Num mod 10); 
       5: if Num = 50 then 
          Num2Str := 'Fifty' 
         else 
          Num2Str := 'Fifty-' + Num2Str(Num mod 10); 
       4: if Num = 40 then 
          Num2Str := 'Forty' 
         else 
          Num2Str := 'Forty-' + Num2Str(Num mod 10); 
       3: if Num = 30 then 
          Num2Str := 'Thirty' 
         else 
          Num2Str := 'Thirty-' + Num2Str(Num mod 10); 
       2: if Num = 20 then 
          Num2Str := 'Twenty' 
         else 
          Num2Str := 'Twenty-' + Num2Str(Num mod 10); 
      0,1: case Num of 
          0: Num2Str := 'Zero'; 
          1: Num2Str := 'One'; 
          2: Num2Str := 'Two'; 
          3: Num2Str := 'Three'; 
          4: Num2Str := 'Four'; 
          5: Num2Str := 'Five'; 
          6: Num2Str := 'Six'; 
          7: Num2Str := 'Seven'; 
          8: Num2Str := 'Eight'; 
          9: Num2Str := 'Nine'; 
          10: Num2Str := 'Ten'; 
          11: Num2Str := 'Eleven'; 
          12: Num2Str := 'Twelve'; 
          13: Num2Str := 'Thirteen'; 
          14: Num2Str := 'Fourteen'; 
          15: Num2Str := 'Fifteen'; 
          16: Num2Str := 'Sixteen'; 
          17: Num2Str := 'Seventeen'; 
          18: Num2Str := 'Eightteen'; 
          19: Num2Str := 'Nineteen' 
         end 
     end 
end //Num2Str 
 
begin 
Num:= Trunc(Amount); 
Fracture:= Round(1000*Frac(Amount)); 
if Num > 0 then 
  Result := Num2Str(Num) + ' and '; 
if Fracture > 0 then 
  Result := Result + IntToStr(Fracture) + '/1000' 
else 
  Result := Result + '000/1000'; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
form1.Caption:=realtotxt(123); 
end; 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -