PDA

View Full Version : سوال در مورد اجرا کردن محتوای متغییر رشته ای



reza1357
چهارشنبه 29 خرداد 1387, 18:01 عصر
سلام،
یک متغییر رشته ای دارم که محتوای مثلا :



a="msgbox("Test")"

ویا هر دستور و فرمان دیگه ای سوال اینجاست که چطوری میتونم این متغییر رشته ای رو اجرا کنم؟ :متفکر:

با تشکر

saied_genius
چهارشنبه 29 خرداد 1387, 19:34 عصر
System.Diagnostics.Process Start(string fileName)

مثال:
System.Diagnostics.Process.Start("c:\...\MyTextFile.txt")

System.Diagnostics.Process.Start("c:\test.exe")

يا

Dim myProcess As Process = System.Diagnostics.Process.Start("c:\...\MyTextFile.txt")
MessageBox.Show(myProcess.ProcessName)


موفق باشيد

reza1357
پنج شنبه 30 خرداد 1387, 17:44 عصر
دوست عزیز از پاسختون ممنونم اما منظورم این نبود.
همانطور که در پست اولم عرض کردم میخوام دستور متغییر رشته ای متغیر a رو اجرا کنم یعنی پنجره msgbox اجرا و نمایش داده بشه.

pazis-flasher
پنج شنبه 30 خرداد 1387, 18:26 عصر
باید به این شکل بنویسید :
msgbox("text")
فقط همین باید در زیر هندلر قرار بگیره...

morteza_261
پنج شنبه 30 خرداد 1387, 19:24 عصر
سلام ببین این بدردت میخوره:

Dim A AsString = MessageBox.Show("Test")
Return


نمیدونم شاید منظور شما رو درست نفهمیده باشم ،ولی چرا از راه های دیگه استفاده نمیکنید.مثلا کلمه "Test" رو برای a تعریف کنید و هر جا نیاز داشتید فراخوانی کنید:


Dim A AsString = "test"
MessageBox.Show(A)

یا اگر براتون خیلی مهمه که وقتی a را فراخواندید پنجره MessageBox نمایش داده بشه از Sub یا Function استفاده نمیکنید.


PrivateSub A()
Dim StrA AsString = MessageBox.Show("test")
Return
EndSub
.................................................. ......................
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
A()
EndSub

در هر حال کد اول کار خودش رو میکنه ولی فکر نکنم در برنامه های خیلی گسترده بشه استفاده کرد.

reza1357
پنج شنبه 30 خرداد 1387, 20:56 عصر
دوستان اجرا msgbox در متغییر فوق فقط یک مثال است.:چشمک:
بنده در حال نوشتن یک قفل نرم افزاری (برای برنامه ام) هستم :خجالت:که در این قفل مجبورم یک سری دستوراتی رو در یک متغییر رشته ای مقدار دهی کنم و بعد اون متغییرها رو در چندین جاهای برنامه فرخوانی رو اجرا کنم از توابع و ... هم در این قفل استفاده میکنم منتها یجایی گیر کردم و اون هم اینکه نمیتونم :متفکر:محتوای متغییر رشته ای که حاوی یکسری دستورات VB است رو اجرا کنم.:عصبانی++:
در زبانهای برنامه نویسی دیگه مثلا کارکتر & جلوی نام متغییر رشته که حاوی دستورات اون زبان باشد باعث اجرای متغییر خواهد شد ولی در VB.net چون شی گرا است نمیدونم.

با تشکر

reza1357
شنبه 01 تیر 1387, 13:21 عصر
با اجازه ناظم عزیز بخش این پست رو ارسال میکنم تا تاپیک در صفحه اول نمایش داده بشه.

دوستان کسی هست در این زمینه کمک کنه ؟

با تشکر

NewFoxStudent
شنبه 01 تیر 1387, 13:47 عصر
میتونید یه شی از کلاس فاکس پرو ایجاد کنید و از متد DoCmd() اون استفاده کنید
این روش مستلزم آشنایی با دستورات فاکس پرو و همین طور وجود کتابخانه Dll زمان اجرای فاکس روی سیستم شماست
ولی من تست کردم به هرحال جواب داده

حسین نیک پور
شنبه 01 تیر 1387, 17:01 عصر
میتونید یه شی از کلاس فاکس پرو ایجاد کنید و از متد DoCmd() اون استفاده کنید
این روش مستلزم آشنایی با دستورات فاکس پرو و همین طور وجود کتابخانه Dll زمان اجرای فاکس روی سیستم شماست
ولی من تست کردم به هرحال جواب داده

میشه لطفا یه نمونه سورس بزارین ؟

amirsajjadi
شنبه 01 تیر 1387, 23:19 عصر
http://barnamenevis.org/forum/showthread.php?t=105193

NewFoxStudent
یک شنبه 02 تیر 1387, 08:20 صبح
Dim a As New VisualFoxpro.FoxApplication
a.DoCmd("Create Table TestTable(Field1 Char(10))")

NewFoxStudent
یک شنبه 02 تیر 1387, 08:25 صبح
البته باید رفرنس ویژوال فاکس پرو رو به برنامت اضافه کنی

reza1357
یک شنبه 02 تیر 1387, 09:20 صبح
ممنون از شما دوست عزیز نکته جالبی رو مطرح کردین :لبخندساده:
ولی متغییر و یا عبارت رشته ای که حاوی دستور Vb است میخوام اجرا بشه نه دستورات فاکس پرو.

NewFoxStudent
یک شنبه 02 تیر 1387, 11:49 صبح
من که قبلا عرض کردم
باید با زبان فاکس آشنا باشید
منظورم این بود که کاری که میخواهید انجام بدید با فاکس انجام بدید

reza1357
یک شنبه 02 تیر 1387, 12:41 عصر
دوست عزیز بنده فاکس پرو کارم اون چیزی که میخوام فقط دستورات Vb.net هستند نه Foxpro
اگه میخواستم از فاکس پرو استفاده کنم نمیرفتم سراغ Vb.net
قبلا هم عرض کردم که درحال نوشتن قفل نرم افزاری برای class هایم هستم که کسی نتونه از اونها استفاده کنه.
بهرحال از راهنمایتون سپاسگزارم.

NewFoxStudent
یک شنبه 02 تیر 1387, 13:51 عصر
امید وارم موفق باشید
منظورم این نبود که از فاکس استفاده کنید
ولی به هر حال هر دستوری در vb یک معادلی در فاکس داره
چون هر دو محصولات Microsoft هستند
بازم امیدوارم موفق باشید

salehbagheri
دوشنبه 03 تیر 1387, 00:13 صبح
مي توني به اين روش عمل كني:


Dim a As String = "Msgbox(""Test"")"
If a = "Msgbox(""Test"")" Then
MsgBox("Test")
End If

reza1357
دوشنبه 03 تیر 1387, 05:57 صبح
مي توني به اين روش عمل كني:


Dim a As String = "Msgbox(""Test"")"
If a = "Msgbox(""Test"")" Then
MsgBox("Test")
End If

فکر خوبیه :متفکر:
با اینکار حجم کلاسم خیلی بالا میره :گریه:چون برای هر برنامه ای کلی دستور باید بنویسم. :متفکر:
ای کاش میشد متغییری از نوع شی تعریف کرد(مثلن از نوع دستورات Vb) کار رو خیلی ساده میکنه.

با سپاس از همه دوستان عزیز http://reza1357.persiangig.ir/image/Gif/gol.gif

pazis-flasher
دوشنبه 03 تیر 1387, 14:42 عصر
Dim a As String = "Msgbox(""Test"")"
If a = "Msgbox(""Test"")" Then
MsgBox("Test")
End If
ِبرنامه بالا دقیقاً چی کار می کنه ؟

morteza_261
سه شنبه 04 تیر 1387, 00:51 صبح
ِبرنامه بالا دقیقاً چی کار می کنه ؟
سلام
کد بالا میاد مقدار a رو چک میکنه شرط درست بود که هست (" MsgBox("Test رو اجرا میکنه

mazoolagh
چهارشنبه 05 تیر 1387, 23:39 عصر
فکر کنم ایشون چیزی شبیه تابع eval در vba میخوان. eval تقریبا در همه زبانهای اسکریپتی هست چون پیاده سازیش راحت هست ولی در دات نت (مثل بقیه زبانها که کامپایل میشن) بصورت متعارف نیست و برای پیاده سازیش باید کامپایلر در حین اجرای برنامه اجرا بشه.

احتمال میدم اگر vb.net eval رو گوگل کنین نمونه کد پیدا بشه!