PDA

View Full Version : نوشتن یک عدد به حروف



alaveh
شنبه 28 آبان 1390, 18:12 عصر
سلام

یک کد توی همین سایت هست ---> این کد رو میگم (http://barnamenevis.org/showthread.php?52234-%D9%86%DA%A9%D8%A7%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%AF%D9%84%D9%81%DB%8C&p=164235&viewfull=1#post164235)

ولی درست کار نمی کنه . فارسی نشون نمیده وقتی ازش استفاده می کنم و همون کدهایی که توی برنامه نوشته شده رو نشون میده . چکارش کنم که درست بشه ؟

BORHAN TEC
شنبه 28 آبان 1390, 18:23 عصر
من هم نمیدونم چرا این مشکل برای پست های قدیمی به وجود اومده و کدها به درستی نشون داده نمی شوند.
به هر حال می توانید از کدی که در آدرس زیر قرار دارد استفاده کنید:
http://www.prdev.com/search/aisearch.asp?id=218

akar_program
شنبه 28 آبان 1390, 19:46 عصر
سلام

یک کد توی همین سایت هست ---> این کد رو میگم (http://barnamenevis.org/showthread.php?52234-%D9%86%DA%A9%D8%A7%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%AF%D9%84%D9%81%DB%8C&p=164235&viewfull=1#post164235)

ولی درسا کار نمی کنه . فارسی نشون نمیده وقتی ازش استفاده می کنم و همون کدهایی که توی برنامه نوشته شده رو نشون میده . چکارش کنم که درست بشه ؟
سلام با اجازهی جناب شاهین عشایری من این نمونه‌ از همون سایتی كه‌ جناب شاهین عشایری معرفی كرد اماده‌ كردم اومیدوارم كارت را بیوفته‌

alaveh
شنبه 28 آبان 1390, 21:13 عصر
ایول خیلی برنامه باحالیه ولی یکم ایراد داشت که برای دوستانی که بعدا ممکنه این تاپیک رو ببینن درستش کردم



const

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

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

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

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

base : array[0..4] of 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
s := s + dahyek[d12]
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;

function num2str(snum : string) : string;
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;

//////////////////// استفاده ///////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(num2str(edit1.text));
end;

alaveh
شنبه 28 آبان 1390, 21:17 عصر
سلام با اجازهی جناب شاهین عشایری من این نمونه‌ از همون سایتی كه‌ جناب شاهین عشایری معرفی كرد اماده‌ كردم اومیدوارم كارت را بیوفته‌



ممنون عزیز . لطف کردی . الآن پستت رو دیدم . خیلی لطف کردی .

سعید صابری
شنبه 28 آبان 1390, 21:22 عصر
ممنون عزیز . لطف کردی . الآن پستت رو دیدم . خیلی لطف کردی .

لطفا برای تشکر کردن از دکمه "تشکر کردن" استفاده کنید

alaveh
شنبه 28 آبان 1390, 21:52 عصر
همونطور که می بینید از اون کلید استفاده شده قبلا

سعید صابری
شنبه 28 آبان 1390, 23:27 عصر
همونطور که می بینید از اون کلید استفاده شده قبلا
منظور من این بود که نیازی به زدن پست اضافی نیست. که فکر کنم جزء مقررات سایت باشه.مثل پست شماره 5

alaveh
شنبه 28 آبان 1390, 23:53 عصر
دوست عزیز

ممنون از تذکر شما ( که صد البته شما که روی اسپم دادن حساسید می تونستید به جای پست زدن توی تاپیک از پیام خصوصی استفاده بفرمایید تا اسپم نشه )

ولی بعد از یه عمر سوال و جواب توی تالارهای تخصصی تفاوت بین اسپم و ادب رو می تونم متوجه بشم و پایان دادن به یک تاپیک با یک تشکر که تاپیکشم خودم ایجاد کردم هم فکر نکنم اسپم باشه .

وقتی کسی زحمت می کشه و چیزی رو که من نیاز دارم میاد برام میبره به دلفی و برام آپ می کنه و ضمیمه می کنه و من اونو نمی بینم و میام خودم برنامه رو دوباره می فرستم رو سایت ، فشردن یک کلید کافی نیست براش و لازم می دونم که دلیل عدم استفاده از فایلشون رو براشون بنویسم .

و نکته نهایی هم اینکه این تاپیک که به نظرم قبلا مفید هم بود داشت توی پست 5 تموم میشد و الان به پست 8 رسیده با کلی اسپم .

به هر صورت من دیگه اینجا پستی نمیدم ولی ای کاش دوستانی که زحمت می کشند و بی منت کمک می کنند به سایرین ، باعث طولانی شدن یک بحث و پر از اسپم شدن یک تاپیک که می تونست خیلی مفید باشه نشن .