آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

توابع API

توابع API در واقع توابع داخلی ویندوز هستند.به وسیله توابع API ویندوز ما میتونیم هرکاری که در ویندوز قابل انجام است در ویژوال بیسیک و در برنامه های خودمون انجام دهیم.کارهایی که ویندوز انجام میده مثلا فایل های صوتی با فرمت های گوناگون رو پخش میکنه - باعث میشه که ما به اینترنت متصل بشیم باعث میشه که کارهای گرافیکی قدرتمند بکنیم - باعث میشه که فایلها رو فشره کنیم و هزاران کار دیگه. تمام روتین های API ویندوز در درون کتابخانه های با لینک دینامیک یا (DLL (Dynamic Link Library قرار دارند. چون این فایل ها به همراه ویندوز عرضه و نصب میشوند در تمامی رایانه هایی که با سیستم عامل ویندوز کار میکنند وجود دارند .

از جمله DLL های مهم و پرکاربرد ویندوز میتوان به DLL های زیر اشاره کرد:

User32.DLL

GDI32.DLL

Kernel32.DLL

ما برای استفاده از توابع API باید آنها را فراخوانی کنیم.برای فراخوانی یک روتین API ازدستور Declare استفاده میکنیم که شکل کلی این دستور به صورت زیر است:

Private Declare [Sub or Function] procName Lib "LibraryName" [Alias "asAlias"]                    'xxx

در فراخوانی یک تابع API ابتدا آن را به صورت Private یا Public بعد Declare مینویسیم سپس میگوییم که ساب روتین(Sub) باشد یا فانکشن (Function) . کلمه procName نام تابعی است که ما میخواهیم از آن استفاده کنیم و LibraryName نام کتابخانه DLL ای است که این تابع در آن کتابخانه است.

شما برای مشاهده توابع API ویندوز میتونین با رفتن به Start و AllPrograms و Microsof VB6 و بعد رفتن به شاخه Microsof VB6 Tools و اجرا کردن برنامه API Viewer  توابع API ویندوز رو مشاهده کنین.

برای اینکه با توابع API بیشتر آشنا بشین یک مثال ساده و زیبا براتون میزنم.

نمونه برنامه ۱: یک پروژه استاندارد باز کنید و روی فرم خودتون یک عدد دکمه فرمان(Command1) قرار بدین سپس از منوی View در ویژوال بیسیک گزینه Code را بزنید با این کار پنجره کدها باز میشود .در قسمت General پنجره کد دستورات زیر را بنویسید:

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

به علت اینکه مرورگر اینترنت شما نمیتونه کل این تابع رو در یک خط نمایش بده ممکنه که ۲ یا ۳ خط بشه اگه مشکلی پیش اومد بگین تا سورس این برنامه رو بزارم.

بعد از پنجره کدها خارج شوید و روی دکمه فرمانی که روی فرم گذاشتین دوبار کلیک کنید و سپس کدهای زیر رو بنویسید:

Private Sub Command1_Click

MciSendString "Set CDAudio Door Open" ,0 ,0 ,0

End Sub

بعد برنامه رو اجرا کنین و روی دکمه فرمان خودتون کلیک کنید تا نتیجه کار رو ببنید . بعد از کلیک شدن دکمه فرمان باید سی دی رام شما بیرون بیاد.اگر مشگلی پیش اومد بگو تا راهنماییت کنم.

شما میتونین برای بستن در سی دی رام خودتون در روال کلیک دکمه فرمان به جای عبارت Open عبارت Closed رو بنویسین.

چطور بود حالی بردینا.

API های بسیار زیادی وجود داره که اگر یه سایت بخواد دونه دونه توضیحشون بده فقط بیشتر از یک ماه تایپ کنه . اما کلیه API های ویندوز به دردخور نیستند و باید دروشون ریخت و فقط تعداد اندکی از آنها برای استفاده در ویژوال بیسیک به صرفه است

دستورات شرطی در ویژوال بیسیک

اسم شرط با خودشه و همون طور که از اسمش معلومه باعث محدودیت های میشود. مثلا ما به کمک آنها میتوانیم دیکشنری های قدرتمند و پر سرعت بسازیم یا برای برنامه خود پسورد و یوزر قرار بدیم و خیلی کارهای دیگه که در این مقاله نمیگنجه.

انواع دستورات شرطی عبارتند از :

If ...............end if  ,      If ..............Else ................. end if     , Select Case  .............End Select

, غیره که اینهایی را که نام برده شد پرکاربرد ترین و مهمترین آنها هستند.

الف- IF ....End IF :

دستور شرطی If ... End if  که شکل کلی آن به صورت زیر است:

 then  شرط  If

دستور یا دستورات

End If

مثال۱ :

 if Ali = 123456789 then

Ali = 0

end if

در این مثال هر وقت مقدار متغیر Ali برابر با ۱۲۳۴۵۶۷۸۹ شد متغیر را برار ۰ کند.

ب - If ... Else ... End If :

این نوع دستور شرطی همانند دستور شرطی الف است فقط با این تفاوت که با  نوشتن کلمه Else (به معنی در غیر این صورت ) ما میتوانیم در صورت تحقق نیافتن شرطمان کار دیگری انجام دهیم.

شکل کلی دستور:

Then شرط If

دستور یا دستورات

Else

دستور یا دستورات

End If

مثال۲ -

If Ali = 123456789 then

Ali = 0

Else

Ali = 10

End if

که در مثال بالا ما میگوییم که اگر متغیر Ali برابر ۱۲۳۴۵۶۷۸۹ شد متغیر را برار ۰ قرار دهد و در غیر این صورت ( هر وقت متغیر Ali برابر ۱۲۳۴۵۶۷۸۹ نشد) مقدار متغیر را برابر ۱۰ کند.

امیدوارم با توضیحات نه چندان خوب من تا اینجا خوب پیش رفته باشید. راستی یه جوک یادم اومد:

یه روز یه ترکه میره ماه عسل زنشو یادش میره با خودش ببره.

ج- دستور شرطی Select Case ... End Select

در این نوع دستور شرطی ما یک یا دوتا شرط قرار نمیدیم بلکه میتوانیم بی نهایت شرط قرار بدیم و برای برنامه خود محدودیت های بیشتری قرار بدیم. شکل کلی دستور شرطی (ج) در زیر آمده است.

 

متغیر مورد نظر که شرط روی آن صورت میگیرد  Select Case

مقدار متغیر  Case

دستور یا دستورات

...

End Select

که در دستور بالا Select Case کلمه کلیدی شرط است .

۰ متغیر مورد نظر که شرط روی آن اعمال میشود : این عبارت میتواند یک عبارت عددی یا متنی باشد.

۰ مقدار متغیر : مقداری است که اگر متغیر دارای آن شود دستورات زیرش اجرا میشود.

۰ دستور یا دستورات : تمامی اعمالی که شما میخواهید برنامه انجام دهد.

 

شاید درک این نوع دستور شرطی برای کسانی که مبتدی هستند مشکل باشد ولی با یک نمونه برنامه ومثال سعی میکنم به بهترین روش آموزش بدم.

 

مثال ۱ :

Dim Ali as String

Select Case Ali

Case Hello

"سلام" MsgBox

Case Welcome

"خوش آمدید" MsgBox

Case Air

"هوا" MsgBox

End Select

 

تحلیل کد برنامه : در مثال ۱ ابتدا ما یک متغیر رشته ای به نام (Ali) تعریف کردیم. در خط بعد شرط خود را اعمال کردیم بر روی متغیر (Ali) یعنی اینکه هر گاه مقدار متغیر ما برابر با چیزی که ما پیش بینی کرده ایم شود دستورات ما باید اجرا شوند. در خط سوم گفتیم که هر وقت مقدار متغیر Ali برابر Hello شد برنامه برای کاربر پیغامی نمایش دهد که پیغام آن "سلام" (معنی کلمه Hello) باشد. و بعد از آن هم به همین صورت دو مقدار دیگر برای متغیر پیش بینی کردیم و معنی آنها را نیز برای کاربر پیش بینی کردیم.(مانند یک دیکشنری انگلیسی به فارسی ساده.)

حلقه های تکرار

حلقه های تکرار در ویژوال بیسیک بسیار مهم هستند و باعث میشوند علاوه بر نوشتن برنامه های حرفه ای و قدرتمند تعداد خطوطی که ما میخواهیم به عنوان کد برنامه بنویسیم به مقدار چشم گیری کاهش پیدا کند و در نوشتن برنامه وقت کمتری صرف شود.

ما در این بخش تعدادی از حلقه های تکرار (که از همه پر کاربرد تر و مهمتر هستند ) را معرفی میکنیم.

انواع حلقه های تکرار عبارتند از : For ... Next , Do ....Loop , while ... Wend

که مهمترین آنها حلقه For ... Next است.

 

الف- حلقه For ... Next

با استفاده از این حلقه ما میتوانیم تعدادی از دستورات را به تعداد مشخص تکرار کنیم مزیت این حلقه این است که ما میدانیم دستوراتمان چند بار باید تکرار شوند . حلقه For مانند یک کنتور عمل میکند و تعداد دفعاتی که دستورات داخل حلقه اجرا میشود را می شمارد.

شکل کلی حلقه For به صورت زیر است :

 

عدد انتها To عدد شروع = متغیر شمارنده For

دستور یا دستورات

[متغیر شمارنده] Next

 

۰ متغیر شمارنده : یک نوع متغیر عددی (Integer Or Long Or ..) است که تعداد شمارش را در خود نگه میدارد.

۰ عدد شروع و عدد انتها : عدد هایی هستند که نشان میدهند حلقه ما از چه عددی شروع به چرخش کند تا به یک عدد که عدد انتها است برسد.(مثلا:  For X = 1 To 100 که متغیر X از یک شروع به شماره اندازی میکند تا صد.)

۰ دستور یا دستورات : دستوراتی هستند که در طی حلقه به مقدار عدد ابتدا تا حدد انتها اجرا میشوند.

 

نمونه برنامه ۱ :  در این قسمت من برای شما پروژه عملی را مینویسم تا مطالب را بهتر درک کنید.

برنامه ویژوال بیسیک را باز کنید و در پنجره New Project  کلید اینتر را فشار دهید (یا Open را بزنید).

یک Text Box و یک Command Button بر روی فرم خود قرار دهید و آنها را به سلیقه خودتان روی فرم مرتب کنید.

روی Command1 که خودتان روی فرم قرار داده اید ۲ بار کلیک کنید تا پنجره کد(پنجره VeiwCode) باز شود. بعد زیر () Sub Command1_Click جملات پایین را بنویسید.

Dim I as integer

For I = 1 to 100

Text1.Text=Text1.Text + str(i)

Next

 

تحلیل کد برنامه:  در خط اول ابتدا متغیری به نام "I" را از نوع عدد صحیح تعریف کردیم. در خط دوم حلقه خود را بر اساس متغیر I شروع کردیم و گفتیم که دستورات ما باید ۱۰۰ با اجرا شود ( از ۰ تا ۱۰۰). در خط سوم با نوشتن دستورات گفتیم که برنامه برای ما اعداد بین ۰ تا ۱۰۰ را برای ما نمایش دهد (در TextBox نمایش داده شود.) و در خط آخر نیز حلقه خود را به اتمام رساندیم.

 

ب- حلقه Do ... Loop

این حلقه نیز یکی از حلقه های مهم ویژوال بیسیک است و مانند حلقه For ... Next عمل میکند با این تفاوت که تعداد دفعات اجرایی دستورات معلوم نیست و با توجه به یک شرط که اگر True باشد دستورات را تکرار میکند و اگر False باشد می ایستد و دیگر دستورات را تکرار نمیکند.

 

شکل کلی حلقه Do ... Loop به صورت زیر است:

 

شرط Do

جملات

[Exit Do]

جملات

Loop