صفحه 1 از 6 12345 ... آخرینآخرین
نمایش نتایج: از شماره 1 تا 16 , از مجموع 85

موضوع: آموزش گام به گام ویژوال بیسیک6.0

  1. #1
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    آموزش گام به گام ویژوال بیسیک6.0

    آموزش گام به گام ویژوال بیسیک6.0
    با سلام خدمت دوستان قرار است که در این تایپک برای دوستان آموزش گام به گام ویژوال بیسیک را بگزارم.
    از مبتدی تا حرفه ای

  2. #2
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    آشنایی با ویژوال بیسیک 6
    تاریخچه ویژال بیسیک.
    با شناختی که از تاریخچه ویژوال بیسیک بدست می آورید راحت تر می توانید از آن استفاده کنید.
    شرکت مایکروسافت ویژوال بیسیک را براساس یک زبان برنامه نویسی به نام بیسیک که برای مبتدیان نوشته شده است ساخت.
    زبان ویژوال بیسیک بیشتر از 35 سال به اشکال مختلف رایج بوده. در واقعطراحان این زبان می خواستند یک زبان برنامه نویسی برای استفاده مبتدیانطراحی کنند.برنامه نویسان جدید می توانند با استفاده ازبیسیک به سرعت بهشرع برنامه نویسی های حرفه ای با زبان های cobol .fortran . assembler
    در مقایسه به بیسیک کار بیشتری نیاز داشت.
    طبیعت بصری ویژوال بیسیک
    دیدید که ویژال بیسیک 6 چیزی بیشتر از یک زبان برنامه نویسی است. ازویژوال بیسیک در نام آن visualبه معنای بصری یا محیط نمایشی . است.
    کار با ویژال بیسیک 6
    در اولین بار که برنامه را باز می کنید با پنجره new project روبه رو می شوید در این قسمت
    نوع فورم خود را انتخاب کرده ماننده activex|standardو....
    این پنجره شامل 3 قسمت بوده
    New:در این پنجره امکان انتخاب فورم مورد نظر شما امکان پذیر می باشد.
    Existing:در این پنجره امکان انتخاب project های مختلف که در مکانهای مختلف ذخیره یا... امکان انتخاب می باشد.
    Recent:در این قسمت هر projectرا که ذخیره می کنید به صورت دسته ای جمع می شود حالا یک فایلی
    در درایو Dباشد حالا چه در درایو c.
    DON.T SHOW THIS DIALOG IN THE FUTURE
    این قسمت جلو گیری از باز شدن پینجره NEW PRIJECT می باشد.
    HELP:از این قسمت وقتی امکان استفاده می باشد که نرم افزار MSDN را نصب کرده باشید.
    معرفی قسمت های بیسیک.
    نوار ابزار:TOOLBAR:نوار ابزار VB زیر منو قرار دارد. ویژال بیسیک کلا چهار نوار ابزار دارد:
    STANDARD:این نوار ابزار زیر منو ظارهر است و پیش فرض است.
    DEBUG:وقتی از ابزارهای رفع اشکال برای ردیابی و اصلاح اشکالات استفاده می کنید. این نوار ابزار ظاهر می شود.
    EDIT:این نوار ابزار برای تنظیم کردن اشیاء بر روی فرم می باشد
    FORM EDITOR:این نوار ابزار برای تنظیم کردن اشیاء بر روی فرم می باشد.
    جعبه ابزار:TOOLBOX:
    در این پنجره تمامی شئعی های مختلف برای کار بر روی فرم هستند و حتا امکان اضافه کردن به این پنجره ها می باشد.
    پنجرهPROJECT:در این پنجره فرم های انتخبی شما با هر گروه و هر فرم مشخص شده است.
    پنجرهPROPERTISE:
    این پنجره امکان تنضیمات لازم برای هر شیئی را مشخص می کنید.
    پایان قسمت اول

  3. #3
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    قسمت دوم
    ساخت اولین برنامه
    برای درک آسان بودن نرم افزار بیسیک
    الان می خواهم برایتان یک برنامه ساده بنویسم که فقط با چند خط ساده نوشته شده است .
    چون الان تازه اول کار هستیم از توابع و کارهای دیگرش شروع نمی کنم.
    ابتدا 2 عدد Taxtboxگزاشته از جعبه ابزار
    کد زیر را در Text1 قرار داده.
    If Text1.text="majid" Then
    Text2.text="rahimi"
    End If
    کد بسیار راحتی بود.
    خط اول گفتیم که اگر در Text1 نوشتند Majid
    د خط دوم نوشتیم در Text2 بنویسد Rahimi
    و در آخر گفتیم پایان
    درک کد بالا باید آسان باشد.
    ما از دستور If استفاده کردیم که در درسهای آینده خواهم گفت.
    دستور بالا يك آموزش بود براي اينكه به شما نشان بدهيم كه ويژوال بيسيك چه قدر آسان مي باشد.

  4. #4
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    قسمت دوم
    معرفی بری فراخوانی کامپننت ها یا شیئی ها که در قسمت toolbar میتوانید دید.
    البطه خودتان هم می توانید چنین شیئی یا کامپوننت های بسازید ولی الان وقتش نیست در قسمت های بعدی آموزش می دهم.
    با زدن کلید ctrl+t یا از پنجره projectبر روی coomponntes کلیک کرده .
    پنجره componntes قابل مشاهده است. پنجره control کنترل ها یا کامپوننت های از قبل تعریف شده برای کار است که با کلید بر روی هر کدام اعمال خواصی را انجام می دهد.
    و با کلیک بر روی browse..امکان انتخاب از داخل هارد را امکان پذیر می باشد.
    فرمت این کامپوننت های ocxمی باشد.
    insertabel قسمت مخصوص کامپوننت های برنامه های مختلف می باشد . مانند ماکرومدیا فلش و.....
    که با انتخاب هر کدام می توانید مثالا می خواهید یک فایل فلش را در برنامهه خود بگزارید. به وسیله این کامپوننت های امکان پذیر است.مانند گزاشتن فیلم. صدا. تصاویر متحرک و ...... . . . .
    که با انتخاب هر کدام در کنار toolbar نمایان می شود
    ادامه دارد قسمت دوم ادامه دارد

  5. #5
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    کار با فايل در ويژوال بيسيک - بخش اول
    مقدمه

    بعلت عدم وجود اشاره گر در ويژوال بيسيک عمليات کار با فايلها در آن نسبتاً ساده می باشد .
    بطور کلی فايلها بر دو نوع هستند :
    1 - فايلهای متنی Text File : اين فايلها فقط شامل کاراکترهای اسکی و برخی کاراکترهای خاص مانند انتهای خط و انتهای فايل هستند .
    ۲ - فايلهای باينری Binary File : شامل هر نوع کاراکتری می توانند باشند و کاربردهای گسترده ای دارند مانند بانک های اطلاعاتی ، فايلهای اجرائی ، فايلهای گرافيکی و غيره
    ويژوال بيسيک می تواند با هر دو نوع فايل کار کند .

    چگونگی باز کردن فايلها

    قبل از اينکه بتوان عمليات ورودی/خروجی را روی يک فايل انجام داد ابتدا بايستی آنرا باز کرد . باز کردن فايلها در ويژوال بيسيک توسط دستور Open انجام می شود . فرمت کلی اين دستور بصورت زير است :

    Open filename [For mode] [Access access][lock] As [#]filenumber [Len=reclen]x


    [ پارامترهای داخل کروشه اختياری هستند . ]
    filename نام فايلی است که می خواهيم آنرا باز کنيم .
    mode حالت باز کردن فايل است . اين حالتها عبارتند از :
    - Input : فايل بعنوان ورودی باز می شود .
    - Output : فايل بعنوان خروجی باز می شود .
    - Binary : فايل از نوع باينری باز می شود .
    - Append : فايل طوری باز می شود که بتوان به انتهای آن چيزی اضافه کرد .
    - Random
    access نوع دسترسی به فايل را مشخص می کند . انواع دسترسيها عبارتند از :
    - Read : خواندن فايل
    - Write : نوشتن در فايل
    - ReadWrite : خواندن و نوشتن فايل
    lock نوع دسترسی ساير برنامه ها به اين فايل را مشخص می کند . انواع دسترسيها عبارتند از :
    - Shared : دسترسی اشتراکی
    - Lock Read
    - Lock Write
    - Lock Read Write
    filenumber عددی است که ويژوال بيسيک از آن برای دسترسی به فايل استفاده می کند .اين عدد بايستی برای هر فايل منحصر بفرد و بين ۱ تا ۵۱۱ باشد . برای بدست آوردن اولين شماره آزاد می توان از تابع FreeFile استفاده کرد .
    reclen :طول بافر فايل است . اين عدد بايستی از ۳۲۷۶۷ کو چکتر باشد .

    در صورتی که فايلی که توسط filename مشخص شده وجود نداشته و فايل برای Append ، Binary ، Output و يا Random باز شده باشد در اينصورت يک فايل جديد با اين نام ساخته می شود .
    در صورتی که فايل بصورت باينری باز شده باشد پارامتر Len ناديده گرفته می شود .

    چگونگی بستن فايل

    پس از پايان کار با فايل برای بستن آن از دستور Close استفاده می کنيم . فرمت اين دستور بصورت زير است :

    Close #filenumber


    دستور Close بدون هيچ پارامتری تمام فايلهای باز را می بندد .

    کار با دايرکتوری

    ۱ - گرفتن Dir : توسط دستور Dir می توان نام فايلهای موجود در يک دايرکتوری را بر اساس پارامترهايي که به آن می دهيم پيدا کنيم . برای مثال :

    Myfile=Dir$("c:\text\*.txt)"x


    دستور فوق نام اولين فايل موجود در دايرکتوری C:\TEXT را که پسوند آنها txt باشد در متغير Myfile قرار می دهد . اگر دستور فوق را بدون پارامتر مجدداً اجرا کنيم نام دومين فايل برگرداننده می شد و الی آخر
    Dir دارای يک پارامتر اختياری است که نوع فايلهای مورد نظر را نيز می توان با آن مشخص نمود . مثال :

    Myfile=Dir$("c:\text\*.txt",vbNormal)x


    مقادير ممکن اين پارامتر عبارتند از :
    vbNormal ، vbHidden ، vbSystem ، vbDirectory
    ۲ - تغيير دايرکتوری : برای تغيير دايرکتوری از دستور ChDir استفاده می شود مثال :

    ChDir "c:\windows\system32"x


    ۳ - تغيير درايو : برای تغيير درايو از دستور ChDrive استفاده می شود مثال :

    ChDrive "E:"x


    ۴ - ساخت دايرکتوری : برای ايجاد دايرکتوری جديد از دستور MKDir استفاده می شود مثال :

    MKDir "c:\MyFolder"x


    ۵ - حذف دايرکتوری : برای حذف دايرکتوری از دستور RmDir استفاده می شود مثال :

    RmDir "C:\MyFoler"x

  6. #6
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    کار با فايل در ويژوال بيسيک - بخش دوم

    خواندن از فايل :

    1 - دستور Input : توسط دستورهای Input و Line Input می توان محتوای فايلهای متنی و باينری را خواند .
    دستور Input به دو صورت بکار می رود :
    Input #Filenumber,ReadData
    ReadData=Input(Charnum,Filenumber)x
    دستور اول کل يک فايل را خوانده و در متغير ReadData قرار می دهد . دستور دوم ، تعداد Charnum بايت از فايلی با شماره Filenumber را خوانده و در متغير ReadData قرار می دهد .
    اين دو دستور تمام کاراکترهای موجود در فايل را می خوانند . برای اينکه بتوان فايل را خط به خط خواند ، از دستور Line Input استفاده کنيد :
    Line Input #Filenumber,ReadData
    البته از دستور Line Input بيشتر برای خواندن فايلهای متنی استفاده می شود زيرا ممکنست در فايل باينری هيچ کاراکتر انتهای خط ( CRLF ) وجود نداشته باشد و يکباره کل فايل خوانده شود .

    ۲ - دستور Get : از اين دستور برای خواندن فايلهای باينری با دسترسی تصادفی ( Random Access ) استفاده میشود :
    Get #Filenumber,[Recordnum%],ReadData
    اين دستور رکورد شماره Recordnum را از فايلی با شماره Filenumber می خواند و در متغير ReadData قرار می دهد . علامت کروشه نشان می دهد که پارامتر Recordnum اختياری است و در صورتيکه ذکر نشود داده ها از رکورد بعدی فايل ( جائيکه اشاره گر فايل آنجا قرار دارد ) خوانده می شوند .

    نوشتن در فايل :

    ۱ - دستور Print : توسط اين دستور می توان اطلاعاتی را در فايل قرار داد :
    Print #FileNumber,WriteData
    دستور فوق محتويات متغير WriteData را در فايلی با شماره FileNumber می نويسد . بوسيله دستور Print می توان اطلاعات را بصورت خط به خط در فايل نوشت برای مثال :
    Print #1,"Hello Visual Basic"+Vbcrlf
    عبارت Vbcrlf نشان دهنده کاراکتر انتهای خط ( CRLF ) در ويژوال بيسيک می باشد .

    ۲ - دستور Put : اين دستور برای نوشتن داده ها در فايلهای باينری با دسترسی تصادفی بکار می رود :
    Put #FileNumber,[Recordnum],WriteData
    اين دستور محتويات متغير WriteData را در رکورد شماره Recordnum قرار می دهد .

    تعيين محل رکورد در فايلهای با دسترسی تصادفی :

    برای منتقل کردن اشاره گر فايل به يک رکورد در يک فايل باينری با دسترسی اتفاقی ، از دستور Seek استفاده می شود . اين دستور محل يک بايت را در فايل می گيرد و اشاره گر فايل را در آنجا قرار می دهد بنابراين دستورات Put و Get می توانند با اين رکورد کار کنند :
    Seek #FileNumber,RecordNumber

    تشخيص انتهای فايل :

    برای اينکه متوجه شويم به انتهای يک فايل رسيده ايم از دستور EOF استفاده می کنيم . اين دستور يکی از مقادير True يا False را بر می گرداند که نشان می دهد به انتهای فايلرسيده ايم يا نه . از اين تابع در حلقه های Do-While استفاده می شود :
    Do While Not (EOF(FileNumer))x
    .
    .
    .
    Loop
    حلقه فوق تا زمانيکه فايل موردنظر به انتها نرسيده باشد اجرا خواهد شد .

    بدست آوردن طول يک فايل :

    بوسيله دستور LOF می توان طول محتويات يک فايل را بدست آورد :
    FileSize=LOF(FileNumber)x

    بدست آوردن محل اشاره گر فايل :

    توسط دستور Loc می توان محل جاری اشاره گر فايل را بدست آورد . اجرا شدن اين دستور محل اشاره گر را تغيير نمی دهد :
    FilePosition=Loc(FileNumber)x

  7. #7
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    کار با فايل در ويژوال بيسيک - بخش سوم
    ساير عمليات کار با فايل :

    ۱ - حذف فايل : برای حذف يک يا چند فايل از دستور Kill استفاده می شود :
    Kill "C:\Temp\MyFile.txt"x
    Kill "C:\Temp\*.txt"x

    ۲ - انتقال فايل : برای انتقال يک فايل از يک دايرکتوری به دايرکتوری ديگر از دستور Name استفاده می شود . مبدا و مقصد بايستی روی يک درايو باشند . اگر دايرکتوری مبدا و مقصد يکی باشد فايل تغيير نام داده می شود :
    Name "C:\Temp\File1.txt" To "C:\Temp2\File2.txt"x

    ۳ - کپی کردن فايل : برای کپی کردن يک فايل از يک دايرکتوری به دايرکتوری ديگر از دستور FileCopy استفاده می شود :
    FileCopy "\File1.txt\ To "C:\Temp\File2.txt"x

    ۴ - بدست آوردن تاريخ و زمان آخرين تغيير فايل و يا زمان ايجاد فايل : برای اين کار از دستور FileDateTime استفاده می شود . ابتدا بايستی يک متغير از نوع Variant تعريف کرده و سپس توسط اين دستور تاريخ و زمان موردنظر را استخراج کنيم :
    Dim FileInfo As Variant
    FileInfo=FileDateTime("C:\Temp\MyFile.txt")x

    ۵ - استخراج طول فايل : برای بدست آوردن طول يک فايل بر حسب بايت از دستور FileLen استفاده می شود :
    FileSize=FileLen("C:\MyFile.txt")x

    ۶ - تغيير صفت يک فايل : برای تغيير صفت يک فايل از دستور SetAttr استفاده می شود . پارامترهای اين دستور عبارتند از :
    0 : فايل معمولی
    2 : فايل مخفی
    4 : فايل سيستمی

    SetAttr FileNumber,FileAttrib

    مقابله با خطاهای کار با فايل :

    در زمان کار با فايلهای احتمال زيادی وجود دارد که خطا بوجود آيد . بنابراين بايستی در زمان کار با فايلها در صورت ممکن از روتينهای مقابله با خطا استفاده کنيم . شايع ترين خطاهای کار با فايل عبارتند از :

    ۵۲ : شماره يا نام فايل صحيح نيست
    ۵۳ : فايل پيدا نشد
    ۵۴ : حالت فايل صحيح نيست
    ۵۵ : فايل قبلاً باز شده
    ۵۸ : فايل از قبل وجود دارد
    ۵۹ : طول رکورد صحيح نيست
    ۶۱ : ديسک پر است
    ۶۲ : عبور از انتهای فايل
    ۶۳ : شماره رکورد صحيح نيست
    ۷۰ : دسترسی ممنوع است
    ۷۱ : ديسک آماده نيست
    ۷۶ : مسير پيدا نشد

    در هنگام مقابله با خطا بهتراست از يک ساختار Select-Case استفاده کنيد :
    Select Case Err
    Case 71
    MsgBox "Drive is Not Ready"x
    .
    .
    .
    End Select

  8. #8
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش اول
    مقدمه :

    ساختارهاي داده اي از نظر تعداد اعضا به دو دسته استاتيک و ديناميک تقسيم مي شوند . ساختارهاي استاتيک مثل آرايه هاي يک بعدي و آرايه هاي دو بعدي ، تعداد اعضاي آنها در زمان طراحي برنامه مشخص مي شود و در طول اجراي برنامه ثابت است اما تعداد اعضاي ساختارهاي داده اي ديناميک در طول اجراي برنامه تغيير مي کند . ليست پيوندي ( LinkList ) ، پشته ( Stack ) ، صف ( Queue ) و درختهاي باينري ( Tree Binary) ، نمونه هايي از ساختارهاي داده اي ديناميک هستند .
    ليست پيوندي شامل مجموعه اي از عناصر داده اي است که اضافه و حذف اعضا در هر جاي ليست ممکن است .
    پشته يک ساختار داده اي مهم در کامپايلرها و سيستم هاي عامل است که عمل اضافه و حذف عناصر از ابتداي آن انجام مي شود .
    صف يک ساختار داده اي است که عمل اضافه کردن از انتها و عمل حذف کردن از ابتداي آن انجام مي شود .
    درختهاي دودويي براي جستجوي بسيار سريع ، ذخيره سازي داده ها و کامپايل عبارات استفاده مي شوند .

    نوع داده Variant :

    نوع داده variant براي متغيرهايي بکار مي رود که بطور صريح نوع آنها تعريف نشده است مثال :
    Dim value As Variant
    اين نوع داده مي تواند هر نوع داده اي را در خود ذخيره کند . همچنين براي ايجاد ساختارهاي داده اي مثل ليست هاي پيوندي ، صف ، پشته و درخت مناسب است .
    نوع داده موجود در variant مي توان توسط توابع VarType و TypeName تعيين کرد . تابع VarType يک مقدار صحيح برمي گرداند که نشان دهنده نوع ذخيره شده در variant است .
    مثال :
    Dim value as Variant
    value=”Hello”x
    در اينصورت مقدار بازگشتي ( VarType( value برابر 4 خواهد بود .
    تابع TypeName يک رشته برمي گرداند که نشان دهنده نام نوع داده ذخيره شده در variant است .

    اخذ حافظه بطور ديناميک Dynamic Memory Allocation :

    براي ايجاد و نگهداري ساختارهاي داده اي ديناميک بايستي در هنگام اجراي برنامه بتوان فضاي بيشتري براي نگهداري داده هاي جديد بدست آورد . با استفاده از کلمه کليدي New مي توان در ويژوال بيسيک حاقظه ديناميک گرفت :
    Set NewNode=New ListNode
    که ListNode يک شي از ساختار داده اي مورد نظر ماست .

    کلاسهاي خود ارجاعي :

    کلاس خودارجاعي نوعي کلاس است که داراي يک اشاره گر ( Pointer ) به يک شي از همان نوع کلاس باشد . براي مثال اگر کلاس ما به اسم ClistNode باشد و متغير زير را در آن تعريف کنيم ، اين کلاس يک کلاس خود ارجاعي است :
    Private mNextNode as ClistNode
    از mNextNode براي لينک دادن اعضاي يک ساختار داده اي ديناميک بهم استفاده مي شود ( بعبارت ديگر گره زدن يک شي از کلاس ClistNode به يک شي ديگر از همان کلاس ) . شي هاي خودارجاعي مي توانند به همديگر لينک شوند و ساختارهاي داده اي مثل ليست پيوندي ، صف ، پشته و درخت را ايجاد کنند .
    شکل زير دو شي خود ارجاعي را نشان مي دهد که بصورت يک ليست بهم لينک شده اند . عبارت NULL بدين معنا است که شي خودارجاعي به شي ديگري اشاره نمي کند ( Nothing ) و نشان دهنده انتهاي ساختار داده است

  9. #9
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش دوم
    ليست پيوندي

    همانطور که گفته شد ليست پيوندي مجموعه اي از يکسري داده است که اين داده ها از نوع اشيا خودارجاعي هستند . ( هر شي خودارجاعي داراي يک متغير نوع variant براي نگهدار مقدار و يک اشاره گر به شي بعدي است ) . هر عضو ليست پيوندي را يک گره گويند . هر ليست پيوندي از طريق يک اشاره گر به اولين گره قابل دسترسي است . گره هاي بعدي از طريق قسمت لينک موجود در هر گره قابل دسترس هستند . همچنين لينک آخرين گره با Nothing تنظيم مي شود که انتهاي ليست را نشان مي دهد .
    مزيت اصلي ليست هاي پيوندي نسبت به آرايه اينست که تعداد عناصر ليست پيوندي قابل تغيير است . بعبارت ديگر ليست هاي پيوندي بصورت ديناميک هستند و طول آنها قابل تغيير است اما سايز آرايه ثابت است . ( البته ويژوال بيسطک از آرايه هاي با سايز متغير نيز پشتيباني مي کند اما اين عمل تغيير سايز اتوماتيک نيست .)
    عمل درج در ليست پيوندي ساده است و تنها بايستي دو اشاره گر تغيير يابد .
    ليست هاي پيوندي را مي توان به سادگي با قراردادن هر عضو جديد در محل صحيح بصورت sortشده نگهداري کرد .
    اعضاي ليست پيوندي در حافظه بصورت پيوسته ذخيره نمي شوند بنابراين نمي توان فوراً به هر عضو ليست دسترسي داشت ( بر خلاف آرايه ) .
    براي ايجاد ليست پيوندي در ويژوال بيسيک نياز به سه کلاس است :

    1 – کلاس ClistNode : کلاسي است که هر گره از ليست را توصيف مي کند :

    private mNodeData as Variant
    private mNextNode as ClistNode
    public Property Get Data() as Variant
    Data=mNodeData
    End Property
    Public Property Let Dta(ByVal vNewValue as Variant)x
    MNodeData=vNewValue
    End Property
    Public Property Get NextNode() as ClistNode
    Set NextNode=mNextNode
    End Property
    Public Property Let NextNode(Byval vNewValue as Variant)x
    Set mNextNode=vNewValue
    End Property



    2 – کلاس Clist براي توصيف ليست پيوندي .
    mFirstNode براي اشاره به اولين ClistNode و mLastNode براي اشاره به آخرين ClistNode در يک شي clist بکار می رود . زمانيکه يک Clsit ايجاد مي شود اين دو متغير با Nothing تنظيم مي شوند . روال Property Get Iterator يک شي ClistIterator برمي گرداند که مي توان از آن براي حرکت در بين اعضاي ليست استفاده کرد .

    Private mFirstNode as ClistNode
    Private mLastNode as ClistNode
    Public Function IsEmpty() as boolean
    IsEmpty=IIf(mFirstNode Is Nothing,True,False)x
    End function
    Public Sub InsertAtFront(insertItem as variant)x
    Dim tempNode as ClistNode
    If IsEmpty() then
    Set mFirstNode=New ClistNode
    Set mLastNode=mFirstNode
    Else
    Set tempNode=mFirstNode
    Set mFirstNode=New ClistNode
    MFirstNode.NextNode=tempNode
    End if
    MFirstNode.Data=insertItem
    End sub
    Public sub InsertAtBack(insertItem as Variant)x
    Dim tempNode as ClistNode
    If IsEmpty() then
    Set mLastNode=New ClistNode
    Set mFirstNode=mLastNode
    Else
    Set tempNode=mLastNode
    Set mLastNode=New ClistNode
    TempNode.NextNode=mLastNode
    End if
    MLastNode.Data=insertItem
    End sub
    Public function RemoveFromFront()x
    Dim removeItem as Variant
    If IsEmpty() then
    Msgbox list is empty
    RemoveFromFront=Null
    Exit function
    End if
    RemoveItem=mFirstNode.Data
    If mFirstNode Is mLastNode then
    Set mFirstNode=Nothing
    Set mLastNode=Nothing
    Else
    Set mFirstNode=mFirstNode.NextNode
    End if
    RemoveFromFront=removeItem
    End function
    Public Function RemoveFromBack()x
    Dim removeItem as Variant
    Dim current as ClistNode
    If IsEmpty() then
    Msgboc list is empty
    RemovefromBack=Null
    Exit function
    End if
    RemoveItem=mLastNode.Data
    If mFirstNode Is mLastNode then
    Set mFirstNode=nothing
    Set mLastNode=Nothing
    Else
    Set current=mFirstNode
    While Not current.NextNode Is mLastNode
    Set current=current.NextNode
    Wend
    Set mLastNode=current
    Current.NextNode=nothing
    End if
    RemoveFromBack=removeItem
    End function
    Public property Get Iterator() as variant
    Dim iter as ClistIterator
    Set iter=New ClistIterator
    Iter.StartNode=mFirstNode
    Set Iterator=iter
    End property


    عملکرد روال InsertAtFront :
    a – فراخواني IsEmpty براي تعيين خالي بودن ليست
    b – اگر ليست خالي باشد mFirstNode و mLastNode به New ClsitNode اشاره مي کنند .
    c – اگر ليست خالي نباشد گره جديد توسط اشاره دادن tempNode به اولين گره ليست و سپس اشاره دادن mFirstNode به گره New ClsitNode و سپس اشاره دادن mFirstNode.NextNode به tempNode ساخته مي شود .
    d – تنظيم mFirstNode.Data با مقدار مورد نظر
    عملکرد روال InsertAtBack :
    a – فراخواني IsEmpty براي تعيين خالي بودن ليست
    b – اگر ليست خالي باشد mFirstNode و mLastNode به New ClsitNode اشاره مي کنند .
    c – اگر ليست خالي نباشد گره جديد توسط اشاره دادن tempNode به آخرين گره ليست و سپس اشاره دادن mLastNode به گره New ClsitNode و سپس اشاره دادن tempNode.NextNode به mLastNode ساخته مي شود .
    d – تنظيم mLastNode.Data با مقدار مورد نظر
    عملکرد روال RemoveFromFront :
    a – اگر ليست خالي باشد Null برگشت داده مي شود .
    b – اگر ليست خالي نباشد داده mFirstNode به removeItem اختصاص داده مي شود .
    c – اگر ليست فقط يک گره داشته باشد mFirstNode و mLastNode با Nothing مقدار دهي مي شوند و گره از ليست حذف مي شود .
    d – اگر گره بيش از يک عضو داشته باشد mFirstNode برابر mFirstNode.NextNode مي شود .
    e – مقدار removeItem برگشت داده مي شود .
    عملکرد روال RemoveFromBack :
    a – اگر ليست خالي باشد Null برگشت داده مي شود .
    b – اگر ليست خالي نباشد داده mLastNode به removeItem اختصاص داه مي شود .
    c – اگر ليست يک گره داشته باشد mFirstNode و mLastNode با Nothing مقدار دهي مي شوند و گره از ليست حذف مي شود .
    d – اگر ليست بيش از يک گره داشته باشد متغير current برابر mFirstNode مي شود . سپس با استفاده از current روي گره هاي ليست حرکت مي کنيم تا به گره اي برسيم که به آخرين گره اشاره مي کند . سپس mLastNode را به گره اي که current به آن اشاره مي کند قرار مي دهيم و مقدار current.NextNode را Nothing مي کنيم تا بعنوان آخرين گزه ليست معرفي شود .
    e – مقدار removeItem برگشت داده مي شود .

    3 – کلاس ClistIterator : اين کلاس براي حرکت روي گره هاي ليست و دستکاري هر گره بکار مي رود . از حرکت کننده ها براي چاپ ليست و يا انجام دادن عملي بر روي هر عضو Clist مي توان استفاده کرد . اين کلاس داراي دو متغير از نوع ClistNode به نامهاي mBookmark و mFirstNode است . متغير mFirstNode به اولين گره در Clist اشاره مي کند و متغير mBookmark موقعيت فعلي حرکت کننده بر روي Clist را نشان مي دهد . روال Property Let StartNode اين دو متغير را مقدار دهي اوليه مي کند . تابع NextItem اگر مقدار mBookmark برابر Null باشد ، Null برگشت مي دهد و در غيراينصورت مقدار tempData را برابر mBookmark.Data و مقدار mBookmark را برابر mBookmark.NextNode قرار مي دهد . تابع HasMoreItems اگر ليست داراي چندين عضو باشد True برمي گرداند . روال ResetBookmark حرکت کننده را به ابتداي ليست منتقل مي کند .

    Private mBookmark as ClistNode
    Private mFirstNode as ClistNode
    Public Property Let StartNode(Byval vNewValue as variant)x
    Set mFirstNode=vNewValue
    Set mBookmark=mFirstNode
    End property
    Public function NextItem()x
    Dim tempData as varaint
    If mBookmark Is nothing then
    NextItem=Null
    Else
    TempData=mBookmark.Data
    Set mBookmark=mBookmark.NextNode
    NextItem=tempData
    End if
    End function
    Public function HasMoreItems() as boolean
    HasMoreItems=IIf(Not mBookmark Is nothing,True,False)x
    End function
    Public sub ResetmBookmark()x
    MBookmark=mFirstNode
    End sub



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

  10. #10
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش سوم
    مثالی از استفاده از کلاسهای ليست پيوندی :
    ابتدا کلاسهايي که در جلسه قبل معرفی شد را به پروژه تان اضافه کنيد . سپسدر بخش کدنويسی فرمتان ، ابتدا يک شی از نوع کلاس Clist بصورت زير تعريفکنيد :

    Dim list as New Clist


    در فرمتان سه CommandButton با نامهای AddFirst ، AddLast و ShowList و نيز يک TextBox با نام ListMember قرار دهيد .
    کد زير را برای رويداد کليک شدن دکمه AddFirst بنويسيد :

    Call list.InsertAtFront(ListMember.text)x


    کد زير را برای رويداد کليک شدن دکمه AddLast بنويسيد :

    Call list.InsertAtBack(ListMember.text)x


    کد زير را برای رويداد کليک شدن دکمه ShowList بنويسيد :

    Dim elements as New ClistIterator
    Set elements=list.Iterator
    If elements.HasMoreItems=false then msgbox ("list is empty")x
    Else
    While elements.HasMoreItems
    Msgbox(elements.NextItem)x
    Wend
    end if



    پشته :
    پشته نوعي ليست پيوندي است که گره هاي جديد ، فقط به انتهاي آن مي تواننداضافه شوند . بهمين دليل به پشته ، ساختمان داده LIFO مي گويند . قسمتلينک آخرين گره پشته با Nothing مقدار دهي مي شود که نشان دهنده پايينپشته است .
    روالهاي اصلي پشته Push و Pop هستند .
    Push يک گره جديد به بالاي پشته اضافه مي کند و Pop از بالاي پشته گره اي را حذف کرده و مقدار داده آن را بر مي گرداند .


    در بخش چهارم کلاسی را برای کار با پشته معرفی خواهم کرد

  11. #11
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش چهارم
    کد:

    کلاس پشته :
    همانطور که در بخش قبل گفته شد پشته نوعی ليست پيوندی است که گره هاي جديدفقط به انتهاي آن اضافه شوند . روالهاي اصلي پشته Push و Pop هستند .
    Push يک گره جديد به بالاي پشته اضافه مي کند و Pop از بالاي پشته گره اي را حذف کرده و مقدار داده آن را بر مي گرداند .
    يک کلاس پشته را با استفاده از کلاس Clist و بصورت زير پياده سازي مي کنيم :

    Private list As New Clist
    Public Sub Push(value as Variant)x
    List.InsertAtFront(value)x
    End sub
    Public Function Pop As Variant
    Pop=list.RemoveFromFront()x
    End Function
    Public Function IsStackEmpty() As Boolean
    IsStackEmpty=list.IsEmpty()x
    End function
    Public Property Get Iterator() as variant
    Set Iterator=list.Iterator
    End Property


    در اين کلاس ابتدا يک شی از نوع کلاس Clist تعريف شده است . سپس متدهایPush توسط متد InsertAtFront و Pop توسط متد RemoveFromFront پياده سازیشده اند .
    يک برنامه نمونه :
    برای نوشتن يک برنامه برای کار با پشته ابتدا کلاس Stack را که کد آن رادر بالا ديديد به پروژه تان اضافه کنيد . سپس در بخش کد مربوط به فرمتانابتدا يک شی از نوع کلاس Stack بصورت زير تعريف کنيد :

    Dim mStack as New Stack


    سپس در فرمتان سه CommandButton با نامهای Push و Pop و ShowStack و نيز يک TextBox با نام StackMember قرار دهيد .
    کد زير را برای کليک شدن دکمه Push بنويسيد :

    mStack.push(StackMember.text)x


    کد زير را برای کليک شدن دکمه Pop بنويسيد :

    StackMember.text=mStack.Pop()x


    کد زير را برای کليک شدن دکمه ShowStack بنويسيد :

    Dim elements as New ClistIterator
    Set elements=mStack.Iterator
    If elements.HasMoreItems=false then msgbox "stack is empty"x
    Else
    While elemets.HasMoreItems
    Msgbox elements.NextItem
    Wend

  12. #12
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش پنجم
    صف :
    صف نوعي ساختار داده اي است که گره ها از ابتداي صف ( سر صف head ) حذف ميشوند و از انتهاي صف ( ته صف tail ) اضافه مي شوند . بنابر اين ، صف يکساختار داده اي FIFO است . صف دارای دو متد به نامهای AddQueue و DelQueueاست که اولین متد ، عنصری را به انتهای صف اضافه می کند و دومين متد ،عنصری را از ابتدای صف حذف می کند .
    براي ايجاد کلاس Cqueue از کلاس Clist استفاده مي کنيم :

    Private list as New Clist

    Public Sub AddQueue(value as Variant)x
    List.InsertAtBack(value)
    End sub

    Public Function DelQueue() as Variant
    DelQueue=list.RemoveFromFront
    End function

    Public property Get Iterator() as Variant
    Set Iterator=list.Iterator
    End Property


    درخت :
    ليستهاي پيوندي ، پشته ها و صف ها جزو ساختارهاي داده اي خطي هستند درحاليکه يک درخت ، يک ساختار داده اي دو بعدي با خصوصيات ويژه اي است . گرههاي درخت داراي دو يا چند لينک هستند . در اينجا در مورد درختهاي دودويييا باينري بحث مي کنيم که در آن همه گره ها داراي دو لينک هستند . گرهريشه اولين گره در درخت است . هر لينک گره ريشه ، به يک فرزند اشاره ميکند . به فرزندان يک گره Siblings مي گويند . به گره بدون فرزند ، برگ ياLeaf گفته مي شود .
    درختهاي جستجوي باينري درخت هايي هستند که در آنها مقدار فرزند چپ هر گرهکمتر از گره پدر و مقدار فرزند سمت راست هر گره بيشتر از گره پدر مي باشد.




    در بخش ششم يک کلاس برای پياده سازی درختهای جستجوی باينری ايجاد خواهيم کرد

  13. #13
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش ششم
    کلاس درختهای جستجوی باينری

    برای ايجاد درختهای جستجوی باينری در ويژوال بيسيک نياز به ايجاد دو کلاس داريم :
    1 - کلاس CTreeNode که هر ند درخت دودويي را توصيف می کند . اين کلاسدارای يک متغير به نام mNodeData از نوع Variant برای نگهداری داده هر گرهاست . همچنين دارای دو متغير اشاره گر به نامهای mLeft و mRight می باشدکه به ترتيب به فرزند چپ و فرزند راست درخت اشاره می کنند .
    متد Get Data مقدار داده هر گره را بر می گرداند و متد Let Data مقدار داده هر گره را تنظيم می کند .
    متد Get Left آدرس فرزند چپ هر گره را برمی گرداند و متد Let Left فرزند چپ هر گره را تنظيم می کند .
    متد Get Right آدرس فرزند راست هر گره را برمی گرداند و متد Let Right فرزند راست هر گره را تنظيم می کند .
    متد Insert برای اضافه کردن فرزند به يک گره به کار می رود . اگر مقدارگره ای که می خواهيم بعنوان فرزند به درخت اضافه کنيم کوچکتر از مقدار خودگره باشد بعنوان فرزند چپ و در غير اينصورت بعنوان فرزند راست به گرهاضافه می شود . اضافه شدن نيز بدين صورت است که ابتدا بررسی می شود آیاگره قبلاً فرزندی داشته است يا نه ؟ اگر نداشته باشد ( mLeft و يا mRightبرابر Nothing باشد ) اين گره جديد مستقيماً به گره متصل می شود اما اگرگره قبلاً فرزندی داشته باشد متد Insert برای آن فرزند اضافه می شود واينکار تا جايی ادامه می يابد که به گره ای برسيم که فرزندی نداشته باشد :

    Private mLeft as CtreeNode
    Private mRight as CtreeNode
    Private mNodeData as Variant

    Public Property Get Data() as variant
    Data=mNodeData
    End property
    Public Property Let Data(Byval vNewValue as Variant)x
    MNodeData=vNewValue
    End property
    Public Property Get Left() as variant
    Set Left=mLeft
    End property
    Public Property Let Left(Byval vNewValue as variant)x
    Set mLeft=vNewValue
    End property

    Public Property Get Right() as variant
    Set Right=mRight
    End Property
    Public Property Let Right(Byval vNewValue as variant)x
    Set mRight=vNewValue
    End Property

    Public Sub Insert(value as variant)x
    If valueIf mLeft Is Nothing Then
    Set mLeft=New CtreeNode
    MLeft.Data=value
    Else
    MLeft.Insert(value)x
    End if
    Elseif value>mNodeData then
    If mRight Is Nothing then
    Set mRight=New CtreeNode
    MRight.Data=value
    Else
    MRight.Insert(value)x
    End if
    End if
    End sub


    2 - کلاس CTree : اين کلاس برای ايجاد درخت بکار می رود . اين کلاس دارایمتغيری بنام mRoot از نوع CTreeNode برای تعريف ريشه درخت است . همچنين يکمتغير mOutputString برای نمايش دادن اعضای درخت دارد .

    Private mRoot as CtreeNode
    Private mOutputString as String

    Public Sub InsertNode(value as Varaint)x
    If mRoot Is Nothing then
    Set Mnode=New CtreeNode
    MRoot.Data=value
    Else
    MRoot.Insert(value)x
    End if
    End sub

    Public PreorderTraversal()x
    MOutputString=””x
    Call PreorderHelper(mRoot)x
    End sub

    Private Sub PreorderHelper(node As CtreeNode)x
    If node Is nothing Then
    Exit sub
    End if
    MOutputString=mOutputString & node.Data & “ “x
    Call PreorderHelper(node.left)x
    Call PreorderHelper(node.right)x
    End sub

    Public Sub InorderTraversal()x
    MOutputString=””x
    Call InorderHelper(mRoot)x
    End sub

    Private Sub InorderHelper(node as CtreeNode)x
    If node Is nothing then
    Exit sub
    End if
    Call InorderHelper(node.Left)x
    MOutputString=mOutputString & node.Data & “ “x
    Call InorderHelper(node.Right)x
    End sub

    Public PostorderTraversal()x
    MOutputString=””x
    Call PostorderHelper(mRoot)x
    End sub

    Private Sub PostorderHelper(node as CtreeNode)x
    If node Is Nothing then
    Exit sub
    End if
    Call PostorderHelper(node.Left)x
    Call PostorderHelper(node.Right)x
    MOutputString=mOutputString & node.Data & “ “x
    End sub

    Public Property Get Output() as Varaint
    Output=mOutputString
    End Property


    در بخش بعد ، در مورد متدهای اين کلاس بيشتر توضيح خواهم داد و سپس برنامه نمونه ای را برای کار با اين کلاسها خواهيم نوشت

  14. #14
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش پايانی
    انواع روشهای پيمايش عناصر درخت :
    ۱ - روش InOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس ريشه و در آخر عناصر نيمه سمت راست درخت نمايش داده می شوند .
    ۲ - روش PreOrder : در اين روش ابتدا ريشه درخت ، سپس عناصر نيمه سمت چپ و در پايان عناصر نيمه سمت راست درخت نمايش داده می شوند .
    ۳ - روش PostOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس عناصرنيمه سمت راست درخت و در پايان ريشه درخت نمايش داده می شوند .
    مثال : درخت زير را در نظر بگيريد :




    نتيجه پيمايش InOrder درخت : 1,3,4,5,6,7,8
    نتيجه پيمايش PreOrder درخت : 5,3,1,4,7,6,8
    نتيجه پيمايش PostOrder درخت : 1,4,3,6,8,7,5
    بررسی متدهای کلاس CTree :
    متد InsertNode : اگر گره ريشه برابر Null باشد value را برابر مقدار گرهريشه قرار می دهد . در غير اينصورت متد Insert مربوط به گره ريشه فراخوانیمی شود .
    متد PreorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Preorder را فراخوانی می کند .
    متد InorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Inorder را فراخوانی می کند .
    متد PostorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Postorder را فراخوانی می کند .
    متد Get Output : عناصر پيمايش شده درخت را برمی گرداند .
    يک برنامه نمونه :
    ابتدا کلاسهای CTreeNode و CTree را به پروژه تان اضافه کنيد . سپس متغير زير را در قسمت کدنويسی فرمتان تعريف کنيد :

    Dim mTree as New Ctree


    سپس در فرمتان يک Textbox با نام Value و دو Command Button با نامهای Insert و Show قرار دهيد .
    کد زير را برای وارد کردن عنصر به درخت برای دکمه Insert بنويسيد :

    mTree.InsertNode(Value.Text)x


    کد زير را برای پيمايش InOrder درخت برای دکمه Show بنويسيد :

    Call mTree.InorderTraversal


    شي Collection :
    ويژوال بيسيک داراي شي پيش ساخته اي به نام Collection است که مي تواندمجموعه اي از مقادير با هر نوع داده اي را در خود ذخيره کند . در واقععناصر موجود در يک Collection مي توانند داراي نوعهاي داده اي متفاوتباشند . شي Collection قابليت رشد ديناميک دارد .
    شي Collection توسط کلمه کليدي New ايجاد مي شوند . توسط متد Add مي توانبه Cllection عضو اضافه کرد و توسط متد Remove مي توان عضوي را از آن حذفکرد . هر عضو از Collection توسط متد Item قابل دستيابي است . با استفادهاز خاصيت Count مي توان تعداد اعضاي موجود در Collection را تعيين نمود .بصورت پيش فرض اعضاي جديد به انتهاي Collection اضافه مي شوند ولي توسطآرگومانهاي اختياري متد Add مي توان محل اضافه شدن را تغيير داد .
    متد Remove يک شماره مي گيرد که موقعيت عضوي را که مي خواهيم آنرا حذف کنيم مشخص مي کند .
    توسط دستورات زير مي توان اعضاي يک Collection را نمايش داد :

    Dim mCollection as New Collection
    Dim element as Variant
    .
    .
    .
    For Each element In mCollection
    Msgbox element


    element متغيري از نوع variant براي اشاره به هر عضو Collection مي باشد

  15. #15
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    برنامه نويسی شبکه و اينترنت در Vb بخش اول
    مروری بر TCP/IP

    نکته : مطالب زير تنها در حد يک يادآوري مي باشد . اگر اطلاعات کمي در مورد TCP/IP داريد به کتابهاي موجود مراجعه کنيد .

    پروتکل Protocol : قراردادي است براي برقراري ارتباط در شبکه

    مدل TCP/IP : مجموعه اي از پروتکلهاي ارتباطي مرتبط بهم است که مکانيزمهاو سرويسهاي مورد نياز جهت برقراري ارتباط در اينترنت را مهيا مي کنند .اين مدل شامل ۴ لايه است :
    ۱ - لايه کاربرد Application Layer : شامل برنامه هاي کاربردي و پروتکلهايي مثل Http ، Ftp ، Smtp ، Pop و Telnet مي باشد .
    ۲ - لايه انتقال Transport Layer : اين لايه شامل دو پروتکل TCP و UDP است. پروتکل TCP وظيفه کنترل رسيدن بسته هاي داده به مقصد ( TCP/IP داده هارا به بسته هاي کوچکي تقسيم مي کند که هر بسته حاوي آدرس فرستنده ، گيرندهو شماره بسته مي باشد ) ، تصحيح خطا و مرتب سازي بسته ها را برعهده دارد .UDP پروتکلي شبيه TCP است با اين تفاوت که هيچ ضمانتي براي رسيدن بسته هاياطلاعاتي در آن وجود ندارد و معمولاً در انتقال صوت و ويدئو روي اينتزنتاستفاده مي شود .
    ۳ - لايه اينترنت Internet Layer : شامل پروتکل IP است که مسئول مسيريابي بسته هاي اطلاعاتي مي باشد .
    ۴ - لايه دسترسي به شبکه Link Layer : شامل بخشي از هسته سيستم عامل و نيز درايورهاي واسط شبکه براي کار با سخت افزار شبکه مي باشد .

    سوکت Socket و پورت Port : سوکت يک ورودي انتزاعي در لايه انتقال مي باشدکه براي ايجاد ارتباطات مختلف TCP/IP بکار مي رود . اغلب برنامه هايکاربردي که از TCP و UDP استفاده مي کنند ، عمليات انتقال اطلاعات خود رابا ساخت يک سوکت و سپس انجام يکسري عمليات روي آن انجام مي دهند . اينعمليات عبارتند از :
    ۱ - عمليات کنترلي : شامل اختصاص يک شماره پورت به سوکت ، initiate کردن يا accpet کردن يک ارتباط ، از بين بردن سوکت
    ۲ - عمليات انتقال داده : شامل نوشتن داده روي سوکت و خواندن داده از سوکت
    ۳ - عمليات بررسي وضعيت : مثل پيدا کردن آدرس IP مربوط به سوکت ، پيدا کردن شماره پورت سوکت و غيره

    HTTP : پروتکل انتقال داده براي وب است .

    FTP : پروتکل انتقال فايل روي اينترنت است .

    SMTP و POP : پروتکلهاي ارسال و دريافت email مي باشند

  16. #16
    کاربرسایت PARS آواتار ها
    تاریخ عضویت
    ۸۷-۰۲-۲۵
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0

    کنترل Web Browser – ساخت مرورگر صفحات وب
    برنامه Internet Explorer يا iexplore.exe در واقع برنامه کوچکي است کهوظيفه اصلي آن ايجاد چارچوبي براي بهم پيوستن عناصر مختلف است و اين عناصرهستند که وظايف اصلي مثل load کردن صفحات وب ، اجراي کدهاي Html و غيره راانجام مي دهند . اصلي ترين عنصري که مستقيماً توسط iexplore.exe استفادهمي شود کنترل Webbrowser ( موجود در فايل shdocrw.dll ) مي باشد . وظيفهاين فايل dll ، عبارت است از حرکت بين صفحات وب ، مديريت تاريخچه صفحاتديده شده و غيره . اين فايل خود از فايل ديگري بنام Mshtml.dll استفاده ميکند که وظيفه آن بررسي و اجراي فايلهاي html است . مايکروسافت به برنامهنويسان اين امکان را داده که بتوانند در برنامه هايشان از کنترلwebbrowser استفاده کنند . با استفاده از اين کنترل مي توان به سادگي يکمرورگر وب تقريباً کامل ساخت .

    خصوصيات کنترل Webbrowser :
    Webbrowser علاوه بر خواص استانداردي مثل width ، height و … خواص زير را دارد :
    1 – Busy : اگر در حال load کردن يک صفحه يا در حال جستجو در وب باشد اينخاصيت True است . توسط متد Stop مي توان عمليات جاري را متوقف کرد .
    2 – Container : ارجاع به شي نگهدارنده کنترل webbrowser
    3 – Document : ارجاع به صفحه html فعلي . براي کار با اين صفحه html مي توان از خواص و متدهابي شي Document استفاده کرد .
    4 – LocationName : حاوي آدرس محلي است که اکنون در کنترل webbrowser ،load شده است . اگر اين محل يک صفحه html باشد عنوان آن صفحه خواهد بود واگر اين محل يک فايل در شبکه باشد مسير کامل آن فايل خواهد بود .
    5 – LocationURL : حاوي url محلي است که فعلاً در کنترل webbrowser ، load شده است .
    6 – Offline : اگر کنترل webbrowser در حالت عدم اتصال باشد مقدار آن True و در غيراينصورت False است .
    7 – Parent : فرمي را نشان مي دهد که کنترل webbrowser در آن قرار دارد .
    8 – ReadyState : وضعيت کنترل webbrowser را برمي گرداند .

    متدهاي کنترل webbrowser : اين متدها مربوط به مرور در صفحات وب هستند :
    1- GoBack : در ليست تاريخچه url ها ، يکي به عقب برمي گردد .
    2 – GoForward : در ليست تاريخچه url ها ، يکي به جلو مي رود .
    3 – GoHome : به homepage مرورگر مي رود .
    4 – Navigate : به يک url يا فايل مي رود . ساختار اين متد بصورت زير است :

    Navigate URL [Flags,][TargetFrameName,][PostData,][Headers]x

    URL آدرس مقصد مي باشد . Flags نحوه باز شدن آدرس مقصد را تعيين مي کند .اگر اين پارامتر ذکر نشود آدرس جديد در پنجره فعلي باز خواهد شد و به ليستتاريخچه اضافه شده و اگر کپي آن در temperory cache موجود باشد از آنجاخوانده مي شود . مقادير پارامتر Flags عبارتند از :
    - NavOpenInNewWindow : آدرس جديد را در پنجره جديدي باز مي کند .
    - NavNoHistory : به ليست تاريخچه اضافه نمي شود بلکه جايگزين صفحه فعلي مي شود .
    - NavNoReadFromCache : صفحه جديد از cache خوانده نمي شود .
    - NavNoWriteToCache : صفحه جديد روي cache نوشته نمي شود

    Event هاي کنترل webbrowser : اين event ها مربوط به مرور در وب و تغيير حالت آن هستند :
    1 – CommandStateChange : براي فعال يا غيرفعال کردن دکمه هاي Forward وBack در مرورگر استفاده مي شود . شکل کلي فراخواني اين event بصورت زيراست :

    Private Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)


    که command فرماني است که حالت فعال آن تغيير کرده است و دو مقدار مي گيرد: 1 و 3 که بترتيب معادل فرمانهاي GoForward و GoBack هستند .
    Enable فعال يا غيرفعال بودن فرمان را تعيين مي کند .
    2 – DocumentComplete : اين event زماني فعال مي شود که صفحه در حال loadشدن به حالت ReadyState_Complete برود . شکل کلي فراخواني اين event بصورتزير است :
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    که pDisp ارجاعي به کنترل webbrowser است که event در آن رخ داده است و URL آدرس صفحه در حال load شدن است .
    3 – DownloadBegin : اين event در آغاز حرکت به صفحه جديد روي مي دهد وهيچ پارامتري نمي گيرد . مرورگر مي تواند در اين event پيغامي براي شروععمليات جديد نشان مي دهد .
    4 – DownloadComplete : اين event در پايان عمليات يا در صورت انصراف کاربر يا بروز خطا روي مي دهد .
    5 – ProgressChange : با بروز هر تغييري در وضعيت load ، اين event روي مي دهد . شکل کلي فراخواني آن بصورت زير است :

    Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)


    که Progress نشان دهنده پيشرفت عمليات ( بايتهاي load شده ) است . پارامترProgressMax تعداد کل بايتهايي که بايد load شوند را نشان مي دهد بنابراين :

    (Progress/ProgressMax)*100=درصد پيشرفت عمليات load


    يک مثال ساده :
    از منوي project مورد components را انتخاب کنيد و از ليست کنترلها ،Microsoft Internet Controls را به toolbar خود اضافه کنيد . يک کنترلWebBrowser روي فرم قرار دهيد و سايز آنرا به اندازه ابعاد فرم خود قراردهيد . يک textbox و يک دکمه روي فرم قرار دهيد . کد زير را براي eventمربوط به کليک دکمه بنويسيد

صفحه 1 از 6 12345 ... آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 0
    آخرين نوشته: دوشنبه ۲۶ بهمن ۸۸, ۱۱:۲۲
  2. ویژوال بیسیک چیست؟
    توسط PARS در انجمن ويژوال و ويژوال بيسيك
    پاسخ ها: 0
    آخرين نوشته: دوشنبه ۱۹ بهمن ۸۸, ۱۹:۰۹
  3. تاریخچه ویژوال بیسیک
    توسط PARS در انجمن ويژوال و ويژوال بيسيك
    پاسخ ها: 0
    آخرين نوشته: دوشنبه ۱۹ بهمن ۸۸, ۱۹:۰۴
  4. فصل اول و دوم ویژوال بیسیک
    توسط SAREH در انجمن ويژوال و ويژوال بيسيك
    پاسخ ها: 0
    آخرين نوشته: پنجشنبه ۲۸ شهریور ۸۷, ۰۰:۳۳
  5. توابع ریاضی در ویژوال بیسیک
    توسط hrg1356 در انجمن برنامه نویسی
    پاسخ ها: 0
    آخرين نوشته: چهارشنبه ۰۹ آبان ۸۶, ۲۰:۵۹

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •