View Full Version : حرفه ای: سوالي در مورد توابع api
just4froum
شنبه 07 آبان 1390, 20:26 عصر
با سلام يك سوال مدت هاست فكرمو مشغول كرده :
براي مثال تابع زير اتصال به اينترنت را بررسي كرده و مقدار 1 يا 0 را بر مي گرداند.
Private Declare Function InetIsOffLine Lib "url.dll" (ByVal dwFlags As Long) As Long
خوب حالا مگه مقدار برگشتي 1 يا 0 نيست پس چرا نوع مقدار برگشتي long است ؟؟؟
با تشكر ا
محسن واژدی
چهارشنبه 11 آبان 1390, 11:27 صبح
سلام
قبل از اینکه سیستم های 64 بیتی به میدان بیایند، از سیستم عامل های 32 بیتی استفاده میشد. 32 بیت با Long معادل است. ممکن است از دلایل بکارگیری نوع داده Long این موضوع باشد،
اگر به روزهایی برگردیم که از سیستم عامل های 16bit استفاده میشد میبینیم که مقادیر برگشتی توابع Integer است. همچنین اگر توجه کرده باشد اکثر dllهای 32 بیتی برای تمیزداده شدن از نسخه های 16 بیتی عدد 32 را در نام خود دارند
موفق باشید
AMIBCT
چهارشنبه 11 آبان 1390, 12:12 عصر
در فراخوانی توابع به صورت stdcall که شیوهی استاندارد در فراخوانی توابع ویندوز است
مقدار بازگشتی تابع در رجیستر EAX ذخیره میشود
این رجیستر هم یک رجیستر 32 بیتی و عددی است
بنابراین مقدار بازگشتی تمام توابع API ویندوز عددی 32 بیتی یا Long در Visual Basic است
مقادیر بازگشتی دیگر هم در ظاهر شکل دیگری هستند و از همین نوع تبدیل میشوند
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.