امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
انواع متغیرها
نویسنده پیام
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #9
RE: انواع متغیرها
مبنای ارسال پارامتر با مرجع (Passing By Reference ) در زبان ++C/C به دو شکل انجام میشه :

1- استفاده از pointer ها ( اشاره گر ها )
2-استفاده از مرجع یا همون &

اگرچه در زبان ++C/C این دوتا از نظر ساختار متفاوت هستند ولی تقریبا یک کار رو انجام میدن . نکته مهم اینه که در زبان وی بی ما اشاره گر نداریم ، پس ارسال پارامتر در در وی بی بشکل مرجع فقط یک جور امکان داره اونهم با بکار بردن ByRef .

در مثالی که شما زدی متغیر dwInstance از نوع DWORD_PTR تعریف شده .
اگر دقت کنی از روی نامگذاریه مایکروسافت میتونی راحت پی ببری که یک نوع اشاره گر هست یا نه ! اون PTR که در آخرش نام گذاری شده یعنی که این نوع ، یک pointer یا اشاره گر هست و از طریق ارسال با مرجع منتقل میشه در نتیجه برای تعریف کردن مشابه در وی بی باید از ByRef استفاده کنیم . بطور کلی مایکروسافت داده های مورد استفاده ویندوز رو به شکلی نام گذاری کرده که برنامه نویسان بتونن اشاره گر بودن اونو تشخیص بدن . من میتونم یه شکل کلی ازشون بهت ارائه بدم :

نوع هایی که اولشون حرف P هست ( به معنای Pointer ) مثل PDWORD ، PHANDLE ، PINT
نوع هایی که آخرشون پسوند PTR_ دارند مثله همون DWORD_PTR ( اگر چه این مدل داده ها واقعا اشاره گر نیستند ولی برای عملیات ریاضی روی اشاره گر ها بکار میرن)
نوع هایی که اولشون LP دارند ( به معنای Long Pointer ) مثل LPTSTR ، LPLONG

البته باید بدونیم که در VB 6 ذکر ByRef اجباری نیست چون تمام پارامتر ها به توابع یا ساب روتین ها بصورت default بشکل مرجع ارسال میشن و برای همین ByRef بسیاری اوقات نوشته نمیشه ( اگر هم نوشته میشه واسه مستند سازی و آگاهی برنامه نویسه نه چیز دیگه !!) پس چه اونو ذکر کنیم چه نکنیم هیچ تفاوتی وجود نداره . در طرفی دیگه ذکر ByVal اجباری هست و باید مشخص کنیم کدوم پارمتر رو ما بصورت مقدار ارسال میکنیم .
در زبان ++C/C تمام پارامتر ها بشکل مقدار ارسال میشن بجز آرایه ها ، اشاره گر ها و مرجع ها . برای همینه که در تعریف توابع API در وی بی پارامتر های ByVal زیاد دیده میشن .

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
(آخرین ویرایش در این ارسال: ۱۶-فروردین-۱۳۸۷, ۰۶:۲۵:۰۳، توسط Mamad2003.)
۱۵-فروردین-۱۳۸۷, ۱۹:۳۹:۲۰
ارسال‌ها
پاسخ
تشکر شده توسط : ajlajlajl


پیام‌های داخل این موضوع
انواع متغیرها - توسط ajlajlajl - ۰۶-فروردین-۱۳۸۷, ۱۸:۵۲:۱۹,
RE: انواع متغیرها - توسط Mamad2003 - ۰۷-فروردین-۱۳۸۷, ۰۱:۰۸:۴۵,
RE: انواع متغیرها - توسط ajlajlajl - ۰۷-فروردین-۱۳۸۷, ۱۳:۰۷:۰۰,
RE: انواع متغیرها - توسط Mamad2003 - ۰۷-فروردین-۱۳۸۷, ۱۶:۱۶:۰۴,
RE: انواع متغیرها - توسط ajlajlajl - ۱۴-فروردین-۱۳۸۷, ۱۴:۴۲:۲۳,
RE: انواع متغیرها - توسط Mamad2003 - ۱۴-فروردین-۱۳۸۷, ۲۱:۲۱:۴۷,
RE: انواع متغیرها - توسط ajlajlajl - ۱۵-فروردین-۱۳۸۷, ۱۰:۳۱:۴۶,
RE: انواع متغیرها - توسط ajlajlajl - ۱۵-فروردین-۱۳۸۷, ۱۳:۰۸:۲۷,
RE: انواع متغیرها - توسط Mamad2003 - ۱۵-فروردین-۱۳۸۷, ۱۹:۳۹:۲۰
RE: انواع متغیرها - توسط ajlajlajl - ۱۶-فروردین-۱۳۸۷, ۰۸:۱۷:۳۵,

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS