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
همه چیز گویاست و نیازی به توضیح نداره
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.