PDA

View Full Version : سوال: برنامه شماره خوان بانک



elmira_63
پنج شنبه 24 مرداد 1387, 08:17 صبح
سلام دوستان
یه نفر ازم خواسته یه برنامه شماره خوان بانک بنویسم که اپراتور با کلیک کردن یه باتون شماره بعدی خوانده بشه ولی من با فایل های صوتی توی vb کار نکردم
چطور باید چند تا فایل صوتی رو پشت سر هم پخش می کنه ؟
وقتی مثلا زد 125 چطور بره فایل صوتی (صد )و فایل ( و ) وفایل (بیست) و فایل (و) و فایل صوتی(پنج) رو پشت سر هم اجرا کنه؟؟؟؟؟؟

mostafaaa
پنج شنبه 24 مرداد 1387, 09:19 صبح
فکر میکنم اگه به الگوریتم برنامه هایی که عدد رو به حروف تبدیل میکنند نگاه کنی .راه حلت رو پیدا میکنی .سورسش هم توی همین سایت زیاده .فرق برنامه ای که شما میخای بنویسی با اونا اینه که اونا عدد رو به حروف تبدیل میکردند و برنامه شما باید بخونتشون.

KambizZandi
پنج شنبه 24 مرداد 1387, 13:01 عصر
اعدادي که بعد از اونا بايد "و" بياد بايد بصورت "و" دار ضبط بشن
يعني يه فايل براي "صد" داشته باش يدونه هم براي "صدو"
در مورد پخششون هم بايد ابتدا فايلهاي مختلفي که ميخواي پشت سر هم پخش بشنو توي memory يکي کني (يعني يه فايل صوتي مجازي بسازي) بعدش اونو پخش کني
در اين مورد خيلي ميشه حرف زد ولي فکر کنم تو اين سايت مطالب خوبي پيدا کني
موفق باشي

elmira_63
شنبه 26 مرداد 1387, 08:51 صبح
دقیقا مشکل من هم همین یکی کردن این چند تا فایل صوتی هستش ؟
خیلی هم گشتم ولی چیزی دستگیرم نشد!!!!!

elmira_63
شنبه 26 مرداد 1387, 09:55 صبح
من با این کد یه عدد رو به حروف تبدیل می کنم

Private Function NumToText(ByRef Adad As Double) As String
Static sefr_ta_noh(9) As String
Static dah_ta_noozdah(9) As String
Static bist_ta_navado(9) As String
Static sad_ta_nohsad(9) As String
Static hezar_ta_trilion(4) As String

Dim i As Short
Dim tamam_sefr As Boolean
Dim show_balatar_az_hezar As Boolean
Dim adad_vorodi As String
Dim string_temp As String
Dim tabdil As String
Dim Ragham As Short
Dim character As Short
System.Diagnostics.Debug.Assert(Adad > 0, "")

sefr_ta_noh(0) = "صفر"
sefr_ta_noh(1) = "يک"
sefr_ta_noh(2) = "دو"
sefr_ta_noh(3) = "سه"
sefr_ta_noh(4) = "چهار"
sefr_ta_noh(5) = "پنج"
sefr_ta_noh(6) = "شش"
sefr_ta_noh(7) = "هفت"
sefr_ta_noh(8) = "هشت"
sefr_ta_noh(9) = "نه"
dah_ta_noozdah(0) = "ده"
dah_ta_noozdah(1) = "يازده"
dah_ta_noozdah(2) = "دوازده"
dah_ta_noozdah(3) = "سيزده"
dah_ta_noozdah(4) = "چهارده"
dah_ta_noozdah(5) = "پانزده"
dah_ta_noozdah(6) = "شانزده"
dah_ta_noozdah(7) = "هفده"
dah_ta_noozdah(8) = "هجده"
dah_ta_noozdah(9) = "نوزده"
'bist_ta_navado(0) = ""
'bist_ta_navado(1) = "ده"
bist_ta_navado(2) = "بيست"
bist_ta_navado(3) = "سي"
bist_ta_navado(4) = "چهل"
bist_ta_navado(5) = "پنجاه"
bist_ta_navado(6) = "شصت"
bist_ta_navado(7) = "هفتاد"
bist_ta_navado(8) = "هشتاد"
bist_ta_navado(9) = "نود"
'sad_ta_nohsad(0) = ""
sad_ta_nohsad(1) = "يک صد"
sad_ta_nohsad(2) = "دويست"
sad_ta_nohsad(3) = "سيصد"
sad_ta_nohsad(4) = "حهارصد"
sad_ta_nohsad(5) = "پانصد"
sad_ta_nohsad(6) = "ششصد"
sad_ta_nohsad(7) = "هفتصد"
sad_ta_nohsad(8) = "هشتصد"
sad_ta_nohsad(9) = "نهصد"
'hezar_ta_trilion(0) = ""
hezar_ta_trilion(1) = "هزار"
hezar_ta_trilion(2) = "ميليون"
hezar_ta_trilion(3) = "ميليارد"
hezar_ta_trilion(4) = "تريليون"


On Error GoTo vbErrorHandler

adad_vorodi = CStr(Adad)

tamam_sefr = True

For i = Len(adad_vorodi) To 1 Step -1
character = Val(Mid(adad_vorodi, i, 1))
Ragham = (Len(adad_vorodi) - i) + 1

Select Case (Ragham Mod 3)
Case 0
If character > 0 Then
tabdil = sad_ta_nohsad(character) & "" & tabdil
End If
Case 1
show_balatar_az_hezar = True
If i = 1 Then
string_temp = sefr_ta_noh(character) & " "
ElseIf Mid(adad_vorodi, i - 1, 1) = "1" Then
string_temp = dah_ta_noozdah(character) & " "
i = i - 1
ElseIf character > 0 Then
string_temp = sefr_ta_noh(character) & " "
Else
show_balatar_az_hezar = False
If Mid(adad_vorodi, i - 1, 1) <> "0" Then
show_balatar_az_hezar = True
ElseIf i > 2 Then
If Mid(adad_vorodi, i - 2, 1) <> "0" Then
show_balatar_az_hezar = True
End If
End If
string_temp = ""
End If
If show_balatar_az_hezar = True Then
If Ragham > 1 Then

string_temp = string_temp & hezar_ta_trilion(Ragham \ 3)
If tamam_sefr = True Then
string_temp = string_temp & " "
Else
string_temp = string_temp & " و "
End If
End If
tamam_sefr = False
End If
tabdil = string_temp & tabdil
Case 2
If character > 0 Then
If Mid(adad_vorodi, i + 1, 1) <> "0" Then
tabdil = bist_ta_navado(character) & " و " & tabdil
Else
tabdil = bist_ta_navado(character) & " " & tabdil
End If
End If

End Select
Next i

tabdil = UCase(VB.Left(tabdil, 1)) & Mid(tabdil, 2)

EndNumToText:
NumToText = tabdil
MaskedTextBox2.Text = NumToText
Exit Function

vbErrorHandler:
tabdil = "خطا"
Resume EndNumToText
End Function

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

اللهم عجل لویک الفرج

KambizZandi
شنبه 26 مرداد 1387, 13:56 عصر
من الان برنامه ي آماده اي ندارم ولي درمورد اين موضوع اينجا بحث ميکنيم:
اولا شما بايد عدد ورودي رو به رشته تبديل کني
بعدش اونو از سمت راست 3 تا 3 تا جدا مي کني
حالا هرکدوم از اين دسته ها را يه بار تبديل به حروف ميکني و به حروف دسته ي قبلي اضافه ميکني
البته بين اين اضافه کردنا بايد به مرتبه ي دسته توجه کني و بر حسب اون از واژه هاي هزار، ميليون و ... استفاده کني
اين روش براي تبديل عدد به حروف هست
حالا اگر زمان تبديل به حروف به جاي حروف اسم فايل صوتي رو بذاري مشکل حل ميشه
مثلا براي فايلهاي صوتي ميتوني از روش زير استفاده کني که راحتتره:

1.wav
...
10.wav
11.wav
12.wav
...
20.wav
...
100.wav
...
1000.wav
...
براي عددهايي که بعدشون عدد داره هم اينجوري:

1_.wav
100_.wav
...
اين سري آخرشون "و" داره مثل "صدو"

KambizZandi
شنبه 26 مرداد 1387, 13:58 عصر
به اين نکته هم توجه کن که بعضي از اعداد (مثل مبلغ) 3 رقم 3 رقم جدا ميشن ولي اعدادي مثل شماره تلفن 2 رقم 2 رقم جدا ميشن و بين اونها چيزي قرار نميگيره
فکر کنم با RegEx بتوني اينکارو راحت انجام بدي

elmira_63
شنبه 26 مرداد 1387, 15:58 عصر
ممنون آقای کامبیز ولی من با کد بالا مشکلی ندارم وقتی عدد وارد کنم حروف رو بهم میده مثلا اگه بزنم 125 می نویسه یکصد و بیست و پنج
نمی دونم منظور شما چی بود , ولی من اومدم به جای حروف که توی کد های بالاست آدرس فایل های صوتی رو بدم بعد این آدرس ها رو به مدیا پلیر بدم تا پخشش کنه برای یه آدرس مشکلی نداره جواب می ده ولی اگه شد دو تا آدرس یا بیشتر نمی شه
مثلا برای عدد 20 آدرس c:\20.wav رو به مدیا پلیر میده و اونو پخش می کنه اگه بدیم 5 آدرس c:\5.wav رو بر می گردونه ولی وقتی بزنیم 25 آدرسی که به مدیا پلیر میده c:\20.wav و c:\5.wav هستش که مسلما اشتباست چون یه (و) وسطش داره و جفت آدرس ها رو یه باره میده

من میخوام بدونم چه طوری به ترتیب این آدرس ها رو به مدیا پلیر بدم تا پشت سر هم پخشش کنه یا اگه راه دیگه ای هست راهنماییم کنین
البته اگه می شد یه نمونه یا تکه کدی در این رابطه برام میزاشتین که خیلی عالی می شد


راستی عید شعبان رو به تموم اساتید و برنامه نویسان این انجمن تبریک می گم

mostafaaa
شنبه 26 مرداد 1387, 20:17 عصر
دقیقا مشکل من هم همین یکی کردن این چند تا فایل صوتی هستش ؟
خیلی هم گشتم ولی چیزی دستگیرم نشد!!!!!
با این کد میتونی چندتا فایل صوتی رو یکی کنی.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MergeFiles("D:\Users\Admin\Music\Golpa\new.mp3", "D:\Users\Admin\Music\Golpa\1.mp3", "D:\Users\Admin\Music\Golpa\2.mp3")
MsgBox("done ")

End Sub
Private Sub MergeFiles(ByVal OutFile As String, ByVal ParamArray Files() As String)
File.Copy(Files(0), OutFile, True) 'overwrites if exists.
Const ChunkSize As Integer = 1024 * 1024
Dim bw As BinaryWriter = Nothing
Try
bw = New BinaryWriter(New FileStream(OutFile, FileMode.Append))
For i As Integer = 1 To Files.GetUpperBound(0)
Dim br As BinaryReader = Nothing
Try
br = New BinaryReader(New FileStream(Files(i), FileMode.Open))
Do While br.BaseStream.Position < br.BaseStream.Length - 1
Dim b(ChunkSize - 1) As Byte
Dim ReadLen As Integer = br.Read(b, 0, ChunkSize)
bw.Write(b, 0, ReadLen)
Loop
Catch ex As Exception
Finally
If Not br Is Nothing Then
If Not br.BaseStream Is Nothing Then br.BaseStream.Dispose()
br.Close()
End If
End Try
Next
Catch ex As Exception

Finally
If Not bw Is Nothing Then
If Not bw.BaseStream Is Nothing Then bw.BaseStream.Dispose()
bw.Close()
End If
End Try
End Sub

mostafaaa
یک شنبه 27 مرداد 1387, 12:44 عصر
از این کلاس هم میتونی واسه یکی کردن فایلهای صوتی استفاده کنی.اینو خودم نوشتم.

Public Class Form1
Class MergeFile
Public Sub Merge(ByVal SourceArray() As String, ByVal Destination As String)
Dim PathString As String = SourceArray(0)
For i As Integer = 1 To SourceArray.Count - 1
PathString = PathString & "+" & SourceArray(i)
Next
Dim ShellPrompt As String = "cmd /c copy /b " & PathString & " " & Destination
Shell(ShellPrompt, AppWinStyle.Hide, )
End Sub
End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Source() As String = {"D:\Users\Admin\Music\Golpa\1.mp3", "D:\Users\Admin\Music\Golpa\2.mp3"}
Dim des As String = "D:\Users\Admin\Music\Golpa\new.mp3"
Dim merge As New MergeFile
merge.Merge(Source, des)
End Sub
End Class

elmira_63
دوشنبه 28 مرداد 1387, 09:02 صبح
آقای مصطفی ممنون از راهنماییتون
من از کد اولی که گفتین استفاده کردم فقط ممکنه یه کم توضیح بدین این کد چیکار میکنه من با چه کدی می تونم این فایل مرج شده رو پخش کنم ؟
آخه من برای پخش کردن یه فایل با مدیا پلیر اول آدرس اون فایل رو با کد زیر بهش می دادم

mediaplayer1.url="c:\1.mp3"
بعدم با این کد اونو پخشش می کردم

mediaplayer1.ctlcontorol.play
ولی الان این فایلی که با کد اولیتون بهم مرج می شه رو نمی دونم چه جوری پخشش کنم
ببخشید من قبلا اصلا با مدیا پلیر وی بی کار نکردم توی این زمینه خیلی مبتدی هستم

mostafaaa
دوشنبه 28 مرداد 1387, 10:13 صبح
اینو همین الان نوشتم هم فایل رو یکی میکنه و هم پخش میکنه.

Imports System.IO
Public Class Form1
Class MergeFile
Public Sub Merge(ByVal SourceArray() As String, ByVal Destination As String)
Dim PathString As String = SourceArray(0)
For i As Integer = 1 To SourceArray.Count - 1
PathString = PathString & "+" & SourceArray(i)
Next
Dim ShellPrompt As String = "cmd /c copy /b " & PathString & " " & Destination
Shell(ShellPrompt, AppWinStyle.Hide)
While True
If File.Exists(Destination) Then Exit Sub
End While
End Sub
End Class
Private Sub Play(ByVal FilePath As String)
If File.Exists(FilePath) Then
Me.AxWindowsMediaPlayer1.URL = FilePath
Else
MessageBox.Show("File not Exists")
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim merge As New MergeFile
Dim Source() As String = {"D:\HomayounShajarian\1.mp3", "D:\HomayounShajarian\2.mp3"}
Dim Des As String = "D:\HomayounShajarian\new.mp3"
merge.Merge(Source, Des)
Play(Des)
End Sub

End Class

elmira_63
دوشنبه 28 مرداد 1387, 10:31 صبح
ممنون ولی این کد رو که استفاده می کنم این خط رو ایراد می گیره

For i As Integer = 1 To SourceArray.Count - 1
میگه

Error 2 'Count' is not a member of 'System.Array'. F:\sound\WindowsApplication1\WindowsApplication2\C lass1.vb 6 37 WindowsApplication2

mostafaaa
دوشنبه 28 مرداد 1387, 11:55 صبح
من vb2008 استفاده میکنم و فکر میکنم شما از 2005 داری استفاده میکنی. و فکر میکنم مشکل از همینجا باید باشه.
اگه نظرم درست باشه با تغییر کد به این شکل مشکل باید برطرف بشه.

For i As Integer = 1 To SourceArray.Length - 1

elmira_63
دوشنبه 28 مرداد 1387, 14:40 عصر
ممنون از لطفتون
امتحان کردم درست شد ولی فقط دوتا فایل رو مرج میکنه اگه سه تا شد بازم همون دوتا رو مرج میکنه مثلا برای 125 میگه ( صدو بیست و )
ولی پنجش رو نمی گه نمی دونم مشکل از برنامه منه ؟؟؟
ولی مطمعنم که سه تا آدرس رو برای پخش کردن به اون تکه کد شما می ده:ناراحت:

mostafaaa
دوشنبه 28 مرداد 1387, 17:36 عصر
من همین الان 4 تا فایل رو باهاش مرج کردم هیچ مشکلی نداشت.

Dim Source() As String = {"D:\HomayounShajarian\1.mp3", "D:\HomayounShajarian\2.mp3", "D:\HomayounShajarian\3.mp3" _
, "D:\HomayounShajarian\4.mp3"}
اینم سورسش
22082

elmira_63
سه شنبه 29 مرداد 1387, 09:36 صبح
کلافم کرده
اون کدی که شما گفتید رو وقتی دستی آدرس ها رو میزارم توش درست کار میکنه ولی وقتی این آدرس ها رو بر حسب عدد ورودی خود برنامه حساب می کنه و به کد شما میده برای وقتی که دو سه تا آدرس رو میده به کد شما جواب نمی ده ولی برای یه آدرس مشکلی نداره
من برنامم رو گذاشتم براتون اگه وقتش رو دارین یه نگاهی بندازین بهش ببینین مشکل منو متوجه می شین؟؟
توی برنامه تو تکست باکس بالایی یه عدد میزنم بعد اینتر رو که بزنم باید آدرس ها رو حساب کنه بریزه توی تکست باکس پایینی بعد کد شما رو اینطوری استفاده می کنم که :

dim source() as string={textbox2.text}

mostafaaa
سه شنبه 29 مرداد 1387, 09:50 صبح
dim source() as string={textbox2.text}خوب اینجوری معلومه جواب نمیده .
متغیر Source یه آرایه برای نگهداری آدرس فایلهاتون هست که شما باید توی هر خونه از آرایه یه آدرس بزاری ، نه اینکه همه آدرسها رو بریزی تویه یه خونش.

Dim source() As String = {"Address1", "Address2"}

elmira_63
سه شنبه 29 مرداد 1387, 10:48 صبح
بله دقیقا این موضوع رو میدونم برای همینم دیشب کلی روش کار کردم که آدرس ها رو با همین فرمتی که گفتین بده به برنامه یعنی محتویات تسکست باکس همون فرمتی هست که نوشتین شما یعنی تکست باکس دقیقا برابر ("آدرس3","آدرس2","آدرس1") هستش
اینم اصل برنامه


Imports System.IO
Imports vb = Microsoft.VisualBasic

Public Class Form1
Class MergeFile
Public Sub Merge(ByVal SourceArray() As String, ByVal Destination As String)
Dim PathString As String = SourceArray(0)
For i As Integer = 1 To SourceArray.Length - 1
PathString = PathString & "+" & SourceArray(i)
Next
Dim ShellPrompt As String = "cmd /c copy /b " & PathString & " " & Destination
Shell(ShellPrompt, AppWinStyle.Hide)
While True
If File.Exists(Destination) Then Exit Sub
End While
End Sub
End Class
Private Sub Play(ByVal FilePath As String)
If File.Exists(FilePath) Then
Me.MediaPlayer1.URL = FilePath
Else
MessageBox.Show("File not Exists")
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim merge As New MergeFile
Dim Source() As String = {MaskedTextBox1.Text}
Dim Des As String = "c:\new.mp3"
merge.Merge(Source, Des)
Play(Des)
End Sub

Private Function NumToText(ByRef Adad As Double) As String
Static sefr_ta_noh(9) As String
Static dah_ta_noozdah(9) As String
Static bist_ta_navado(9) As String
Static sad_ta_nohsad(9) As String
Static hezar_ta_trilion(4) As String

Dim i As Short
Dim tamam_sefr As Boolean
Dim show_balatar_az_hezar As Boolean
Dim adad_vorodi As String
Dim string_temp As String
Dim tabdil As String
Dim Ragham As Short
Dim character As Short
System.Diagnostics.Debug.Assert(Adad > 0, "")

sefr_ta_noh(0) = "صفر"
sefr_ta_noh(1) = """" + Application.StartupPath+ "\sonds\1.mp3"+ " "+ """"
sefr_ta_noh(2) = """" + Application.StartupPath + "\sonds\2.mp3" + " " + """"
sefr_ta_noh(3) = """" + Application.StartupPath + "\sonds\3.mp3" + " " + """"
sefr_ta_noh(4) = """" + Application.StartupPath + "\sonds\4.mp3" + " " + """"
sefr_ta_noh(5) = """" + Application.StartupPath + "\sonds\5.mp3" + " " + """"
sefr_ta_noh(6) = """" + Application.StartupPath + "\sonds\6.mp3" + " " + """"
sefr_ta_noh(7) = """" + Application.StartupPath + "\sonds\7.mp3" + " " + """"
sefr_ta_noh(8) = """" + Application.StartupPath + "\sonds\8.mp3" + " " + """"
sefr_ta_noh(9) = """" + Application.StartupPath + "\sonds\9.mp3" + " " + """"
dah_ta_noozdah(0) = """" + Application.StartupPath + "\sonds\10.mp3" + " " + """"
dah_ta_noozdah(1) = """" + Application.StartupPath + "\sonds\11.mp3" + " " + """"
dah_ta_noozdah(2) = """" + Application.StartupPath + "\sonds\12.mp3" + " " + """"
dah_ta_noozdah(3) = """" + Application.StartupPath + "\sonds\13.mp3" + " " + """"
dah_ta_noozdah(4) = """" + Application.StartupPath + "\sonds\14.mp3" + " " + """"
dah_ta_noozdah(5) = """" + Application.StartupPath + "\sonds\15.mp3" + " " + """"
dah_ta_noozdah(6) = """" + Application.StartupPath + "\sonds\16.mp3" + " " + """"
dah_ta_noozdah(7) = """" + Application.StartupPath + "\sonds\17.mp3" + " " + """"
dah_ta_noozdah(8) = """" + Application.StartupPath + "\sonds\18.mp3" + " " + """"
dah_ta_noozdah(9) = """" + Application.StartupPath + "\sonds\19.mp3" + " " + """"
'bist_ta_navado(0) = ""
'bist_ta_navado(1) = "ده"
bist_ta_navado(2) = """" + Application.StartupPath+ "\sonds\20.mp3" +" "+ """"
bist_ta_navado(3) = """" + Application.StartupPath + "\sonds\30.mp3" + " " + """"
bist_ta_navado(4) = """" + Application.StartupPath + "\sonds\40.mp3" + " " + """"
bist_ta_navado(5) = """" + Application.StartupPath + "\sonds\50.mp3" + " " + """"
bist_ta_navado(6) = """" + Application.StartupPath + "\sonds\60.mp3" + " " + """"
bist_ta_navado(7) = """" + Application.StartupPath + "\sonds\70.mp3" + " " + """"
bist_ta_navado(8) = """" + Application.StartupPath + "\sonds\80.mp3" + " " + """"
bist_ta_navado(9) = """" + Application.StartupPath + "\sonds\90.mp3" + " " + """"
'sad_ta_nohsad(0) = ""
sad_ta_nohsad(1) = """" + Application.StartupPath + "\sonds\100.mp3" + " " + """"
sad_ta_nohsad(2) = """" + Application.StartupPath + "\sonds\200.mp3" + " " + """"
sad_ta_nohsad(3) = """" + Application.StartupPath + "\sonds\300.mp3" + " " + """"
sad_ta_nohsad(4) = """" + Application.StartupPath + "\sonds\400.mp3" + " " + """"
sad_ta_nohsad(5) = """" + Application.StartupPath + "\sonds\500.mp3" + " " + """"
sad_ta_nohsad(6) = """" + Application.StartupPath + "\sonds\600.mp3" + " " + """"
sad_ta_nohsad(7) = """" + Application.StartupPath + "\sonds\700.mp3" + " " + """"
sad_ta_nohsad(8) = """" + Application.StartupPath + "\sonds\800.mp3" + " " + """"
sad_ta_nohsad(9) = """" + Application.StartupPath + "\sonds\900.mp3" + " " + """"
'hezar_ta_trilion(0) = ""
hezar_ta_trilion(1) = """" + Application.StartupPath + "\sonds\1000.mp3" + " " + """"
hezar_ta_trilion(2) = """" + Application.StartupPath + "\sonds\melyoon.mp3" + " " + """"
hezar_ta_trilion(3) = """" + Application.StartupPath + "\sonds\milyard.mp3" + " " + """"
hezar_ta_trilion(4) = "تريليون"


On Error GoTo vbErrorHandler

adad_vorodi = CStr(Adad)

tamam_sefr = True

For i = Len(adad_vorodi) To 1 Step -1
character = Val(Mid(adad_vorodi, i, 1))
Ragham = (Len(adad_vorodi) - i) + 1

Select Case (Ragham Mod 3)
Case 0
If character > 0 Then
tabdil = sad_ta_nohsad(character) & "," & tabdil
End If
Case 1
show_balatar_az_hezar = True
If i = 1 Then
string_temp = sefr_ta_noh(character) & " "
ElseIf Mid(adad_vorodi, i - 1, 1) = "1" Then
string_temp = dah_ta_noozdah(character) & " "
i = i - 1
ElseIf character > 0 Then
string_temp = sefr_ta_noh(character) & " "
Else
show_balatar_az_hezar = False
If Mid(adad_vorodi, i - 1, 1) <> "0" Then
show_balatar_az_hezar = True
ElseIf i > 2 Then
If Mid(adad_vorodi, i - 2, 1) <> "0" Then
show_balatar_az_hezar = True
End If
End If
string_temp = ""
End If
If show_balatar_az_hezar = True Then
If Ragham > 1 Then

string_temp = string_temp & hezar_ta_trilion(Ragham \ 3)
If tamam_sefr = True Then
string_temp = string_temp & " "
Else
string_temp = string_temp & " , " & " " & """" & "g:\sonds\O.mp3" & """" & " " & ","
End If
End If
tamam_sefr = False
End If
tabdil = string_temp & tabdil
Case 2
If character > 0 Then
If Mid(adad_vorodi, i + 1, 1) <> "0" Then
tabdil = bist_ta_navado(character) & " , " & " " & """" & "g:\sonds\O.mp3" & """" & " " & "," & " " & tabdil
Else
tabdil = bist_ta_navado(character) & " " & tabdil
End If
End If

End Select
Next i

tabdil = UCase(VB.Left(tabdil, 1)) & Mid(tabdil, 2)

EndNumToText:
NumToText = tabdil
'ایجا آدرس به تکست باکس نسبت داده می شود
MaskedTextBox2.Text = NumToText

Exit Function

vbErrorHandler:
tabdil = "خطا"
Resume EndNumToText
End Function

Private Sub MaskedTextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress
If Asc(e.KeyChar) = 13 Then
Dim a As Double = MaskedTextBox1.Text
'اینجا عدد برای بدست آوردن آدرس به numtotext داده می شود
NumToText(a)
'اینم که کد شما
Dim merge As New MergeFile
Dim Source() As String = {MaskedTextBox2.Text}
Dim Des As String = "c:\new.mp3"
merge.Merge(Source, Des)
Play(Des)
IO.File.Delete("c:\new.mp3")
End If
End Sub


End Class

فقط باید یه فولدری به نام sonds کنار فایل exe بزارین که فایل های صوتی توش باشه
روی فرم هم دوتا maskedtext و یه media player بزارین حله

نشد کل برنامه رو ضمیمه کنم کدش رو گزاشتم براتون

mostafaaa
سه شنبه 29 مرداد 1387, 18:00 عصر
سلام
کدهاتون رو اصلاح کردم .
اول اینکه اگه روی این خط از کد

Dim Source() As String = {MaskedTextBox2.Text}

یه BreakPoint میزاشتین و مقدارش رو چک میکردین متوجه میشدین که طول اون آرایه به این شکلی که شما بهش مقدار میدی همیشه یکه، واضحتر بگم
این

Dim Source() as String={"Address1,Address2"}
با این

Dim Source() as String={"Address1","Address2"}
برابر نیست
راه حلش هم اینه که از تابع Split استفاده بکنید. که توی کد که اصلاح کردم هستش.
دوم اینکه
متد application.StartupPath خودش یه مقدار String برمیگردونه و لازم نیست که به این شکل نوشته بشه

"""" + Application.StartupPath+ "\sonds\1.mp3"+ " "+ """"

درستش اینجوریه

Application.StartupPath & "\sonds\3.mp3"
و سوم اینکه برای پاک کردن فایل ایجاد شده بعد از پخش شدن میتونی از کد زیر استفاده کنی

If Me.MediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then
IO.File.Delete("c:\new.mp3")
End If
و در آخر اینم کد کاملش . امیدوارم مشکلتون رو حل کنه.

Imports System.IO
Imports vb = Microsoft.VisualBasic
Public Class Form1
Dim PathStr As Object
Class MergeFile
Public Sub MergeFiles(ByVal Destination As String, ByVal ParamArray Files() As String)
File.Copy(Files(0), Destination, True) 'overwrites if exists.
Const ChunkSize As Integer = 1024 * 1024
Dim bw As BinaryWriter = Nothing
Try
bw = New BinaryWriter(New FileStream(Destination, FileMode.Append))
For i As Integer = 1 To Files.GetUpperBound(0)
Dim br As BinaryReader = Nothing
Try
br = New BinaryReader(New FileStream(Files(i), FileMode.Open))
Do While br.BaseStream.Position < br.BaseStream.Length - 1
Dim b(ChunkSize - 1) As Byte
Dim ReadLen As Integer = br.Read(b, 0, ChunkSize)
bw.Write(b, 0, ReadLen)
Loop
Catch ex As Exception
Finally
If Not br Is Nothing Then
If Not br.BaseStream Is Nothing Then br.BaseStream.Dispose()
br.Close()
End If
End Try
Next
Catch ex As Exception

Finally
If Not bw Is Nothing Then
If Not bw.BaseStream Is Nothing Then bw.BaseStream.Dispose()
bw.Close()
End If
End Try
End Sub
End Class
Private Sub Play(ByVal FilePath As String)
If File.Exists(FilePath) Then
Me.MediaPlayer1.URL = FilePath
Else
MessageBox.Show("File not Exists")
End If
End Sub
Private Function NumToText(ByRef Adad As Double) As String
Static sefr_ta_noh(9) As String
Static dah_ta_noozdah(9) As String
Static bist_ta_navado(9) As String
Static sad_ta_nohsad(9) As String
Static hezar_ta_trilion(4) As String

Dim i As Short
Dim tamam_sefr As Boolean
Dim show_balatar_az_hezar As Boolean
Dim adad_vorodi As String
Dim string_temp As String
Dim tabdil As String
Dim Ragham As Short
Dim character As Short
System.Diagnostics.Debug.Assert(Adad > 0, "")

sefr_ta_noh(0) = "صفر"
sefr_ta_noh(1) = Application.StartupPath & "\sonds\1.mp3"
sefr_ta_noh(2) = Application.StartupPath & "\sonds\2.mp3"
sefr_ta_noh(3) = Application.StartupPath & "\sonds\3.mp3"
sefr_ta_noh(4) = Application.StartupPath & "\sonds\4.mp3"
sefr_ta_noh(5) = Application.StartupPath & "\sonds\5.mp3"
sefr_ta_noh(6) = Application.StartupPath & "\sonds\6.mp3"
sefr_ta_noh(7) = Application.StartupPath & "\sonds\7.mp3"
sefr_ta_noh(8) = Application.StartupPath & "\sonds\8.mp3"
sefr_ta_noh(9) = Application.StartupPath & "\sonds\9.mp3"
dah_ta_noozdah(0) = Application.StartupPath & "\sonds\10.mp3"
dah_ta_noozdah(1) = Application.StartupPath & "\sonds\11.mp3"
dah_ta_noozdah(2) = Application.StartupPath & "\sonds\12.mp3"
dah_ta_noozdah(3) = Application.StartupPath & "\sonds\13.mp3"
dah_ta_noozdah(4) = Application.StartupPath & "\sonds\14.mp3"
dah_ta_noozdah(5) = Application.StartupPath & "\sonds\15.mp3"
dah_ta_noozdah(6) = Application.StartupPath & "\sonds\16.mp3"
dah_ta_noozdah(7) = Application.StartupPath & "\sonds\17.mp3"
dah_ta_noozdah(8) = Application.StartupPath & "\sonds\18.mp3"
dah_ta_noozdah(9) = Application.StartupPath & "\sonds\19.mp3"
'bist_ta_navado(0) = ""
'bist_ta_navado(1) = "ده"
bist_ta_navado(2) = Application.StartupPath & "\sonds\20.mp3"
bist_ta_navado(3) = Application.StartupPath & "\sonds\30.mp3"
bist_ta_navado(4) = Application.StartupPath & "\sonds\40.mp3"
bist_ta_navado(5) = Application.StartupPath & "\sonds\50.mp3"
bist_ta_navado(6) = Application.StartupPath & "\sonds\60.mp3"
bist_ta_navado(7) = Application.StartupPath & "\sonds\70.mp3"
bist_ta_navado(8) = Application.StartupPath & "\sonds\80.mp3"
bist_ta_navado(9) = Application.StartupPath & "\sonds\90.mp3"
'sad_ta_nohsad(0) = ""
sad_ta_nohsad(1) = Application.StartupPath & "\sonds\100.mp3"
sad_ta_nohsad(2) = Application.StartupPath & "\sonds\200.mp3"
sad_ta_nohsad(3) = Application.StartupPath & "\sonds\300.mp3"
sad_ta_nohsad(4) = Application.StartupPath & "\sonds\400.mp3"
sad_ta_nohsad(5) = Application.StartupPath & "\sonds\500.mp3"
sad_ta_nohsad(6) = Application.StartupPath & "\sonds\600.mp3"
sad_ta_nohsad(7) = Application.StartupPath & "\sonds\700.mp3"
sad_ta_nohsad(8) = Application.StartupPath & "\sonds\800.mp3"
sad_ta_nohsad(9) = Application.StartupPath & "\sonds\900.mp3"
'hezar_ta_trilion(0) = ""
hezar_ta_trilion(1) = Application.StartupPath & "\sonds\1000.mp3"
hezar_ta_trilion(2) = Application.StartupPath & "\sonds\melyoon.mp3"
hezar_ta_trilion(3) = Application.StartupPath & "\sonds\milyard.mp3"
hezar_ta_trilion(4) = "تريليون"


On Error GoTo vbErrorHandler

adad_vorodi = CStr(Adad)

tamam_sefr = True

For i = Len(adad_vorodi) To 1 Step -1
character = Val(Mid(adad_vorodi, i, 1))
Ragham = (Len(adad_vorodi) - i) + 1

Select Case (Ragham Mod 3)
Case 0
If character > 0 Then
tabdil = sad_ta_nohsad(character) & "," & tabdil
End If
Case 1
show_balatar_az_hezar = True
If i = 1 Then
string_temp = sefr_ta_noh(character)
ElseIf Mid(adad_vorodi, i - 1, 1) = "1" Then
string_temp = dah_ta_noozdah(character)
i = i - 1
ElseIf character > 0 Then
string_temp = sefr_ta_noh(character)
Else
show_balatar_az_hezar = False
If Mid(adad_vorodi, i - 1, 1) <> "0" Then
show_balatar_az_hezar = True
ElseIf i > 2 Then
If Mid(adad_vorodi, i - 2, 1) <> "0" Then
show_balatar_az_hezar = True
End If
End If
string_temp = ""
End If
If show_balatar_az_hezar = True Then
If Ragham > 1 Then

string_temp = string_temp & hezar_ta_trilion(Ragham \ 3)
If tamam_sefr = True Then
string_temp = string_temp
Else
string_temp = string_temp & "," & Application.StartupPath & "\sonds\O.mp3" & ","
End If
End If
tamam_sefr = False
End If
tabdil = string_temp & tabdil
Case 2
If character > 0 Then
If Mid(adad_vorodi, i + 1, 1) <> "0" Then
tabdil = bist_ta_navado(character) & "," & Application.StartupPath & "\sonds\O.mp3" & "," & tabdil
Else
tabdil = bist_ta_navado(character) & tabdil
End If
End If

End Select
Next i

tabdil = UCase(vb.Left(tabdil, 1)) & Mid(tabdil, 2)

EndNumToText:
NumToText = tabdil
'ایجا آدرس به تکست باکس نسبت داده می شود
' MaskedTextBox2.Text = NumToText
PathStr = NumToText
Exit Function

vbErrorHandler:
tabdil = "خطا"
Resume EndNumToText
End Function
Private Sub MaskedTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress
If Asc(e.KeyChar) = 13 Then
Dim a As Double = MaskedTextBox1.Text
'اینجا عدد برای بدست آوردن آدرس به numtotext داده می شود
NumToText(a)
'اینم که کد شما
Dim merge As New MergeFile
Dim SPL As Object = Split(PathStr, ",")
Dim Source() As String = SPL
Dim Des As String = "c:\new.mp3"
merge.MergeFiles(Des, Source)
Play(Des)
End If
End Sub
Private Sub MediaPlayer1_PlayStateChange(ByVal sender As Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles MediaPlayer1.PlayStateChange
If Me.MediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then
IO.File.Delete("c:\new.mp3")
End If

End Sub
End Class