View Full Version : سوال: اسپل کردن متن داخل label
  
karim orooji
شنبه 15 اسفند 1388, 22:57 عصر
با سلام خدمت دوستان عزیز
این برنامه رو نگاه کنید میخوام وقتی روی کلیدی کلیک کردم متن label 1 رو بخونه
مثل وقتی از اطلاعات شماره میگیرید و اون شماره رو واستون اسپل میکند
ممنون میشم کمکم کنید
sina_saravi1
یک شنبه 16 اسفند 1388, 00:43 صبح
سلام دوست عزیز
مشکل شما کجاس؟
پروژه ی شما خوب کار میکنه
Alirezanet
یک شنبه 16 اسفند 1388, 04: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, 10:16 صبح
ممنون دوست عزیز 
میخواستم بدونم باید تک تک کیسهایی که گذاشتین صدا ضبط کنم
karim orooji
یک شنبه 16 اسفند 1388, 15:07 عصر
دوست عزیز چطوری میشه این کدها رو به صورت یک dll در اورد میخوام برنامه زیاد کد نداشته باشه
Alirezanet
یک شنبه 16 اسفند 1388, 17:58 عصر
ممنون دوست عزیز 
میخواستم بدونم باید تک تک کیسهایی که گذاشتین صدا ضبط کنم
 بله این راه راحت تره ... 
 
دوست عزیز چطوری میشه این کدها رو به صورت یک dll در اورد میخوام برنامه زیاد کد نداشته باشه
 
خب یه کلاس به برنامت اضافه کن و کل کد رو توش کپی کن ... 
Dll هم اینجا هست 
http://barnamenevis.org/forum/showthread.php?t=200183
karim orooji
دوشنبه 17 اسفند 1388, 13:49 عصر
سلام دوست عزیز
میشه یه نمونه کوچیک واسم مثال بزنی اخه گیج شدم و نمیدونم چیکار کنم 
ممنون میشم کمکم کنی
Alirezanet
دوشنبه 17 اسفند 1388, 18:27 عصر
باشه عزیز ولی یه چند روز من واقعا گرفتارم ... یه توضیح دیگه میدم اگه نشد در اولین فرصت برات یه نمونه میزارم ... 
 
ببین برای یکی از اون رشته ها مثله ( یکصد - دویست - هزار - صفر - میلیون - یک ...)
زمانی که کلاس یه مقدار مثلا هزار رو برمیگردونه شما باید یه فایل رو که از قبل ضیط کردین (توش بگه هزار ) رو پخش کنین .. 
اصلا اینو امتحان کن : 
یه فایل ضبط کن و توش بگو صفر ... 
یه شرط هم بنویس به این شکل مثلا : (اسم فایلتو هم بزار صفر)
اینجا مثلا با یه مدیا پلیر فایل رو میخوای پخش کنی !
if adad(0) ="صفر" then
Mediaplayer.play("FileSefr"(
end if 
 
این روش خیلی سادشه ... 
ولی من پیشنهاد میکنم که همون جایی که توی کلاس رشته برگردونده میشه اونو پاک کن و 1 فایل رو برگردون .... 
 
Return "صفر"
رو شما پاک کن 
Return "C:\Sefr.mp3" 
رو برگردون !
بعد مقدار های برگشتی رو به یه مدیاپلیر اضافه کن و بزار پشت سر هم پخش شند ...
karim orooji
دوشنبه 24 اسفند 1388, 15:37 عصر
دوستان کسی پیشنهاد یا نمونه ای نداره (با کد نویسی کوتاه و قابل درک)
MahmoudiNik
سه شنبه 25 اسفند 1388, 00:24 صبح
سلام این یه نمونه هستش که چند وقت پیش نوشتم.
این لینک دانلود:
http://www.persiangig.com/pages/download/?dl=http://goodway.persiangig.com/other/NumberConvertor.rar
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.