PDA

View Full Version : سوال: تبدیل تاریخ عددی به حروف



alireza.movahedian
چهارشنبه 17 مهر 1392, 20:31 عصر
دوستان عزیز سلام . من مشکلی داشتم اگر کسی بتونه به من کمک کنه ممنون میشم
چه طور می تونم تاریخ عددی شمسی رو به حروف تبدیل کنم
در واقع با فرمت 1392/07/17 وارد بشه و خروجی هفدهم مهرماه نود و دو باشد
ممنون میشم راهنمایی کنید

یوسف زالی
چهارشنبه 17 مهر 1392, 23:08 عصر
سلام.
جستجو کن..

hadisalahi2
پنج شنبه 18 مهر 1392, 11:56 صبح
یک یونیت به نام Num2Str هستش که مخصوص همین کاره
یک سرچ کوچولو بزنی ، پیداش میکنی

benyaminrahimi
پنج شنبه 18 مهر 1392, 13:15 عصر
const

borj: array[1..12] of string = ('فروردين', 'ارديبهشت', 'خرداد'
, 'تير', 'مرداد ', 'شهريور', 'مهر', 'آبان', 'آذر', 'دي', 'بهمن', 'اسفند');

yekan: array[0..9] of string = ('صفر', 'يک', 'دو', 'سه', 'چهار', 'پنج', 'شش',
'هفت', 'هشت', 'نه');

dahgan: array[0..9] of string = ('', '', 'بيست', 'سي', 'چهل', 'پنجاه', 'شصت',
'هفتاد', 'هشتاد', 'نود');

dahyek: array[10..19] of string = ('ده', 'يازده', 'دوازده', 'سيزده', 'چهارده',
'پانزده', 'شانزده', 'هفده', 'هجده', 'نوزده');

sadgan: array[0..9] of string = ('', 'يکصد', 'دويست', 'سيصد', 'چهارصد',
'پانصد', 'ششصد', 'هفتصد', 'هشتصد', 'نهصد');


function num2str(snum: string): string;

// تابع تبديل عدد سه رقمي به حروف

function getnum3(num3: integer): string;

var

s: string;

d1, d2, d3, d12: integer;

begin

d12 := num3 mod 100; // دو رقم اول

d3 := num3 div 100; // صدگان

if d3 <> 0 then

s := sadgan[d3] + ' و ';

// نام گذاري اعداد 10 تا 19 در بين

// اعداد دو رقمي استثنا است

if (d12 >= 10) and (d12 <= 19) then

begin

s := s + dahyek[d12];

end

else

begin

d2 := d12 div 10; // دهگان

if d2 <> 0 then

s := s + dahgan[d2] + ' و ';

d1 := d12 mod 10; // يکان

if d1 <> 0 then

s := s + yekan[d1] + ' و ';

// حذف حرف <و> اضافي

s := copy(s, 1, length(s) - 3);

end;

getnum3 := s;

end;

var

L, i, b: integer;

stotal: string;

begin

// اگر عدد صفر بود، يکراست نتيجه را برگردان

if snum = '0' then

result := yekan[0]

else

begin

// براي اينکه بتوان عدد را به قسمت هاي سه رقمي تقسيم کرد

// به سمت چپ عدد، به اندازه کافي صفر مي افزاييم

for i := Length(snum) to ((Length(snum) - 1) div 3 + 1) * 3 - 1 do

snum := '0' + snum;

L := Length(snum) div 3 - 1; // تعداد قسمت هاي سه رقمي منهاي يک

// سه رقم سه رقم حلقه را تکرار کن

// از چپ به راست

for i := 0 to L do

begin

// به دست آوردن سه رقم مورد نظر

b := strtoint(copy(snum, i * 3 + 1, 3));

// اگر سه رقم به دست آمده صفر باشد، در نام عدد تاثيري ندارد

// نام قسمت سه رقمي را بدست مي آوريمgetnum3 با استفاده از تابع

// پسوند را به آن اضافه مي کنيمbase با استفاده از آرايه

if b <> 0 then

stotal := stotal + getnum3(b) + ' ' + base[L - i] + ' و ';

end;

// حذف حرف <و> اضافي

stotal := copy(stotal, 1, length(stotal) - 3);

result := stotal;

end;

end;


فانکشن تیبدیل نهایی

function tarikhstr(tarikh: string): string;
var
sal, mah, rooz: string;
begin
if tarikh = '' then
result := ''
else
begin
sal := copy(tarikh, 1, 4);
mah := copy(tarikh, 6, 2);
rooz := copy(tarikh, 9, 2);
sal := num2str(sal);
mah := borj[strtoint(mah)];
rooz := num2str(rooz);
result := rooz + ' - ' + mah + ' - ' + sal;
end;
end;