آژانس هواپیمایی
pop up

fso : microsoft scripting runtime

شروع موضوع توسط sylvester ‏16 اکتبر 2007 در انجمن Visual Basic 6

  1. sylvester

    sylvester Registered User

    تاریخ عضویت:
    ‏26 مارس 2007
    نوشته ها:
    489
    تشکر شده:
    54
    محل سکونت:
    ترکیه
    سلام! من يه سوال در مورد fso دارم
    روش معمول استفاده اين است كه microsoft scripting runtime را انتخاب كرده و سپس از ليست كامپوننتها آن را tool box اضافه كنيم كه با اين كار علاوه بر file system object چهار عنصر file - drive - folder -و textstream نيز به toolbox ما اضافه ميشوند. ولي من يه كتاب دارم كه بدون استفاده از componnent اومده file system object رو قلبل استفاده كرده. اينجوري
    اولين سوال من اين بود كه به اين روش چي ميگن و چگونه اين كار انجام شده بدون كامپوننت؟
    سوال مهم ترم اينكه اگر بخواهم آبجكنه drive رو نيز به همين روش تعريف كنم چجوري بايد انجامش بدم؟
    مثلا اينجوري نوشتم نشد
    set drv = createobject("scripting.drive")x
    ممنون
     
  2. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,348
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    به این روش میگن later binding. آبجکت درایو هم باید زیر شاخه همین fso باشه که ساختید، لازم نیست بسازیدش باز (البته با fso زیاد کار نکردم) منتها اگر آبجکتها لیست نمیشن دلیل به نبودنشون نیست بلکه بخاطر اینکه fso خودش یک object بیشتر نمیشه در این روش.
     
  3. sylvester

    sylvester Registered User

    تاریخ عضویت:
    ‏26 مارس 2007
    نوشته ها:
    489
    تشکر شده:
    54
    محل سکونت:
    ترکیه
    دوست عزيز شما مطمئن هستيد با ساختن ابجكت fso ميشه در همين روال از ابجكت drive يا file هم استفاده كرد. نميدونم چرا من نميتونم جواب بگيرم
    براي نمونه ميخواهم از خاصيت isReady در عنصر drive استفاده كنم و مقدار را در msgbox ببينم. چكار كنم؟
    set fso = createobject("scripting.filesystemobject")x
    msgbox =xxxxxxxxxxxxxxx??????xxzzzzzzzzzzz:wacko:
     
  4. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,348
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    کد:
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    MsgBox fso.GetDrive("A:\").IsReady
    
     
  5. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    48
    محل سکونت:
    Anywhere
    این fso خطرناکه :D
    با این ویروس های باحالی ساخته میشه :D
     
  6. sylvester

    sylvester Registered User

    تاریخ عضویت:
    ‏26 مارس 2007
    نوشته ها:
    489
    تشکر شده:
    54
    محل سکونت:
    ترکیه
    با تشكر از دوست عزيز بلا بلا! در كل گراي كار دستم اومد

    جون خودم ميخوام باهاش يه چيزي مثل brontoke بنويسم!:D
     
  7. boxilink
  8. sylvester

    sylvester Registered User

    تاریخ عضویت:
    ‏26 مارس 2007
    نوشته ها:
    489
    تشکر شده:
    54
    محل سکونت:
    ترکیه
    عمر ما تموم شدو آخر يه زبانه ساده هم ياد نگرفتيم!
    آقا من يه مشكل دارم كمك كنيد
    من يه كمبو باكس رو فرم دارم كه شامل عناصر درايوهاي موجود سي دي ميباشد. به دين منوال
    :i
    :j
    :k
    :l
    خوب. حالا ميخوام با زدن يك دكمه كامند چنانچه اولين عنصر(يعني اولين درايو سي دي) در حالت isready بود نام اون عنصر به همراه volumeneme آن به همين كومبو باكس اضافه بشه. اينجوري نوشتم
    کد:
    Private Sub Command2_Click()
    Dim fso As New FileSystemObject
    If fso.GetDrive(Combo2.List(0)).IsReady = True Then
    Combo2.AddItem (Combo2.List(0)) & fso.GetDrive(Combo2.List(0)).VolumeName
    End If
    End Sub
    با اين كد يك عنصر به نام i:mydisk بعد از آخرين عنصر كمنو اضافه ميشه كه من نمي خوام اينجوري بشه. ميخوام اين i:mydisk به جاي :i جايگزين بشه براي همين گفتم يه ادرس ايندكس به add.item اضافه كنم و بعد يه remove.item(1) بهش اضافه كنم.اينجوري
    کد:
    Private Sub Command2_Click()
    Dim fso As New FileSystemObject
    If fso.GetDrive(Combo2.List(0)).IsReady = True Then
    Combo2.AddItem (Combo2.List(0))[B][COLOR="Red"], 0[/COLOR][/B] & fso.GetDrive(Combo2.List(0)).VolumeName
    Combo2.RemoveItem (1)
    End If
    End Sub
    ولي با خطاي type mismatch مواجه ميشم. چكار كنم!
     
  9. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,348
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    چپکی گذاشتی صفرو %}
    کد:
     
    If fso.GetDrive(Combo2.List(0)).IsReady = True Then
    Combo2.AddItem (Combo2.List(0)) & fso.GetDrive(Combo2.List(0)).VolumeName, 0
    Combo2.RemoveItem 1
    End If
    
     
    
     
  10. sylvester

    sylvester Registered User

    تاریخ عضویت:
    ‏26 مارس 2007
    نوشته ها:
    489
    تشکر شده:
    54
    محل سکونت:
    ترکیه
    :eek::eek::eek: اجب اشتباهه ضايعه اي كردم.گفتم چرا گير ميده.