تابع GetLogicalDriveStrings
هدف این تابع دیسک درایوهای موجود در سیستم را برمی گرداند .
فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .
function GetLogicalDriveString ( nBufferLength: DWORD; lpBuffer: PAnsichar ): DWORD;
پارمترها
nBufferLength : این پارامتر از نوع عددی بوده و مقدار فضای لازم برای ذخیره سازی نام دیسک درایو را مشخص می کند .
lpBuffer : این پارامتر از نوع رشته بوده و نام دیسک درایو در این پارامتر قرار می گیرد .
توضیح
در پارامتر nBufferLength همانطوری که در مثال خواهید دید از تابع SizeOf برای بدست آوردن فضای مورد نیاز متغییر مورد نظر استفاده شده است .
lpBuffer : این پارامتر نیاز به توضیح بیشتری دارد . لازم به ذکر است که نام دیسک درایوها به صورت زیر در این متغییر قرار می گیرند :
A:\<null> B:\<null> C:\<null> D:\<null>
همانطور که می بینید جداکننده هر رشته یک <null> می باشد ، برای چاپ با استفاده از نام درایوها به صورت عادی نمی توان عمل کرد زیرا فقط A: چاپ می شود . دلیل آن نیز مشخص است چون تابع به متغیر <null> می رسد گمان می کند که رشته به پایان رسیده و دیگر جلو نمی رود . برای رفع این مشکل همانطور که در مثال می بینید کارهایی صورت گرفته است که توضیح داده می شود :
در مثال تابعی به نام GetDriveLogic تعریف شده است . در این تابع یک متغیر از نوع آرایه کاراکتری تعریف شده است که در حقیقت نام دیسک درایوها را در آن قرار می دهیم .
Drv : array [0..255] of char ;
متغیری هم به نام Temp
تعریف کرده ایم که در حقیقت خروجی تابع می باشد ، در اینجا از یک روش بسیار ساده استفاده شده است . نام دیسک درایو ها به شکل زیر در آرایه Drv ذخیره می شوند : A : \ #0 C : \ #0 D : \ #0#0
همانطور که می بینید در تمامی خانه های بخش پذیر به 4 مقدار نام دیسک قرار دارد ، پس با استفاده از یک شرط ساده در واقع آنها را بر می داریم : if (i mod 4) then …
If بعدی در واقع رسیدن به پایان رشته را مشخص می کند : if Drv[i]=#0 then …
یعنی اگر خانه بخشپذیر به 4 برابر با مقدار null یا صفر باشد ، پس دیگر درایوی وجود ندارد . در پایان متغیر Temp به شکل زیر است :
خروجی
تابع اگر تابع کار خود را به درستی انجام دهد تعداد کاراکترهایی را که در رشته کپی شده است را بر میگرداند و اگر تابع کار خود را ناقص انجام دهد مقدار صفر را بر میگرداند .
پی نوشت : مثل فوق الذکر پس از معرفی چند تابع دیگر بیان خواهد شد .