نمایش نتایج 1 تا 12 از 12

نام تاپیک: محاسبه محتویات یک رشته قابل محاسبه

  1. #1
    کاربر تازه وارد آواتار edisoon
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    54

    محاسبه محتویات یک رشته قابل محاسبه

    سلام دوستان
    من قصد دارم محتویات یک رشته رو که بصورت فرمول قابل محاسبه ذخیره شده است رو محاسبه کنم به نظر شما آسانتر و بهترین روش آن چیست؟
    مثلا حاصل رشته تعریف شده در کد زیر را چگونه میتوان به دست آورد؟
    Dim Formula As String = "(1200*25)/(3*12)-200"

  2. #2
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    در مورد CodeDom جستجو کن.
    اگه چیزی پیدا نکردی بگو تا کمکت کنم.

  3. #3
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    البته با structure ها هم میتونی انجام بدی. ولی با همون CodeDom فکر کنم راحت تره.

  4. #4

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    من قصد دارم محتویات یک رشته رو که بصورت فرمول قابل محاسبه ذخیره شده است رو محاسبه کنم

    میشه در این مورد واضحتر بگید.

  5. #5
    کاربر تازه وارد آواتار edisoon
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    54

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    آقا مصطفی عزیز یه کمی در مورد CodeDom تحقیق کردم ولی زیاد سر درنیاوردم اگه یه کمی بیشتر راهنمایی کنی یا نمونه ای سراغ داری معرفی کنی ممنونت میشم چون واقعا کارم گیره توی این مورد

    جناب زرین، سئوالم واضح بود ولی بیشتر توضیح میدم که من یک String دارم که توی اون یه مقداری عدد در هم ضرب و تقسیم و جمع و منها میشه، مثلا طبق نمونه ای که بالا گذاشتم. فقط نکته مهمش اینه که در اون از پرانتز استفاده شده که یه مقداری پیچیده اش میکنه، میخوام نتیجه محاسبه اون اعداد رو که تقریبا به صورت یک فرمول میباشد را به دست بیارم.

  6. #6
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    اول فضا نامهای زیر رو به پروژت اضافه کن
    Imports System.CodeDom
    Imports System.Reflection
    Imports System.CodeDom.Compiler


    بعد با این متد که یه فرمول رشته ای رو میگیره و حاصلش رو برمیگردونه میتونی مشکلت رو برطر ف کنی.
        Private Function ProcessCommand(ByVal command As String) As Double
    Dim MyProvider As New VBCodeProvider 'Create a new VB Code Compiler
    Dim cp As New CompilerParameters 'Create a new Compiler parameter object.
    cp.GenerateExecutable = False 'Don't create an object on disk
    cp.GenerateInMemory = True 'But do create one in memory.
    'If cp.OutputAssembly is used with a VBCodeProvider, it seems to want to read before it is executed.
    'See C#‎ CodeBank example for explanation of why it was used.

    'the below is an empty VB.NET Project with a function that simply returns the value of our command parameter.
    Dim TempModuleSource As String = "Imports System" & Environment.NewLine & _
    "Namespace ns " & Environment.NewLine & _
    "Public Class class1" & Environment.NewLine & _
    "Public Shared Function Evaluate()" & Environment.NewLine & _
    "Return " & command & Environment.NewLine & _
    "End Function" & Environment.NewLine & _
    "End Class" & Environment.NewLine & _
    "End Namespace"
    'Create a compiler output results object and compile the source code.
    Dim cr As CompilerResults = MyProvider.CompileAssemblyFromSource(cp, TempModuleSource)
    If cr.Errors.Count > 0 Then
    'If the expression passed is invalid or "", the compiler will generate errors.
    Throw New ArgumentOutOfRangeException("Invalid Expression - please use something VB could evaluate")
    Else
    'Find our Evaluate method.
    Dim methInfo As MethodInfo = cr.CompiledAssembly.GetType("ns.class1").GetMethod ("Evaluate")
    'Invoke it on nothing, so that we can get the return value
    Return Convert.ToDouble(methInfo.Invoke(Nothing, Nothing))
    End If
    End Function

  7. #7
    کاربر تازه وارد آواتار edisoon
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    54

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    ترکوندی واقعا مصطفی خان
    بسیار زیبا، بسیار عالی، بسیار دلربا، بسیار حرفه ای
    هرچند از این فانکشن چیزی نفهمیدم ولی این Function حرف نداره و کارش رو به نحو احسن انجام میده و مشکل من رو حل میکنه
    (ضرب، تقسیم، جمع، منها و توان رو تونستم باهاش محاسبه کنم ولی % رو نتونستم)
    اگه بخوام بفهمم که این تابع چه اعمالی رو میتونه محاسبه کنه چطوری میشه فهمید؟

  8. #8

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    دوست من این تابع هر عملی که توسط VB قابل محاسبه باشد را محاسبه میکند حتی توان را.
    در حقیقت این کد عبارت شما را به صورت دستورات صحیح در آورده و سپس آن را کامپایل می کند و در آخر نتیجه ی آن را بر می گرداند.

  9. #9
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    برای فرمول نویسی هم چیزی سراغ دارید.
    مثلاً
    f(x)=x+2
    x=2
    اگر Net. نمی دانید وارد نشوید.

  10. #10
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    سلام با این Fanction متدهای کلاس Math رو هم میتونید فراخوانی کنید و حلش کنید. ولی در مورد فرمول نویسی شک دارم.
    ProcessCommand(" Math.Cos(30)")

  11. #11

    نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    من دقیقا همینو کپی کردم اما خطا زیر رو میده
    Specified argument was out of the range of valid values. Parameter name: Invalid Expression - please use something VB could evaluate

  12. #12
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    سن
    34
    پست
    608

    Thumbs up نقل قول: محاسبه محتویات یک رشته قابل محاسبه

    سلام دوست دیرینه من "مصطفی" جان .

    سزاوار تشکر کردن رو داری .

    اگه لطف کنی منبع رو ذکر کنی، ممنون میشم .

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •