ايران ويج

نسخه‌ی کامل: شماره خوان
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
دوستان من یه پروژه دارم که باید شماره ای رو که کاربر وارد میکنه رو پخش کنم (با بلندگو)
یعنی این که کاربر یک شماره بین 0 تا 999 وارد میکنه وبعد با زدن یک کلید باید اون شماره از بلنگو پخش بشه
مشکل من این جاست چون من یک سری صداها رو توی ایسی ریختم و بعد با توجه به شماره باید اون ها رو پخش کنم
صدا های که تو ایسی هست
0 .1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.30.
40.50.60.70.80.90.100.200.300.400.500.600.700.800.900

لطفا کمک کنید که چطور برنامه ی این رو بنویسم

به عنوان مثال اگه کاربر شماره 842 رو وارد کرد من باید صدای 800 بعد 40 بعد 2 روپخش کنم
(۰۱-مرداد-۱۳۸۹, ۱۹:۴۰:۲۴)lpln852 نوشته است: [ -> ]0 .1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.30.
40.50.60.70.80.90.100.200.300.400.500.600.700.800.900

باید علاوه براینا یدونه هم حرف و رو وارد آی سی کنی

بعنوان مثال اگه 24 فشار داده شد اول باید بگه 20 بعد حرف و بعد 4 که میشه بیست و چهار ...
چون اگه حرف و نباشه اونموقع میگه بیست چهار!!!
الگوریتم ضمیمه را به زبان دلفی برای برنامه هام نوشتم ( دوستم عرفان نوشت و من یه کم رفع باگ کردم )
روش کارو ببین ،
( شما به جای اسامی عداد میتونید آدرس فایل wave را بعدا توی الگوریتم میکروکنترلر بزارید
نوشتین یه کپی هم به ما بدین داشته باشیم :)
کد php:
unit R2T;
(*******************************************************************************
********************************************************************************

********************************************************************************
***************************************************)

interface
function 
Num2Str(NumLONGINT): String;
function 
FarsiCorrect(InputStr :String) :STring;
function 
ToFarsiText(Number :LONGINT) :String;

implementation

function Num2Str(NumLONGINT): String;
  var
    
TmpStr:String[15];
  
begin
    
if Num >= 1000000000 then
      
if (Num mod 1000000000) = 0 then
        Num2Str 
:= Num2Str(Num div 1000000000) + ' بيليون'
      
else
        
Num2Str := Num2Str(Num div 1000000000) + ' بيليون و ' +
                   
Num2Str(Num mod 1000000000)
    else
      if 
Num >= 1000000 then
        
if (Num mod 1000000) = 0 then
          Num2Str 
:= Num2Str(Num div 1000000) + ' ميليون'
        
else
          
Num2Str := Num2Str(Num div 1000000) + ' ميليون و ' +
                     
Num2Str(Num mod 1000000)
      else
        if 
Num >= 1000 then
          
if (Num mod 1000) = 0 then
            Num2Str 
:= Num2Str(Num div 1000) + ' هزار'
          
else
            
Num2Str := Num2Str(Num div 1000) + ' هزار و ' +
                       
Num2Str(Num mod 1000)
        else
          if 
Num >= 100 then
            
if (Num mod 100) = 0 then
              Num2Str 
:= Num2Str(Num div 100) + 'صد'
            
else
              
Num2Str := Num2Str(Num div 100) + 'صد و ' +
                         
Num2Str(Num mod 100)
          else
          case (
Num div 10of
              9
: if Num 80 then
                   Num2Str 
:= ' نود'
                 
else
                   
Num2Str := 'نود ' Num2Str(Num mod 10);
              
8: if Num 80 then
                   Num2Str 
:= 'هشتاد'
                 
else
                   
Num2Str := 'هشتاد ' Num2Str(Num mod 10);
              
7: if Num 80 then
                   Num2Str 
:= 'هفتاد'
                 
else
                   
Num2Str := 'هفتاد ' Num2Str(Num mod 10);
              
6: if Num 80 then
                   Num2Str 
:= 'شصت'
                 
else
                   
Num2Str := 'شصت ' Num2Str(Num mod 10);
              
5: if Num 50 then
                   Num2Str 
:= 'پنجاه'
                 
else
                   
Num2Str := 'پنجاه ' Num2Str(Num mod 10);
              
4: if Num 40 then
                   Num2Str 
:= 'چهل'
                 
else
                   
Num2Str := 'چهل ' Num2Str(Num mod 10);
              
3: if Num 30 then
                   Num2Str 
:= 'سي'
                 
else
                   
Num2Str := 'سي ' Num2Str(Num mod 10);
              
2: if Num 20 then
                   Num2Str 
:= 'بيست'
                 
else
                   
Num2Str := 'بيست ' Num2Str(Num mod 10);
            
0,1: case Num of
                    1
Num2Str := 'يک';
                    
2Num2Str := 'دو';
                    
3Num2Str := 'سه';
                    
4Num2Str := 'چهار';
                    
5Num2Str := 'پنج';
                    
6Num2Str := 'شش';
                    
7Num2Str := 'هفت';
                    
8Num2Str := 'هشت';
                    
9Num2Str := 'نه';
                   
10Num2Str := 'ده';
                   
11Num2Str := 'يازده';
                   
12Num2Str := 'دوازده';
                   
13Num2Str := 'سيزده';
                   
14Num2Str := 'چهارده';
                   
15Num2Str := 'پانزده';
                   
16Num2Str := 'شانزده';
                   
17Num2Str := 'هفده';
                   
18Num2Str := 'هجده';
                   
19Num2Str := 'نوزده';
                 
end
          end
 end
;

function 
FarsiCorrect(InputStr :String) :STring;
var
  
TempStr:String;
  
Index:Integer;
begin
  TempStr
:=InputStr;

  
Index:=Pos('دوصد',TempStr);
  if 
Index <> 0 then
    begin
      
while Index <> do
        
begin
          Delete
(TempStr,Index,4);
          
Insert('دويست',TempStr,Index);
          
Index:=Pos('دوصد',TempStr);
        
end;
    
end;

  
Index:=Pos('سهصد',TempStr);
  if 
Index <> 0 then
    begin
      
while Index <> do
        
begin
          Delete
(TempStr,Index,4);
          
Insert('سيصد',TempStr,Index);
          
Index:=Pos('سهصد',TempStr);
        
end;
    
end;

  
Index:=Pos('پنجصد',TempStr);
  if 
Index <> 0 then
    begin
      
while Index <> do
        
begin
          Delete
(TempStr,Index,5);
          
Insert('پانصد',TempStr,Index);
          
Index:=Pos('پنجصد',TempStr);
        
end;
    
end;

  
FarsiCorrect:=TempStr ' ريال';
end;

function 
ToFarsiText(Number :LongInt) :String;
begin
  ToFarsiText
:=FarsiCorrect(Num2Str(Number));
end;

end