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;
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.