PDA

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



ali_najari
چهارشنبه 19 آبان 1389, 15:18 عصر
سلام دوستان من قبلا يه كد از سايت گرفته بودم براي تبديل عدد به حروف ولي خوب وقتي ميخواستم ازش استفاده كنم ديدم كه كد مشكل داره و فارسي اعداد رو اشتباه بر ميگردونه واسه همين اقدام به نوشتن اين كدها كردم (ميخواستم توي وقت صرفه جويي كنم ولي تابع اي كه گرفته بودم اشتباه بود و مجبور شدم خودم بنويسم) اين تابع رو براي دوستان ميزارم كه اگر كسي نياز داشت ازش استفاده كنه

راستي اينم بگم كه دارم روي تبديل حروف فارسي به اعداد كار ميكنم و احتمال خيلي زياد تا جمعه آماده ميشه!



Private Function GetNumberString(ByVal Number As Integer) As String
Select Case Number
Case 1
GetNumberString = "يك"
Case 2
GetNumberString = "دو"
Case 3
GetNumberString = "سه"
Case 4
GetNumberString = "چهار"
Case 5
GetNumberString = "پنج"
Case 6
GetNumberString = "شش"
Case 7
GetNumberString = "هفت"
Case 8
GetNumberString = "هشت"
Case 9
GetNumberString = "نه"
Case 10
GetNumberString = "ده"
Case 11
GetNumberString = "يازده"
Case 12
GetNumberString = "دوازده"
Case 13
GetNumberString = "سيزده"
Case 14
GetNumberString = "چهارده"
Case 15
GetNumberString = "پانزده"
Case 16
GetNumberString = "شانزده"
Case 17
GetNumberString = "هفده"
Case 18
GetNumberString = "هجده"
Case 19
GetNumberString = "نوزده"
Case 20 To 29
GetNumberString = "بيست"
Case 30 To 39
GetNumberString = "سي"
Case 40 To 49
GetNumberString = "چهل"
Case 50 To 59
GetNumberString = "پنجاه"
Case 60 To 69
GetNumberString = "شصد"
Case 70 To 79
GetNumberString = "هفتاد"
Case 80 To 89
GetNumberString = "هشتاد"
Case 90 To 99
GetNumberString = "نود"
Case 100 To 199
GetNumberString = "يكصد"
Case 200 To 299
GetNumberString = "دويست"
Case 300 To 399
GetNumberString = "سيصد"
Case 400 To 499
GetNumberString = "چهارصد"
Case 500 To 599
GetNumberString = "پانصد"
Case 600 To 699
GetNumberString = "ششصد"
Case 700 To 799
GetNumberString = "هفتصد"
Case 800 To 800
GetNumberString = "هشتصد"
Case 900 To 999
GetNumberString = "نهصد"
Case Else
GetNumberString = ""
End Select
Return GetNumberString
End Function
Private Function GetString(ByVal Number As Integer) As String
Select Case Number
Case 1
GetString = "هزار"
Case 2
GetString = "ميليون"
Case 3
GetString = "ميليارد"
Case 4
GetString = "ترليون"
Case 5
GetString = "تلیارد"
Case Else
GetString = ""
End Select
Return GetString
End Function
Public Function NumToFarsi(ByVal Number As String) As String
NumToFarsi = ""
Dim strAux As String
Dim strComma As String
Dim strPeriod As String
strPeriod = ""
Number = Number.Replace(",", "")
If InStr(Number, ".") > 0 Then
strAux = Mid(Number, 1, InStr(Number, ".") - 1)
strPeriod = Mid(Number, InStr(Number, "."))
Else
strAux = Number
End If
strComma = strAux
strAux = ""
While strComma.Length > 3
strAux = "," & Mid(strComma, strComma.Length - 2, 3) & strAux
strComma = Mid(strComma, 1, strComma.Length - 3)
End While
strAux = strComma & strAux & strPeriod
If Mid(strAux, 1, 1) = "," Then strAux = Mid(strAux, 2)
Dim SplitNumber = Split(strAux, ",")
For i As Integer = 0 To UBound(SplitNumber)
If CInt(SplitNumber(i)) > 19 Then
For j As Integer = 1 To Len((SplitNumber(i)))
If CInt(SplitNumber(i)) > 0 Then
Dim Num As Integer = CInt(Mid(CInt(SplitNumber(i)), j))
If Num > 0 And Num <= 19 Then
NumToFarsi &= " و " & GetNumberString(Num)
Exit For
ElseIf Num > 19 Then
NumToFarsi &= " و " & GetNumberString(Num)
End If
End If
Next j%
ElseIf CInt(SplitNumber(i)) <= 19 And CInt(SplitNumber(i)) > 0 Then
NumToFarsi &= " و " & GetNumberString(SplitNumber(i))
End If
If CInt(SplitNumber(i)) > 0 Then
NumToFarsi &= " " & GetString(UBound(SplitNumber) - i)
End If
Next
If Mid(Trim(NumToFarsi), NumToFarsi.Length - 1) = "و" Then
End If
If Mid(Trim(NumToFarsi), NumToFarsi.Length - 1) = "و" Then
NumToFarsi = Mid(Trim(NumToFarsi), NumToFarsi.Length - 1)
ElseIf Mid(Trim(NumToFarsi), 1, 1) = "و" Then
NumToFarsi = Mid(Trim(NumToFarsi), 2)
End If
Return NumToFarsi
End Function


طريقه استفاده از كدها



MsgBox(NumToFarsi(TextBox1.Text))



Module همين كد رو هم براتون Attach ميكنم

mbarnamehnevis
چهارشنبه 19 آبان 1389, 16:03 عصر
تبديل تا 32 كاراكتر هم سراغ داريد؟

ali_najari
چهارشنبه 19 آبان 1389, 17:04 عصر
تبديل تا 32 كاراكتر هم سراغ داريد؟

سلام دوست عزيز

شرمنده واقعا ولي من تا تليارد (18 كاركتر) بيشتر بلد نبودم و نميدونستم به بعد از تليارد چي ميگن اگر شما بلديد بگيد تا من واستون كدش رو آماده كنم (البته شما ميتونيد كدهاي بالا رو كمي تغيير بديد و استفاده كنيد)

من تا اينجا بلدم بشمارم:

0- يكان و دهگان و صدگان (منظور 3 رقم اول هست)
1- هزار
2- ميليون
3- ميليارد
4-ترليون
5- ترليارد

ali_najari
چهارشنبه 19 آبان 1389, 22:17 عصر
دوستان کدی که گفتم تا جمعه آماده میکنم ورژن اولش رو همین امروز آماده کردم ولی خوب بازم زمان نیازه که کاملش کنم ولی همین ورژن اولش نسبتا جواب میده

موفق باشید! :گیج: :کف: :خجالت: (Ti-amo :قلب:)

http://barnamenevis.org/forum/attachment.php?attachmentid=60031&stc=1&d=1289416588



Module ConvertPersianToNumber

Public Function GetNumberOfString(ByVal Number As String) As Integer

Number = Replace(Number, "ي", "ي")

If Trim(Number) <> "" Then
Select Case Trim(Number)

Case "صفر"
GetNumberOfString = 0
Case "يک"
GetNumberOfString = 1
Case "دو"
GetNumberOfString = 2
Case "سه"
GetNumberOfString = 3
Case "چهار"
GetNumberOfString = 4
Case "پنج"
GetNumberOfString = 5
Case "شش"
GetNumberOfString = 6
Case "هفت"
GetNumberOfString = 7
Case "هشت"
GetNumberOfString = 8
Case "نه"
GetNumberOfString = 9
Case "ده"
GetNumberOfString = 10
Case "يازده"
GetNumberOfString = 11
Case "دوازده"
GetNumberOfString = 12
Case "سيزده"
GetNumberOfString = 13
Case "چهارده"
GetNumberOfString = 14
Case "پانزده"
GetNumberOfString = 15
Case "شانزده"
GetNumberOfString = 16
Case "هفده"
GetNumberOfString = 17
Case "هجده"
GetNumberOfString = 18
Case "نوزده"
GetNumberOfString = 19
Case "بيست"
GetNumberOfString = 20
Case "سي"
GetNumberOfString = 30
Case "چهل"
GetNumberOfString = 40
Case "پنجاه"
GetNumberOfString = 50
Case "شصت"
GetNumberOfString = 60
Case "هفتاد"
GetNumberOfString = 70
Case "هشتاد"
GetNumberOfString = 80
Case "نود"
GetNumberOfString = 90
Case "يکصد"
GetNumberOfString = 100
Case "دويست"
GetNumberOfString = 200
Case "سيصد"
GetNumberOfString = 300
Case "چهارصد"
GetNumberOfString = 400
Case "پانصد"
GetNumberOfString = 500
Case "ششصد"
GetNumberOfString = 600
Case "هفتصد"
GetNumberOfString = 700
Case "هشتصد"
GetNumberOfString = 800
Case "نهصد"
GetNumberOfString = 900
End Select
End If
Return GetNumberOfString
End Function

Public Function TextToNumber(ByVal [String] As String) As String

TextToNumber = 0

[String] = Replace([String], "ريال", "")
[String] = Replace([String], "تومان", "")
[String] = Replace([String], "ي", "ي")

Dim SplitString = Split(Trim([String]), " و ")
Dim Num As String = 0

For i As Integer = 0 To UBound(SplitString)

Dim Split1 = Split(Trim(SplitString(i)), " ")

For j As Integer = 0 To UBound(Split1)

Select Case Trim(Split1(j))

Case "هزار"
TextToNumber = Val(TextToNumber) + (Val(Num) * 1000)
Num = 0
Case "ميليون"
TextToNumber = Val(TextToNumber) + (Val(Num) * 1000000)
Num = 0
Case "ميليارد"
TextToNumber = Val(TextToNumber) + (Val(Num) * 1000000000)
Num = 0
Case "ترليون"
TextToNumber = Val(TextToNumber) + (Val(Num) * 1000000000000)
Num = 0
Case "ترليارد"
TextToNumber = Val(TextToNumber) + (Val(Num) * 1000000000000000)
Num = 0
Case Else

If i = UBound(SplitString) And j = UBound(Split1) Then
Num = Val(Num) + Val(GetNumberOfString(Split1(j)))
TextToNumber = Val(TextToNumber) + Val(Num)
Num = 0
Else
Num = Val(Num) + Val(GetNumberOfString(Split1(j)))
End If

End Select

Next
Next

Return TextToNumber
End Function

End Module

Mani_rf
پنج شنبه 20 آبان 1389, 08:43 صبح
سلام دوست عزيز

شرمنده واقعا ولي من تا تليارد (18 كاركتر) بيشتر بلد نبودم و نميدونستم به بعد از تليارد چي ميگن اگر شما بلديد بگيد تا من واستون كدش رو آماده كنم (البته شما ميتونيد كدهاي بالا رو كمي تغيير بديد و استفاده كنيد)

من تا اينجا بلدم بشمارم:

0- يكان و دهگان و صدگان (منظور 3 رقم اول هست)
1- هزار
2- ميليون
3- ميليارد
4-ترليون
5- ترليارد


ترتیب این اعداد به این گونه است:

میلیون
میلیارد
بیلیون
تریلیون
کوادریلیون
کوینتیلیون
سیکستیلیون
سپتیلیون
اکتیلیون
نونیلیون
دسیلیون و... .

:قهقهه:

بقیشم بگم؟

( این الگوحدود سال 1484میلادی به وسیله نیکولاس چاکوئت (1488-1445Nicolas Chuquet) که اولین فرد فرانسوی نویسنده مقاله ی جبری بود، ابداع شد. چاکوئت برای نام گذاری آن سری از اعداد بزرگ که توان هایی از 10هستند از000/1000 شروع کرد و آن را میلیون نامید. سپس توان های متوالی میلیون را به صورت 10 یا همان 1000000 مرتب نمود و به گونه ای که در ستون سمت راست جدول زیرمشاهده می کنید نام گذاری کرد.هرچند که با گذرایام موضوع به همین سادگی باقی نماند. درقرن هفدهم، تعدادی از ریاضیدانان با نفوذ فرانسوی تصمیم گرفتند ازهمان نام ها برای نشان دادن توان های متوالی1000 یعنی 10یاهمان 1000 به گونه ای که در ستون وسط جدول زیر مشاهده می شود استفاده کنند.)

منبع : http://www.997.blogfa.com/post-19.aspx

ali_najari
پنج شنبه 20 آبان 1389, 10:09 صبح
ترتیب این اعداد به این گونه است:



میلیون
میلیارد
بیلیون
تریلیون
کوادریلیون
کوینتیلیون
سیکستیلیون
سپتیلیون
اکتیلیون
نونیلیون
دسیلیون و... .


:قهقهه:


بقیشم بگم؟


( این الگوحدود سال 1484میلادی به وسیله نیکولاس چاکوئت (1488-1445Nicolas Chuquet) که اولین فرد فرانسوی نویسنده مقاله ی جبری بود، ابداع شد. چاکوئت برای نام گذاری آن سری از اعداد بزرگ که توان هایی از 10هستند از000/1000 شروع کرد و آن را میلیون نامید. سپس توان های متوالی میلیون را به صورت 10 یا همان 1000000 مرتب نمود و به گونه ای که در ستون سمت راست جدول زیرمشاهده می کنید نام گذاری کرد.هرچند که با گذرایام موضوع به همین سادگی باقی نماند. درقرن هفدهم، تعدادی از ریاضیدانان با نفوذ فرانسوی تصمیم گرفتند ازهمان نام ها برای نشان دادن توان های متوالی1000 یعنی 10یاهمان 1000 به گونه ای که در ستون وسط جدول زیر مشاهده می شود استفاده کنند.)


منبع : http://www.997.blogfa.com/post-19.aspx



سلام ماني جان

از زحماتت ممنونم ولي خوب اين چيزي كه شما گذاشتيد توي رياضيات هست و توي عاميانه چنين چيز هايي رو نميگن و ما ميخوايم برنامه واسه بيان مبلغ باشه پس نميتونيم بصورت رياضي نشون بديم اون متني كه من نوشتم چيزيست كه توي زبان عاميانه 80% افراد بيان ميكنن

mansourii
جمعه 21 آبان 1389, 21:14 عصر
ترتیب این اعداد به این گونه است:



میلیون
میلیارد
بیلیون
تریلیون
کوادریلیون
کوینتیلیون
سیکستیلیون
سپتیلیون
اکتیلیون
نونیلیون
دسیلیون و... .


:قهقهه:


بقیشم بگم؟


( این الگوحدود سال 1484میلادی به وسیله نیکولاس چاکوئت (1488-1445Nicolas Chuquet) که اولین فرد فرانسوی نویسنده مقاله ی جبری بود، ابداع شد. چاکوئت برای نام گذاری آن سری از اعداد بزرگ که توان هایی از 10هستند از000/1000 شروع کرد و آن را میلیون نامید. سپس توان های متوالی میلیون را به صورت 10 یا همان 1000000 مرتب نمود و به گونه ای که در ستون سمت راست جدول زیرمشاهده می کنید نام گذاری کرد.هرچند که با گذرایام موضوع به همین سادگی باقی نماند. درقرن هفدهم، تعدادی از ریاضیدانان با نفوذ فرانسوی تصمیم گرفتند ازهمان نام ها برای نشان دادن توان های متوالی1000 یعنی 10یاهمان 1000 به گونه ای که در ستون وسط جدول زیر مشاهده می شود استفاده کنند.)


منبع : http://www.997.blogfa.com/post-19.aspx



به نظر من اين موضوع اعداد اصلا خندار نيست!
اين بنده خدا داره يكي كه گرفتار شده رو راهنمايي ميكنه و اين جايز نيست كه بخاطر مسائل بيهوده از كسي غلط املايي بگيره!

از اين كار شما واقا متاثر شدم! و برام مبهم %^
تو اين بخش اكثرا ليسانس به بالا هستند و اين كار شما زير ديپلم بود.

Mani_rf
شنبه 22 آبان 1389, 08:24 صبح
به نظر من اين موضوع اعداد اصلا خندار نيست!

چی خنده دار نیست؟



اين بنده خدا داره يكي كه گرفتار شده رو راهنمايي ميكنه
کی گرفتار شده و این بنده خدا داره راهنماییش میکنه؟


و اين جايز نيست كه بخاطر مسائل بيهوده از كسي غلط املايي بگيره!
کجا غلط املایی گرفتم؟


از اين كار شما واقا متاثر شدم! و برام مبهم %^
تو اين بخش اكثرا ليسانس به بالا هستند و اين كار شما زير ديپلم بود.

کدوم کار؟ این که تحقیق کردم و واحد های بزرگتر را هم برای این دوستمون پیدا کردم و در اختیارش گذاشتم!!!؟؟؟

ببین دوست عزیز این دوستمون یک برنامه گذاشت و یکی از کاربران از او پرسید که :

تبديل تا 32 كاراكتر هم سراغ داريد؟
پاسخ ایجاد کننده بحث هم این بود که :

شرمنده واقعا ولي من تا تليارد (18 كاركتر) بيشتر بلد نبودم و نميدونستم به بعد از تليارد چي ميگن اگر شما بلديد بگيد تا من واستون كدش رو آماده كنم


من هم ترتیب واحد های بزرگ را برای ایشون نوشتم تا در صورت نیاز بتونن تو برنامشون استفاده کنند. حال ایراد این کار کجا بود؟
اموآیکن خنده هم برای این بود که با توجه به اینکه تقریبا همه ما فکر میکنیم که ترلیارد آخرین واحد مورد استفاده است اما واحد های بزرگتری هم وجود دارد.

درضمن : اگر میخواستم از ایشون به قول شما غلط املایی بگیرم می توانستم بهشون بگم که روشی که دارید استفاده میکنید کاملا غلاطه، ایشون می توانستدن با 20 خط کد و با استفاده از یک فرمول لوگاریتم ساده همین تابع را بنویسند که به مراتب سریع تر و قابل گسترش تر هست.

mansourii
شنبه 22 آبان 1389, 12:41 عصر
چی خنده دار نیست؟



کی گرفتار شده و این بنده خدا داره راهنماییش میکنه؟


کجا غلط املایی گرفتم؟


کدوم کار؟ این که تحقیق کردم و واحد های بزرگتر را هم برای این دوستمون پیدا کردم و در اختیارش گذاشتم!!!؟؟؟

ببین دوست عزیز این دوستمون یک برنامه گذاشت و یکی از کاربران از او پرسید که :

پاسخ ایجاد کننده بحث هم این بود که :


من هم ترتیب واحد های بزرگ را برای ایشون نوشتم تا در صورت نیاز بتونن تو برنامشون استفاده کنند. حال ایراد این کار کجا بود؟
اموآیکن خنده هم برای این بود که با توجه به اینکه تقریبا همه ما فکر میکنیم که ترلیارد آخرین واحد مورد استفاده است اما واحد های بزرگتری هم وجود دارد.

درضمن : اگر میخواستم از ایشون به قول شما غلط املایی بگیرم می توانستم بهشون بگم که روشی که دارید استفاده میکنید کاملا غلاطه، ایشون می توانستدن با 20 خط کد و با استفاده از یک فرمول لوگاریتم ساده همین تابع را بنویسند که به مراتب سریع تر و قابل گسترش تر هست.


! گل پسر (شايدم گل دختر)
اولا اينكه مديري احترامت بر ما واجب .
دوما شما اگه خيلي وارد بوديد خودتون جواب اون بنده خدا رو مي داديد و اعداد رياضي رو شمارش نميكردي
سوما اگه مي بيني امثال اين آقا و امثال اين آقا ميان جواب اعضا رو ميدن بنابر اين نيست كه بي كارن و الكي تو سايت چرخ مي زنن! به اين علته كه مي خوان اگه كسي مشكلي داره كمكشون كنن.
من فقط از اين نارحت شدم كه شما ديگه چرا بايد اين حرف رو بزني! اگه كسي بود كه مدير نبود ، كار بلد نبود ، دفعه هاي اولش بود يه چيزي، اما از شما توقع داشتيم
بعدشم چرا انقدر زود بهت بر ميخوره و قهر ميكني؟؟:متفکر:

Mani_rf
شنبه 22 آبان 1389, 13:38 عصر
! گل پسر (شايدم گل دختر)
اولا اينكه مديري احترامت بر ما واجب .

من هم بی احترامی نکردم ، جواب نوشته شما را دادم اما شما جواب سوال های من رو ندادی...



دوما شما اگه خيلي وارد بوديد خودتون جواب اون بنده خدا رو مي داديد و اعداد رياضي رو شمارش نميكردي

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



سوما اگه مي بيني امثال اين آقا و امثال اين آقا ميان جواب اعضا رو ميدن بنابر اين نيست كه بي كارن و الكي تو سايت چرخ مي زنن! به اين علته كه مي خوان اگه كسي مشكلي داره كمكشون كنن.

من هم همچین چیزی نگفتم، بله همه کار دارند، همه از جمله خود من به کمک کردن به دیگران علاقه داریم که اینجا هستیم. مطمعنا شما هم همینطورید.



من فقط از اين نارحت شدم كه شما ديگه چرا بايد اين حرف رو بزني! اگه كسي بود كه مدير نبود ، كار بلد نبود ، دفعه هاي اولش بود يه چيزي، اما از شما توقع داشتيم

من چه حرف بدی زدم که شما را ناراحت کرد؟ ترتیب و ادامه اعداد را گفتم. این ناراحت کننده است؟
آیکن خنده را هم گفتم برای چی گذاشتم، نگفتم!

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



بعدشم چرا انقدر زود بهت بر ميخوره و قهر ميكني؟؟:متفکر:
از این جمله هم اصلا خوشم نیومد.

ali_najari
شنبه 22 آبان 1389, 14:11 عصر
دوستان خواهشآ دعوا نكنيد

بابا سعي كنيد به هم كمك كنيد نه از حرف هاي هم ايراد بگيريد

بخدا من بهم بر نخورده
من خوشحالم ميشم كسي بهم ايراداتم رو بگه و كمكم كنه براي بهبود بهتر

mansourii
شنبه 22 آبان 1389, 15:59 عصر
من هم بی احترامی نکردم ، جواب نوشته شما را دادم اما شما جواب سوال های من رو ندادی...


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


من هم همچین چیزی نگفتم، بله همه کار دارند، همه از جمله خود من به کمک کردن به دیگران علاقه داریم که اینجا هستیم. مطمعنا شما هم همینطورید.


من چه حرف بدی زدم که شما را ناراحت کرد؟ ترتیب و ادامه اعداد را گفتم. این ناراحت کننده است؟
آیکن خنده را هم گفتم برای چی گذاشتم، نگفتم!

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



از این جمله هم اصلا خوشم نیومد.

احسنت . فكر كنم اشتباه از منه.

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


** برام جالبه . اينطور فكر ميكنم كه نبايد زياد طرف كسي رو بگيري ! درسته؟ **
به هر حال اگه شما رو ناراحت كردم پوزش مي خوام

(( از اينكه با دوستانم Main_rf , نجاري آشنا شدم خوشحالم ))

انشااله در همه كارهاتون موفق باشيد

Mani_rf
شنبه 22 آبان 1389, 17:00 عصر
احسنت . فكر كنم اشتباه از منه.


** برام جالبه . اينطور فكر ميكنم كه نبايد زياد طرف كسي رو بگيري ! درسته؟ **
به هر حال اگه شما رو ناراحت كردم پوزش مي خوام

(( از اينكه با دوستانم Main_rf , نجاري آشنا شدم خوشحالم ))

انشااله در همه كارهاتون موفق باشيد

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

parsaid
شنبه 16 مهر 1390, 16:35 عصر
دوستان فکر میکنم سورس بالا مشکل داره، مثلاً عدد 10830000 رو نمیتونه به حروف تبدیل کنه؟؟!؟؟؟

Faezeh72
شنبه 16 دی 1391, 17:06 عصر
سلام.من یه پروژه درباره تبدیل اعداد به حروف فارسی حداکثر تا 12 رقم به زبان c++دارم.زیاد به این زبان آشنایی ندارم و وقت خیلی کمی هم دارم.اگه سورسشو به زبان ساده واسم بنویسیدخیلی خیلی ممنون میشم.

ساران سافت
دوشنبه 16 بهمن 1391, 18:55 عصر
سلام دوستان من قبلا يه كد از سايت گرفته بودم براي تبديل عدد به حروف ولي خوب وقتي ميخواستم ازش استفاده كنم ديدم كه كد مشكل داره و فارسي اعداد رو اشتباه بر ميگردونه واسه همين اقدام به نوشتن اين كدها كردم (ميخواستم توي وقت صرفه جويي كنم ولي تابع اي كه گرفته بودم اشتباه بود و مجبور شدم خودم بنويسم) اين تابع رو براي دوستان ميزارم كه اگر كسي نياز داشت ازش استفاده كنه

راستي اينم بگم كه دارم روي تبديل حروف فارسي به اعداد كار ميكنم و احتمال خيلي زياد تا جمعه آماده ميشه!

Module همين كد رو هم براتون Attach ميكنم.

این کد شما روی بعضی از اعداد خطا میده مثلا 12050 رو نمی تونه تبدیل کنه
Conversion from string "" to type 'Integer' is not valid.

ali reza mansoori 2
دوشنبه 16 بهمن 1391, 23:21 عصر
دوستان این کد رو از همین سایت دانلود کردم و نمیدونم کی نوشته
ولی تا عدد گوگول پلکس پلکس:لبخند: تبدیل میکنه

mehdi_jazini
پنج شنبه 09 آذر 1396, 06:55 صبح
سلام دوستان من قبلا يه كد از سايت گرفته بودم براي تبديل عدد به حروف ولي خوب وقتي ميخواستم ازش استفاده كنم ديدم كه كد مشكل داره و فارسي اعداد رو اشتباه بر ميگردونه واسه همين اقدام به نوشتن اين كدها كردم (ميخواستم توي وقت صرفه جويي كنم ولي تابع اي كه گرفته بودم اشتباه بود و مجبور شدم خودم بنويسم) اين تابع رو براي دوستان ميزارم كه اگر كسي نياز داشت ازش استفاده كنه

راستي اينم بگم كه دارم روي تبديل حروف فارسي به اعداد كار ميكنم و احتمال خيلي زياد تا جمعه آماده ميشه!



Private Function GetNumberString(ByVal Number As Integer) As String
Select Case Number
Case 1
GetNumberString = "يك"
Case 2
GetNumberString = "دو"
Case 3
GetNumberString = "سه"
Case 4
GetNumberString = "چهار"
Case 5
GetNumberString = "پنج"
Case 6
GetNumberString = "شش"
Case 7
GetNumberString = "هفت"
Case 8
GetNumberString = "هشت"
Case 9
GetNumberString = "نه"
Case 10
GetNumberString = "ده"
Case 11
GetNumberString = "يازده"
Case 12
GetNumberString = "دوازده"
Case 13
GetNumberString = "سيزده"
Case 14
GetNumberString = "چهارده"
Case 15
GetNumberString = "پانزده"
Case 16
GetNumberString = "شانزده"
Case 17
GetNumberString = "هفده"
Case 18
GetNumberString = "هجده"
Case 19
GetNumberString = "نوزده"
Case 20 To 29
GetNumberString = "بيست"
Case 30 To 39
GetNumberString = "سي"
Case 40 To 49
GetNumberString = "چهل"
Case 50 To 59
GetNumberString = "پنجاه"
Case 60 To 69
GetNumberString = "شصد"
Case 70 To 79
GetNumberString = "هفتاد"
Case 80 To 89
GetNumberString = "هشتاد"
Case 90 To 99
GetNumberString = "نود"
Case 100 To 199
GetNumberString = "يكصد"
Case 200 To 299
GetNumberString = "دويست"
Case 300 To 399
GetNumberString = "سيصد"
Case 400 To 499
GetNumberString = "چهارصد"
Case 500 To 599
GetNumberString = "پانصد"
Case 600 To 699
GetNumberString = "ششصد"
Case 700 To 799
GetNumberString = "هفتصد"
Case 800 To 800
GetNumberString = "هشتصد"
Case 900 To 999
GetNumberString = "نهصد"
Case Else
GetNumberString = ""
End Select
Return GetNumberString
End Function
Private Function GetString(ByVal Number As Integer) As String
Select Case Number
Case 1
GetString = "هزار"
Case 2
GetString = "ميليون"
Case 3
GetString = "ميليارد"
Case 4
GetString = "ترليون"
Case 5
GetString = "تلیارد"
Case Else
GetString = ""
End Select
Return GetString
End Function
Public Function NumToFarsi(ByVal Number As String) As String
NumToFarsi = ""
Dim strAux As String
Dim strComma As String
Dim strPeriod As String
strPeriod = ""
Number = Number.Replace(",", "")
If InStr(Number, ".") > 0 Then
strAux = Mid(Number, 1, InStr(Number, ".") - 1)
strPeriod = Mid(Number, InStr(Number, "."))
Else
strAux = Number
End If
strComma = strAux
strAux = ""
While strComma.Length > 3
strAux = "," & Mid(strComma, strComma.Length - 2, 3) & strAux
strComma = Mid(strComma, 1, strComma.Length - 3)
End While
strAux = strComma & strAux & strPeriod
If Mid(strAux, 1, 1) = "," Then strAux = Mid(strAux, 2)
Dim SplitNumber = Split(strAux, ",")
For i As Integer = 0 To UBound(SplitNumber)
If CInt(SplitNumber(i)) > 19 Then
For j As Integer = 1 To Len((SplitNumber(i)))
If CInt(SplitNumber(i)) > 0 Then
Dim Num As Integer = CInt(Mid(CInt(SplitNumber(i)), j))
If Num > 0 And Num <= 19 Then
NumToFarsi &= " و " & GetNumberString(Num)
Exit For
ElseIf Num > 19 Then
NumToFarsi &= " و " & GetNumberString(Num)
End If
End If
Next j%
ElseIf CInt(SplitNumber(i)) <= 19 And CInt(SplitNumber(i)) > 0 Then
NumToFarsi &= " و " & GetNumberString(SplitNumber(i))
End If
If CInt(SplitNumber(i)) > 0 Then
NumToFarsi &= " " & GetString(UBound(SplitNumber) - i)
End If
Next
If Mid(Trim(NumToFarsi), NumToFarsi.Length - 1) = "و" Then
End If
If Mid(Trim(NumToFarsi), NumToFarsi.Length - 1) = "و" Then
NumToFarsi = Mid(Trim(NumToFarsi), NumToFarsi.Length - 1)
ElseIf Mid(Trim(NumToFarsi), 1, 1) = "و" Then
NumToFarsi = Mid(Trim(NumToFarsi), 2)
End If
Return NumToFarsi
End Function


طريقه استفاده از كدها



MsgBox(NumToFarsi(TextBox1.Text))



Module همين كد رو هم براتون Attach ميكنم

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

Case 800 To 800

رو به

Case 800 To 899

تغییر بده

باز هم تشکر می کنم

و خدانگهدار

leilaalavi44@gmail.com
دوشنبه 07 مرداد 1398, 18:32 عصر
هفت میلیون و 48 هزار تومن