الى مبرمجي الفيجوال بيسيك 5 كيف يمكنني عمل كود مثلا لتحويل القيمة العددية الى قيمة كتابية تلقائيا مثال ذلك
150 الى مائة وخمسون ريال فقط
[b]<small><small>[ تم تعديل الموضوع بواسطة abodi يوم 02-05-2000]
الى مبرمجي الفيجوال بيسيك 5 كيف يمكنني عمل كود مثلا لتحويل القيمة العددية الى قيمة كتابية تلقائيا مثال ذلك
150 الى مائة وخمسون ريال فقط
[b]<small><small>[ تم تعديل الموضوع بواسطة abodi يوم 02-05-2000]
سوف اعطيك الفكرة الاساسية
الفكرة عدد مثل 564 يجب تقسيمه الى 3 ارقام 4 ، 6 ، 5 ثمثل خانات الاحاد والعشرات والمئات ،كيف ذلك
لنفترض ان الرقم X
فللحصول على خانة الاحاد نستخدم الصيغة X mod 10
وللحصول على خانة العشرات نستخدم الصيغةInt)X mod 100)/10)
للحصول على خانة المئات نكتب الصيغةInt)X mod 1000)/100)
اسف انى الاقواس غير واضحة بشكل صحيح
سوف اضع كود يفقط الارقام الصحيحة من 1 الى 999
سوف يظهر بشكل ليس صحيح ولكن بالاخذ نسخ ولصق في نموذج فيجول بيسك
سوف يعمل البرنامج بشكل صحيح بشرط اضافة 2 Command Button الى الفورم
الاول هو المسئول عن التفقيط والثانى لانهاء البرنامج
ارجو منك الرد لمعرفة الرأى وشكرا
*********** بداية البرنامج
Option Explicit
Dim A(10), X(200)
Private Function SetInst(ByRef N As Single)
Dim WW As String
WW = SetDegree(N)
If N Mod 10 = 0 Then
SetInst = "فقط " + WW + " ريال"
Else
If N < 10 Then
SetInst = WW + " ريالات فقط"
Else
SetInst = WW + " ريال فقط"
End If
End If
Select Case N
Case 1
SetInst = "ريال واحدة فقط"
Case 2
SetInst = "دريالان فقط"
End Select
End Function
Private Sub Command1_Click()
Dim K As Single
Dim I As Integer
Dim WW As String
Dim Res As Boolean
K = Val(InputBox("ادخل الرقم "))
WW = SetInst(K)
MsgBox WW
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Call InitA
End Sub
Private Sub InitA()
A(1) = "احدى"
A(2) = "اثنتا"
A(3) = "ثلاث"
A(4) = "اربع"
A(5) = "خمس"
A(6) = "ست"
A(7) = "سبع"
A(8) = "ثمان"
A(9) = "تسع"
End Sub
Private Function SetDegree(N)
Dim CC As String
Dim OrderN As Integer
Dim W1, W2, W3 As Integer
Dim AW1, AW2 As String
SetDegree = " "
'اقصى عدد يجب ان لايزيد 1000
OrderN = 1
If N \ 100 > 0 Then OrderN = OrderN + 1
If N \ 10 > 0 Then OrderN = OrderN + 1
Select Case OrderN
Case 1
CC = A(N)
'الحالات الشاذة
If N = 1 Then CC = "واحد"
Case 2
W1 = N Mod 10: W2 = N \ 10
AW2 = "و" + A(W2) + "ون"
'الحالات الشاذة
If W2 = 1 Then AW2 = "عشر"
If W2 = 2 Then AW2 = "وعشرون"
CC = A(W1) + " " + AW2
If W1 = 0 Then
CC = A(W2) + "ون"
If W2 = 1 Then CC = "عشر"
If W2 = 2 Then CC = "عشرون"
End If
Case 3
W3 = N \ 100
CC = A(W3) + "مائة و " + SetDegree(N Mod 100)
If W3 = 1 Then CC = "مائة و " + SetDegree(N Mod 100)
If W3 = 2 Then CC = "مائتين و " + SetDegree(N Mod 100)
End Select
SetDegree = CC
End Function
*********** نهاية البرنامج
السلام عليكم ورحمة الله وبركاته اشكرك اخي الكريم(تمساح النيل)على الرد واعطائي معلومه مفيدة جدا وفعلا استفدت منها استفادة كاملة وقمت بعملها وكانت نافعة جدا وجزاك الله الف خير .
صديقك عبودي
السلام عليكم ورحمة الله وبركاته
الاخ / تمساح النيل
كيف أجعله يقبل الاف ومئات الالوف
وشكر
------------------
الى الاخى ابوحسين
ممكن لو ركزت في البرنامج معالجة جميع الحالات ،
وان شاء الله في اقرب فرصة سوف اكمل البرنامج لتفقيط الارقام الى مليون وذلك بسبب انشغالى ، ولك جزيل الشكر