PDA

View Full Version : سوال: لود توابع به صورت داینامیک



javaweb341
جمعه 31 خرداد 1392, 08:48 صبح
با سلام دوستان
چطوری می شه توابع به صورت داینامیک لود کرد؟ :متفکر:
با تشکــــــــــــــــ:قلب:ــ ــــــــــــــــــــــر

SlowCode
جمعه 31 خرداد 1392, 09:45 صبح
سوالت واضح نیست!
اگه منظورت اینه که مثلا یه کدی رو از طریق تکست باکس به برنامه بدیم و اون اجرا کنه، باید از کنترل microsoft script control استفاده کنی.

ScriptControl1.ExecuteStatement Text1.Text

javaweb341
جمعه 31 خرداد 1392, 10:57 صبح
با سلام دوست عزیز خوب همینی که گفتی توضیح می دی،یه مثال بزن

یه کدی رو از طریق تکست باکس به برنامه بدیم و اون اجرا کنه؟
با تشکــــــــــ:چشمک:ـــــــ ـــــر

SlowCode
جمعه 31 خرداد 1392, 12:41 عصر
تو این مثال یه عدد رو میگیرم ضرب در 2 میکنیم و نمایشش میدیم:

ScriptControl1.ExecuteStatement "a=inputbox(""enter a number""):msgbox(a*2)"

البته دستورات خیلی محدودی رو پشتیبانی میکنه.
این کنترل یه متد دیگه هم داره به اسم eval که میتونه مقادیر محاسباتی داخل یه رشته رو محاسبه کنه،مثلا:

MsgBox ScriptControl1.Eval("2*2+5-4")


این صفحات هم به دردت میخورن
http://support.microsoft.com/kb/184745
http://www.devx.com/tips/Tip/14147

javaweb341
جمعه 31 خرداد 1392, 12:51 عصر
با شکر دوست عزیز خیلی ممنونhttp://forum.majidonline.com/majidonline/smiley_new/majidonline_rose.gif
حالا راهی وجود دارد که بدون استفاده از کنترل microsoft script control این کار را انجام داد؟
با تشکرhttp://forum.majidonline.com/majidonline/smiley_new/majidonline_wink.gif

m.4.r.m
جمعه 31 خرداد 1392, 16:49 عصر
راه دیگش اینه که بشینی و بیکار باشی خودت برا خودت دستور بنویسی مثلا با دستور if شرظ بزاری اگه تکست باکس برابر با Inputbox("") بود inputbox رو صدا بزنی .

javaweb341
جمعه 31 خرداد 1392, 17:25 عصر
تو این مثال یه عدد رو میگیرم ضرب در 2 میکنیم و نمایشش میدیم:

ScriptControl1.ExecuteStatement "a=inputbox(""enter a number""):msgbox(a*2)"

البته دستورات خیلی محدودی رو پشتیبانی میکنه.
این کنترل یه متد دیگه هم داره به اسم eval که میتونه مقادیر محاسباتی داخل یه رشته رو محاسبه کنه،مثلا:

MsgBox ScriptControl1.Eval("2*2+5-4")


این صفحات هم به دردت میخورن
http://support.microsoft.com/kb/184745
http://www.devx.com/tips/Tip/14147
ممنون این آدرس(http://www.devx.com/tips/Tip/14147) خیلی مفید بود برام و متد eval که می شه خروجی را در برنامه استفاده کرد
مثلا
Private Sub Form_Load()
Text1.Text = ScriptControl1.Eval("inputbox(""enter a number"")")
End Sub
یا مثلا
Private Sub Form_Unload(Cancel As Integer)
a = ScriptControl1.Eval("MsgBox(""do you want to exit?"", vbYesNo, ""Exit"")")
If a = 7 Then
Cancel = 1
End If
End Sub
ScriptControl برای اجرا کردن دستورات VBScript است?

SlowCode
جمعه 31 خرداد 1392, 21:06 عصر
تو vbs هم میتونی ازش استفاده کنی ولی باید با createobject شی اون رو بسازی.

mehran901
شنبه 01 تیر 1392, 10:42 صبح
با سلام دوستان
چطوری می شه توابع به صورت داینامیک لود کرد؟ :متفکر:
با تشکــــــــــــــــ:قلب:ــ ــــــــــــــــــــــر

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

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

example code :

Private Sub cmdTestLoadingDLL_Click()

Dim lb As Long, pa As Long
lb = LoadLibrary("D:\projects\other\VB_DLLs\TestDLL\TestDll.dll")

Msgbox "Library address: " + lb

FreeLibrary lb

End Sub



همه چیز گویاست و نیازی به توضیح نداره