View Full Version : مبتدی: کار نکردن تابع mcisendstring در جایی به غیر از ریشه درایو
mr-adler
جمعه 18 آذر 1390, 13:46 عصر
سلام
adress = App.Path & "\Bazigar.mp3"
mciSendString "open " & adress & " alias Bazi", 0, 0, 0
mciSendString "play Bazi", 0, 0, 0
من با کدهای بالا یه اهنگ رو تو برنامم اجرا میکنم.اما یه مشکلی هست و اونم اینه که وقتی مسیر برنامه چیزی به غیر از ریشه درایو هستش دیگه انگ پخش نمیشه.اخه این که نشد.دوستان لطفا یه امتحانی بکنید . مثلا برنامه و اهنگ رو توی دکستاپ کپی کنید و اجرا کنید خواهید دید که اجرا نمیشه و لی اگه به یکی از درایو ها ببرید میبینیم که اجرا میشه.
البته نا گفته نماند که وقتی از app.path استفاده میکنم این مشکل رو دارم اگه هم بخوام از app استفاده نکنم با تغییر دادن مکان اهنگ برنامه کار نمیکنه.:ناراحت:
ممنونم.
M.T.P
جمعه 18 آذر 1390, 14:11 عصر
ریشه درایو خودش یک \ آخر مسیر داره ، وقتی برنامه تو ریشه درایو باشه App.Path آخرش \ داره مثلا C:\ حالا یک \ رو هم خودتون گذاشتین میشه دابل اسلش و مسیر اشتباه میشه.
با یک if مقدار App.Path رو باید بررسی کنید به این شکل:
Dim StrAdress As String
If Right(App.Path, 1) = "\" Then
StrAdress = App.Path
Else
StrAdress = App.Path & "\"
End If
StrAdress = StrAdress & "Bazigar.mp3"
mciSendString "open " & StrAdress & " alias Bazi", 0, 0, 0
mciSendString "play Bazi", 0, 0, 0
mr-adler
جمعه 18 آذر 1390, 23:47 عصر
سلام
بسیار ممنونم...
به این موضوع شک کرده بودم و با کد زیر کارو دنبال میکردم:
MsgBox App.Path & "\Bazigar.mp3"
که قبل از پخش متوجه بشم ایا مسیر اشتباهه یا درست.اما با وجود اینکه مسیر درسته باز هم کد کارگر نیست.حتی این کد هم کار نکرد:
Dim StrAdress As String If Right(App.Path, 1) = "\" Then StrAdress = App.Path Else StrAdress = App.Path & "\" End If StrAdress = StrAdress & "Bazigar.mp3" mciSendString "open " & StrAdress & " alias Bazi", 0, 0, 0 mciSendString "play Bazi", 0, 0, 0
اصلا خیلی عجیبه برام.دیگه فکرم به جایی نمیرسه.راستی اینو هم بگم که این مشکل رو با ریجستر کردن ocx ها هم دارم.یعنی تا وقتی که توی ریشه درایو نباشن ریجستر نمیشن(حالا چه به وسیله ران و چه به وسیله کد نویسی برنامه)
راستی کد بالا برای شما جواب داد؟امتحان کردید؟اگه جواب داده دیگه یقینا اشکال از تنظیمات سیستم بنده باید باشه متاسفانه:ناراحت:
میدونید نکته جالبش چیه؟بدون تغییر کد وقتی برنامه+اهنگ رو به ریشه درایو انتقال میدم کار میکنه اما تو پوشه خودش کار نمیکنه....:افسرده:
M.T.P
شنبه 19 آذر 1390, 00:15 صبح
یه نمونه اینجا (http://barnamenevis.org/showthread.php?272115-%D9%BE%D8%AE%D8%B4-wma-%D9%88-mp3) گذاشتم ، تو هرجایی که اجراش کنی ، فایل صوتی رو پخش میکنه.
mr-adler
شنبه 19 آذر 1390, 10:02 صبح
سلامی دوباره....
این سورس رو قبلا گفته بودید دانلود کرده بودم.مشکلات حواس که نمیزاره برای ادم ! یادم رفت که اینجور سورسی هم دارم.
بالاخره مشکل حل شد با دوتا " یا همون Chr(34):
adress = Chr(34) & App.Path & "\Bazigar.mp3" & Chr(34)
حالا یه سوال اساسی باقی میمونه.وقتی چیزی داخل این علامت دو علامت "" قرار بگیره تبدیل به رشته میشه و دیگه تغییر نمیکنه.app.path ممکنه هر لحظه تغییر کنه پس چطوری ممکنه؟منظورم اینه که ایا جای دیگه ای هم دیدید app.path داخل این علایم قرار بگیره.منظورم دقیقا تفاوت این دو مورده:
1.
Print "app.path"
2.
Print app.path
که اولی یک کلمه رو چاپ میکنه اما بعدی ادرس برنامه رو.پس اینجا چه اتفاقی افتاده؟!
و اما سوال مهم تر (ببینم کی جواب میده! :لبخند:) که چرا در ریشه درایو کد(app.path) بدون "" جواب میداد؟:متفکر:
meys34
شنبه 19 آذر 1390, 10:49 صبح
قدیم ندیما که MSDOS داشتیم اسم فولدر ها محدودیت داشت یعنی یه تعداد خاص کاراکتر قبول میکرد
اگر بزرگتر از این تعداد بود، اسم به صورت خلاصه نمایش داده میشد؛ یعنی اینجوری:
Name~1.exe
یه محدودیت بد و البته مهم دیگه هم داشت این بود که نمیتونستی از Space در اسم فولدر یا فایل استفاده کنی یعنی Program Files قابل قبول نبود
باید یا مینوشتی ProgramFiles یا Program_Files ... یا اصلا یه اسم دیگه انتخاب میکردی...
تو ویندوز 95 به بعد اومدن این قابلیت رو اضافه کردند و برای اینکه اسامی با command-line اشتباه نشه اجبار به استفاده از Chr$(34) بوجود اومد ... فقط موقع استفاده باید حواست بهش جمع باشه که اشتباه نشه...
مثال هایی از موارد استفاده غلط:
C:\Program Files\Microsoft Visual Studio\VB98\VB6.exe
C:\Program Files\Microsoft Visual Studio\VB98\VB6.exe E:\Project1.vbp
"C:\Program Files\Microsoft Visual Studio\VB98\vb6.exe" E:\VB barnamenevis\Project1.vbp
C:\Program Files\Internet Download Manager\IDMan.exe /onboot
موارد صحیح:
"C:\Program Files\Microsoft Visual Studio\VB98\vb6.exe"
"C:\Program Files\Microsoft Visual Studio\VB98\vb6.exe" E:\Project1.vbp
"C:\Program Files\Microsoft Visual Studio\VB98\vb6.exe" "E:\VB barnamenevis\Project1.vbp"
"C:\Program Files\Internet Download Manager\IDMan.exe" /onboot
باید توجه داشت که:
تا وقتی که Space در اسامی وجود نداره عدم استفاده از "" مشکلی ایجاد نمیکنه
پس متوجه شدید که چرا :
که چرا در ریشه درایو کد(app.path) بدون "" جواب میداد؟
تو حالت اخیر اگه اسم فایل (Bazigar.mp3) حاوی Space باشه مثلا ("barnamenevis Bazigar.mp3") دیگه حتی تو ریشه درایو هم
بدون "" (منظورم همون کاراکتر 34 هست) برنامه کار نمیکنه؟؟؟؟؟؟ ....:شیطان::شیطان::شیطان::شیطا ::شیطان::شیطان::شیطان::شیطان: :شیطان::شیطان::شیطان:
mr-adler
پنج شنبه 24 آذر 1390, 22:50 عصر
سلام
پس متوجه شدید که چرا :
بله.فکر کنم...
ببخشید که یکم دیر جواب دادم حقیقتش زیاد متوجه نمیشدم اما الان فکر کنم که دیگه فهمیدم:خجالت:
فقط یه سوال دیگه داشتم:
تا وقتی که Space در اسامی وجود نداره عدم استفاده از "" مشکلی ایجاد نمیکنه
به جز اسپیس ایا کاراکتر دیگه ای هم هست که مشکل ایجاد کنه؟
محسن واژدی
پنج شنبه 24 آذر 1390, 23:14 عصر
به جز اسپیس ایا کاراکتر دیگه ای هم هست که مشکل ایجاد کنه؟
سلام
خیر، تنها در صورتیکه فاصله ای در مسیر وجود داشته باشد مشکل ایجاد میشود که آنهم همانطور که دوستان اشاره کردند با قرار گیری مسیر مابین "" برطرف میشود، بجز این سایر کاراکتر ها مشکلی ایجاد نمیکنند
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.