الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Dim ومشكلة صغيرة في صوت للفورم

مغلق
بدأه emi في 23 مايو 2005 · 8 رد · 710 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا .. انا عملت برنامج واكتمل .. ولكني لاحظت شيئ في البرنامج .. اولا في الكود .. اكتشفت اني لم استخدم Dim مع كل المتغيرات ولكن مع ذلك البرنامج يعمل .. ما هي فائدتها ومتى استخدمها او استغني عنها ...

ثانيا .. عندما تكون الاجابة خطأ يخرج فورم فيه ملاحظة ان الجواب خطأ يصاحب الفورم صوت .. كتبت الكود التالي في الفورم ولكن الصوت يخرج في اول مرة يتم استدعاء الفورم .. ولا يتكرر خروج الصوت مرة اخرى ..

Dim x As Integer

x = sndPlaySound("C:\bad.WAV", SND_ASYNC)

واخيرا ...

ما الفرق بين استخدام 1 او 9 او SND_ASYNC وما هي الخيارات الاخرى

ارجو ان اجد الجواب الشافي ... مع الشكر :D :D

#2

السلام عليك

بالنسبة لـ Dim تستخدم لتعريف المتغير و As لتحديد نوعيته (Integer, string, ...)

يمكن الاستغناء عن هذه المرحلة، لكن Visual Basic يعرف هذا المتغير ويحدد نوعيته كـ Variant وكما نعلم هذا النوع من المتغيرات يتسع لأي نوع لكنه في المقابل يستهلك كما كبيرا من الذاكرة، فكلما عرفنا المتغير وحددنا نوعيته بما يتناسب مع القيم التي سيستقبلها كان أفضل وأسرع.

بالنسبة للصوت فالدالة SndPlaySoud تستدعى عند فتح الفورم Form_Load ولا يمكن استدعاءه من جديد إلا بإغلاق الفورم وفتحه مجددا.

ChoclatB0y

#3

مرحبا .. شكرا على الرد ولكن بالنسبة للصوت .. هل يعتبر form.hide اغلاق للفورم ام انه فقط اخفاء له .. لاني كما ذكرت كلما استدعيت الفورم فان الصوت لا يعمل الا في المرة الاولى وقد استنتجت من ذلك انه يوجد كود يعمل لاغلاق الفورم وليس لاخفائه .. هل استنتاجي صحيح .. وما هو الكود اذا كان صحيح .. او خطا

#4

خلااااص لقيت الحل .. لازم انهي الفورم ب unload me وبعدين كل مرة بستدعي حيطلع الصوت

#5
اقتباس
مرحبا .. انا عملت برنامج واكتمل .. ولكني لاحظت شيئ في البرنامج .. اولا في الكود .. اكتشفت اني لم استخدم Dim مع كل المتغيرات ولكن مع ذلك البرنامج يعمل .. ما هي فائدتها ومتى استخدمها او استغني عنها .

ال VB لانه في الاساس Scripting Language فتعريف الvariables غير مهم و اذا استخدمت اي variable بدون تعريف فسوف يتعامل معه على انه من النوع variant

و لاجبار الVB على التحقق من الvariables اذا كان تم تعريفها ام لا

اضف هذا السطر في اول البرنامج

Option Explicit

سلام

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#6

Dim x As Integer

x = sndPlaySound("C:\bad.WAV", SND_ASYNC)

واخيرا ...

ما الفرق بين استخدام 1 او 9 او SND_ASYNC وما هي الخيارات الاخرى

why we declare it as integer ??.... and in the exe function we declare it as long

#7

السلام عليكم ورحمة الله وبركاته

أختنا الفاضلة

أرد عليك من كتاب الأستاذ جمال عمارة (إلى القمة مع الفيجوال بيسك حتى الإصدار 3) ص 267 الطبعة الثانية 1996– دار الكتب العلمية للنشر

وهو أفضل ما قرأت فى هذا الموضوع رغم قدم الإصدار

اقتباس
SND_SYNC =  0 = لن يعود الإجراء إلى برنامجك حتى ينتهى عزف الملف

SND_ASYN=  1 = سيعود الإجراء مباشرة بعد عزف الملف

SND_NODEFAULT= 2 =إذا لم يجد الملف المطلوب سيعود بدون عزف الصوت الافتراضى

SND_LOOP= 8 = سيعاد عزف ملف الصوت بصورة متكررة حتى تطلب إيقافه، ويجب أن تختار SND_ASYN أيضا.

&H10=SND_NOSTOP =  إذا كان هناك ملف صوت آخر يٌعزف سيعود الإجراء بخاطئ بدون عزف الملف الجديد

ودمج رقمين من هذه الأرقام سيعطى تأثر الرقمين أى أن 3= 1+2 ، 9= 1+ 8

والجدير بالذكر أن استخدام الدالة sndPlaySound لن يعمل إلا بعد الإعلان عنها فى قسم الإعلانات العامة

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

أما بخصوص لماذا أعلنا عنها كـ Integer فمن رأيى أن هذا ليس سليما والأفضل الإعلان عنها كـ Long لكى لا يحدث Narrowation

والله من وراء القصد وهو يهدى السبيل

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#8

أختي أقترح عليكي بالنسبة للصوت أن تستخدمي أداة MICROSOFT MULTIMEDIA CONTROL

(MICROOFT MMCONTROL) وكل ما ينضغط الزر تكتبي التالي في كود الزر

"mmcontrol1.command = "open

"mmcontrol1.command = "play

وهكذا يمكنك أختي التحكم الكامل بتشغيل الصوت في أي وقت

وشكراً لكم جميعاً

تحياتي (h)

من كان في حاجة أخيه كان الله في حاجته

_______________________________________________________________

الآن سجل الأصوات الصادرة عن الجهاز مع برنامج TOTAL RECORDER

اجعل صورتك الرمزية متحركة

#9

شكرا .. الجواب شافي وكامل ... وان شاء الله تحسب في ميزان حسانتكم

هذا الموضوع مغلق.

مواضيع مشابهة