مشاهده نسخه کامل
: مقدار دهي به value از نوع dword تو رجيستري از طريق vb
Payman_62
20-03-2006, 01:48
من ميخوام از تو vb يه مقدار از نوع dword بسازمو مقداردهي كنمش. ولي هر مقداري ميدم تو رجيستري مينويسه invalid dword value حالا چه طور بايد بهش مقدار بدم كه invalid نشه؟
Payman_62
20-03-2006, 18:55
جوابو گير اوردم. بايد با يه متغير از نوع long مقدار بديم.
Payman_62
02-04-2006, 03:46
جواب كامل تر.
مشكلم رو هفته پيش حل كردم. گفتم اينجام راه حلشو بگم تا تاپيك بي جواب نمونه و اگه كسي موقع سرچ اين تاپيك رو خوند جواب بگيره.
مشكل بر ميگرده به تعريف تابع RegSetValueEx . رفتم دقيق پارامترهاي اين تابع رو بررسي كردم.تو API Text Viewer ديدم پارامتر يكي مونده به آخر يعني lpData از نوع Any تعريف شده. ميدونيد كه Any هر مقداري از هر نوعي رو ميگيره و معتبر بودن مقدار هم چك نميشه. اينه كه خيلي مواقع مثل اين مورد اشتباه پيش مياد.
من براي Value از نوع Reg_SZ بايد مقدار String ميفرستادم و براي Reg_DWORD مقدار عددي مثل Integer . اگر پارامتر lpData با Any تعريف ميشد Value هاي از نوع Reg_SZ درست مقدار دهي نميشدن. براي همين مجبور شدم دو بار تابع رو تعريف كنم .
يك بار lpData رو از نوع String
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و يك بار هم از نوع Integer تعريف كردم. البته lpData همون Any هم باشه با مقادير عددي مشكلي نداره و كار درست پيش ميره.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توجه كنيد در تابع اول كه lpData رو از نوع String تعريف كرده اين پارامتر ByVal تعريف شده ولي در تابع دوم ByVal براي اين پارامتر وجود ندارد.
اون تابعي كه lpData در آن از نوع String هست Public هست و هر جا RegSetValueEx صدا زده بشه lpData از نوع String خواهد بود.(به جز ماژولي كه اون يكي تابع RegSetValueEx توش تعريف شده). اون تابعي هم كه lpData از نوع Integer هست تو يه ماژول ديگه هست و Private هست. من تو اين ماژول يه تابع Public نوشتم كه Value از نوع Reg_DWORD ايجاد ميكنه و چون تابع RegSetValueEx كه در اين ماژوله براي تابعي كه من نوشتم محلي حساب ميشه از همين تابع محلي كه Private هست استفاده ميكنه نه اوني كه Public هست. همان طور هم كه گفتم lpData در اين تابع محلي از نوع Integer هست پس ميتونه به Value از نوع Reg_DWORD مقدار بده و چون تابعي كه من نوشتم Public هست تو كل برنامه ميشه صداش زد تا Value از نوع Reg_DWORD ايجاد كنه.
به همين سادگي مشكل حل شد.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.