PDA

View Full Version : سوال: شی scripting



IranVB
یک شنبه 01 اسفند 1389, 08:55 صبح
سلام به همگی
من یک فایل داشتم به نام scripting فکر کنم همگی اساتید باهاش آشنایی دارین
میخواستم به معرفی برام بکنین که چکار انجام میدهد؟

محسن واژدی
یک شنبه 01 اسفند 1389, 09:03 صبح
سلام،
اصولا شی scripting حاوی کتابخانه کوچکی از دستورات اساسی است که میتونن کار کاربر را با vb راحتتر کنن به دستورات زیر توجه کنین:
GetFileVersion
GetExtensionName
GetSpecialFolder
MoveFile
MoveFolder

هر کدام از توابع بالا یک کار خاصی انجام میدن فقط کافیه که scripting را ایجاد و این توابع را فراخوانی کنید تا عملیات درخواستی تان را انجام دهند اما در حالت عادی که وی بی فاقد بیشتر چند دستور بالاست، برای اینکه از هرکدام از توابع بالا استفاده کنید باید این کار را یبا apiهای ویندوز انجام دهید
مشکلی بود در خدمتیم
موفق باشید

IranVB
یک شنبه 01 اسفند 1389, 09:07 صبح
خیلی ممنون ولی فقط اگه میشه یکمی واضح تر توضیح بدین
چطور باید scripting را ایجاد کنم؟

محسن واژدی
یک شنبه 01 اسفند 1389, 09:11 صبح
دوست عزیز برای ایجاد یک شی باید از دستور زیر استفاده کنید:
Dim obj As New obj_typ[.subclass]
البته میتونین بجای Dim از Public و ... استفاده کنین

برای تعریف scripting برای چند دستور پست قبلیم:
Dim scr As New Scripting.FileSystemObject

استفادش هم مانند دستورات معمولی vb هست

موفق باشید

IranVB
یک شنبه 01 اسفند 1389, 09:56 صبح
ببخشید دوباره مزاحم شدم
میشه کمی راجه به دستور Dictionary توضیح بدین
آیا این دستور همانند Collection وی بی است؟

محسن واژدی
یک شنبه 01 اسفند 1389, 10:05 صبح
اساس کار این دو تقریبا مشابه هم است اما نحوه بازیابی اطلاعاتشان با هم فرق میکند
به عبارتی اطلاعات در شی collection بصورت آرایه ذخیره میشوند که طبیعتا بازیابی اطلاعاتی موجود در آن با شماره ایندکس انجام میشه یعنی شماره ایندکس را وارد میکنین و اطلاعات موجود در آن ایندکس برگردانده میشود
اما در Dictionary بازیابی اطلاعات منحصر با ایندکس نیست بلکه اطلاعات در کلیدی از نوع رشته ذخیره میشوند، نام این کلید را خودتان تعیین میکنید و برای بازیابی اطلاعات موجود در آن نیز باید نام کلید را وارد کنید تا اطلاعات مورد نظر را return کند
البته میتوانید با دستور ForEach کل اطلاعات موجود در آنرا در یک آرایه نیز ذخیره کنید که روشی دیگر برای بازیابی همه اطلاعات موجود در آن است

موفق باشید

IranVB
یک شنبه 01 اسفند 1389, 10:45 صبح
هرکاری میکنم نمیتونم با Dictionary کار کنم میشه یه نمونه ای بزارین

محسن واژدی
یک شنبه 01 اسفند 1389, 11:11 صبح
دستور را بصورت زیر استفاده کنین
دستور زیر شامل دوتا روال است؛ یکی برای افزودن و دیگری برای فراخوانی داده ذخیره شده است


Option Explicit
Dim scr As New Scripting.Dictionary
Private Sub Command1_Click()
scr.Add "VBCorporate", "Microsoft"
End Sub
Private Sub Command2_Click()
MsgBox scr.Item("VBCorporate")
End Sub

موفق باشید

IranVB
یک شنبه 01 اسفند 1389, 11:19 صبح
ببخشید هی سوال میپرسم
من از دستور scr.Add استفاده کردم داما بعضی وقت ها خطا میده و داده را اضافه نمیکنه
میشه بگین مشکل از کجاست؟

محسن واژدی
یک شنبه 01 اسفند 1389, 11:24 صبح
خب اگه یک کلید از قبل ثبت شده باشه در دیکشنری مجددا نمیشه اونو ثبت کرد به عبارتی باید توسط تابع Exist کلید را چک کنین که اگه موجود نبود اونو ایجاد و در صورتیکه موجود است کلید قبلی را با دستور Remove حذف کند، یکی از کدای پست قبل که برای افزودن اطلاعات بود را ویرایش کردم بصورت زیر:



Private Sub Command1_Click()
If scr.Exists("VBCorporate") = True Then
scr.Remove "VBCorporate"
End If

scr.Add "VBCorporate", "Microsoft"

End Sub


موفق باشید
یاعلی

IranVB
یک شنبه 01 اسفند 1389, 11:33 صبح
خیلی ممنون کاشکی پستا بیشتر از یه تشکر داشتن
مشکل قبلی حل شد
اما یه سوال دیگه: یکی از دستورات dictionary که نامش Items است اینطور که داخل توضیحاتش نوشته شده بود برای درآوردن لیست همه آیتم های داخل دیکشنری بود من این دستور را اجرا کردن که مثلا لیست 10 آیتم های ذخیره شده را برام نشون بده اما این خطا رو داد: "Type mismatch"

دستور هم بصورت زیر هست:
Msgbox scr.Items
وقتی اونو اجرا میکنم خطای بالا رو میگیرد و برنامه بسته میشه

واقعا ببخشید

محسن واژدی
یک شنبه 01 اسفند 1389, 11:39 صبح
اختیار دارید وظیفمه
البته ببینید دوست عزیز اگر داخل وی بی دیده باشید نمیشود محتویات یک collection یا در اینجا دیکشنری را در یک رشته قرار داد به عبارتی باید هریک از آیتم های این اشیاء را در یک رشته جدا گانه قرار داد که در اینجا نیازمند تعریف آرایه هستید، و مشکل دستور شما اینه که میخواستین مستقیما آیتم ها در قالب یک پیام نمایش داده بشن، اینکار نشدنیه که برای انجام شدنش باید یک سری دستورات را بنویسید
برای بارگذاری صحیح آیتم های دیکشنری دستور را بصورت زیر وارد کنید:


dim AllIt$()
AllIt$=scr.Items

برای خواندن هر آیتم هم کافیه شماره ایندکس آرایه را در AllIt وارد کنید

موفق باشید

IranVB
یک شنبه 01 اسفند 1389, 12:23 عصر
دوستان میشه کمک کنید در مورد دستور dictionary البته آقای mohsenvj هم کمک زیادی به من کردند اما اگه میشه یه نمونه بزارین
خیلی ممنون

IranVB
یک شنبه 01 اسفند 1389, 13:53 عصر
ببخشید اسپم میزام اما
دوستان منتظرم کسی نیست به من کمکی کنه
آقا محسن شما چی

محسن واژدی
یک شنبه 01 اسفند 1389, 14:27 عصر
نمونه زیر رو ببینین
البته کل توابعش رو نتونستم تو این وقت کم تو سورس بزارم اما در صورت مشکل با هریک از توابع اونا رو مطرح کنین انشاء الله حل میشود
موفق باشید
یاعلی

IranVB
یک شنبه 01 اسفند 1389, 14:46 عصر
خیلی ممنون
برای بدست آوردم لیست آیتم هااز دستور ForEach استفاده کردین راستش یکمی درک این دستور سخته آیا با همون آرایه نمیشد مگه

محسن واژدی
یک شنبه 01 اسفند 1389, 15:27 عصر
قبلا راجع به ذخیره آیتم های دیکشنری در آرایه که گفتم
لطفا پست های قبلی را بدقت مطالعه کنید

فقط کافیه که اون آرایه را در یک حلقه For قرار بدین و تک تک محتویات اونو در لیست باکس استخراج کنین
اما دستور ForEach مخصوص این کار است
موفق باشید