PDA

View Full Version : سوال: اسپل کردن متن داخل label



karim orooji
شنبه 15 اسفند 1388, 21:57 عصر
با سلام خدمت دوستان عزیز
این برنامه رو نگاه کنید میخوام وقتی روی کلیدی کلیک کردم متن label 1 رو بخونه
مثل وقتی از اطلاعات شماره میگیرید و اون شماره رو واستون اسپل میکند
ممنون میشم کمکم کنید

sina_saravi1
شنبه 15 اسفند 1388, 23:43 عصر
سلام دوست عزیز
مشکل شما کجاس؟
پروژه ی شما خوب کار میکنه

Alirezanet
یک شنبه 16 اسفند 1388, 03:11 صبح
زیاد کار پیچیده ای نیست فقط احتیاج دارین که کاری که مثله نمونه خودتون به صورت متن ظاهر میشه رو ضبط کنین و به جای نوشتن متن اجراش کنی ..
باید این مراحل رو طی کنین ...
1- نباید از Dll خاصی استفاده کنین و از یک کلاس Open Source استفاده کنین ... (من نمونشو براتون میزارم )
2- مقداری که کلاس به شما میده یه رشتست که به ازای هر کدوم از کلماتش باید یه فایل ضبط شده آماده داشته باشین .(که میتونین خودتون ضبط کنین )
مثلا برای هزار (یه فایل ضبط کنین که بگه هزار )
3- توی برنامه به ترتیب فایل هایی که باید رو پخش کنین ...

Public Class AdadToHoroof

Public Function adad(ByVal Number As Double) As String
If Number = 0 Then
Return "صفر"
End If
Dim Flag As Boolean
Dim S As String
Dim I, L As Byte
Dim K(0 To 5) As Double
S = Trim(Str(Number))
L = Len(S)
If L > 15 Then
adad = "بسيار بزرگ"
Exit Function
End If
For I = 1 To 15 - L
S = "0" & S
Next I
For I = 1 To Int((L / 3) + 0.99)
K(5 - I + 1) = Val(Mid(S, 3 * (5 - I) + 1, 3))
Next I
Flag = False
S = ""
For I = 1 To 5
If K(I) <> 0 Then
Select Case I
Case 1
S = S & Three(K(I)) & " تريليون"
Flag = True
Case 2
S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " ميليارد"
Flag = True
Case 3
S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " ميليون"
Flag = True
Case 4
S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " هزار"
Flag = True
Case 5
S = S & IIf(Flag = True, " و ", "") & Three(K(I))
End Select
End If
Next I
adad = S
End Function

Function Three(ByVal Number As Integer) As String
Dim S As String
Dim I, L As Long
Dim h(0 To 3) As Byte
Dim flaq As Boolean
L = Len(Trim(Str(Number)))
If Number = 0 Then
Three = ""
Exit Function
End If
If Number = 100 Then
Three = "يكصد"
Exit Function
End If
If L = 2 Then h(1) = 0
If L = 1 Then
h(1) = 0
h(2) = 0
End If
For I = 1 To L
h(3 - I + 1) = Mid(Trim(Str(Number)), L - I + 1, 1)
Next I
Select Case h(1)
Case 1
S = "يكصد"
Case 2
S = "دويست"
Case 3
S = "سيصد"
Case 4
S = "چهارصد"
Case 5
S = "پانصد"
Case 6
S = "ششصد"
Case 7
S = "هفتصد"
Case 8
S = "هشتصد"
Case 9
S = "نهصد"
End Select
Select Case h(2)
Case 1
Select Case h(3)
Case 0
S = S & " و " & "ده"
Case 1
S = S & " و " & "يازده"
Case 2
S = S & " و " & "دوازده"
Case 3
S = S & " و " & "سيزده"
Case 4
S = S & " و " & "چهارده"
Case 5
S = S & " و " & "پانزده"
Case 6
S = S & " و " & "شانزده"
Case 7
S = S & " و " & "هفده"
Case 8
S = S & " و " & "هجده"
Case 9
S = S & " و " & "نوزده"
End Select
Case 2
S = S & " و " & "بيست"
Case 3
S = S & " و " & "سي"
Case 4
S = S & " و " & "چهل"
Case 5
S = S & " و " & "پنجاه"
Case 6
S = S & " و " & "شصت"
Case 7
S = S & " و " & "هفتاد"
Case 8
S = S & " و " & "هشتاد"
Case 9
S = S & " و " & "نود"
End Select
If h(2) <> 1 Then
Select Case h(3)
Case 1
S = S & " و " & "يك"
Case 2
S = S & " و " & "دو"
Case 3
S = S & " و " & "سه"
Case 4
S = S & " و " & "چهار"
Case 5
S = S & " و " & "پنج"
Case 6
S = S & " و " & "شش"
Case 7
S = S & " و " & "هفت"
Case 8
S = S & " و " & "هشت"
Case 9
S = S & " و " & "نه"
End Select
End If
S = IIf(L < 3, Right(S, Len(S) - 3), S)
Three = S
End Function

End Class



این کلاس رو قبلا نوشته بودم ... یکم اگه دقت کنید اینجا عدد رو میگیره و به حروف برمیگردونه ...
کاری که شما باید کنید به جای مثلا (میلیون) باید یه فایل ضبط شده که بگه میلیون رو برگردونین ...

karim orooji
یک شنبه 16 اسفند 1388, 09:16 صبح
ممنون دوست عزیز
میخواستم بدونم باید تک تک کیسهایی که گذاشتین صدا ضبط کنم

karim orooji
یک شنبه 16 اسفند 1388, 14:07 عصر
دوست عزیز چطوری میشه این کدها رو به صورت یک dll در اورد میخوام برنامه زیاد کد نداشته باشه

Alirezanet
یک شنبه 16 اسفند 1388, 16:58 عصر
ممنون دوست عزیز
میخواستم بدونم باید تک تک کیسهایی که گذاشتین صدا ضبط کنم
بله این راه راحت تره ...


دوست عزیز چطوری میشه این کدها رو به صورت یک dll در اورد میخوام برنامه زیاد کد نداشته باشه

خب یه کلاس به برنامت اضافه کن و کل کد رو توش کپی کن ...
Dll هم اینجا هست
http://barnamenevis.org/forum/showthread.php?t=200183

karim orooji
دوشنبه 17 اسفند 1388, 12:49 عصر
سلام دوست عزیز
میشه یه نمونه کوچیک واسم مثال بزنی اخه گیج شدم و نمیدونم چیکار کنم
ممنون میشم کمکم کنی

Alirezanet
دوشنبه 17 اسفند 1388, 17:27 عصر
باشه عزیز ولی یه چند روز من واقعا گرفتارم ... یه توضیح دیگه میدم اگه نشد در اولین فرصت برات یه نمونه میزارم ...

ببین برای یکی از اون رشته ها مثله ( یکصد - دویست - هزار - صفر - میلیون - یک ...)
زمانی که کلاس یه مقدار مثلا هزار رو برمیگردونه شما باید یه فایل رو که از قبل ضیط کردین (توش بگه هزار ) رو پخش کنین ..
اصلا اینو امتحان کن :
یه فایل ضبط کن و توش بگو صفر ...
یه شرط هم بنویس به این شکل مثلا : (اسم فایلتو هم بزار صفر)
اینجا مثلا با یه مدیا پلیر فایل رو میخوای پخش کنی !


if adad(0) ="صفر" then
Mediaplayer.play("FileSefr"(
end if


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


Return "صفر"
رو شما پاک کن

Return "C:\Sefr.mp3"
رو برگردون !
بعد مقدار های برگشتی رو به یه مدیاپلیر اضافه کن و بزار پشت سر هم پخش شند ...

karim orooji
دوشنبه 24 اسفند 1388, 14:37 عصر
دوستان کسی پیشنهاد یا نمونه ای نداره (با کد نویسی کوتاه و قابل درک)

MahmoudiNik
دوشنبه 24 اسفند 1388, 23:24 عصر
سلام این یه نمونه هستش که چند وقت پیش نوشتم.
این لینک دانلود:
http://www.persiangig.com/pages/download/?dl=http://goodway.persiangig.com/other/NumberConvertor.rar