السلام عليكم
سؤالي هو كيف اعرف قيمة تركيبة رقمية مكتوبة في تكست بمعنى اذا كان المكتوب9+3-8-6
كيف يمكن ان احصل على قيمته
شكرا مقدما
السلام عليكم
سؤالي هو كيف اعرف قيمة تركيبة رقمية مكتوبة في تكست بمعنى اذا كان المكتوب9+3-8-6
كيف يمكن ان احصل على قيمته
شكرا مقدما
قولو لا اله الا الله تفلحو
علي فكرة ، هذا السؤال تم طرحة من قبل ،
رجاء البحث جيداً
لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي
ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك
أنت وتصرفاتك
ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه
اشد آلام ... فصمتي أنا عنوان
للتنبيه فقط كل الأمثلة المذكورة منقولة من منتديات أجنبية و لم يسبق لي تجربتها لذا وجب التنبيه
هناك عدة طرق أهمها :
1 - استعمال ScriptControl أضف Refferrence لـ Microsoft ScriptControl 1.0 و مثاله :
Option Explicit
Private Sub Form_Load()
Dim sc As ScriptControl
Set sc = New ScriptControl
sc.Language = "VBScript"
MsgBox "(4 * 9) + 4 = " & sc.Eval("(4 * 9) + 4")
Set sc = Nothing
End Sub2 - إستعمال الـ EbExecuteLine الخاصة بالفجوال بيسك والتي تمكنك من تنفيذ أي كود بما فيها تقويم العبارات الرقمية و لكن عيبها أنها غير موثقة و لا يمكن استعمالها على جهاز لا يوجد به الفجوال بيسك . مثاله (الحذر مطلوب)
Option Explicit
Public Number1 As Long
Public Number2 As Long
Private Declare Function EbExecuteLine Lib "vba6.dll"(ByVal pStringToExec As Long, ByVal Foo1 As Long,ByVal Foo2 As Long,ByVal fCheckOnly As Long) As Long
Public Function Execute(CodeLine As String, Optional CheckOnly As Boolean = False)
Execute = (EbExecuteLine(StrPtr(CodeLine), 0&, 0&, Abs(CheckOnly)) = 0)
End Function
Public Sub Main()
MsgBox "Ceci est un test"
Call Execute("MsgBox ""Ceci est un test""")
Number1 = 1024
Call Execute("Number" & 1 & " = 1024")
Number2 = Number1 + 1024
Call Execute("Number" & 2 & " = Number" & 1 & " + 1024")
MsgBox Number1 + Number2
End Sub3 - إستعمال محرك قواعد البيانات Jet :
بعد إضافة Refference لـ Microsoft DAO 3.51 قم بإنشاء ملف وضع فيه القيم المراد تقويمها مثال
"Pi";"e"
3,1415926535897932384626433832795;2,71828182845905
ثم إستعمال Select عادي كمال يلي
Public Function MyEval(expression As String) As Variant
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase(App.Path, False, True, "Text;")
Set rs = db.OpenRecordset("SELECT " & expression & " FROM data.dat;")
MyEval = rs(0)
rs.Close<BR> db.Close
Set rs = Nothing
Set db = Nothing
End Functionو لاستدعاء الدالة يمكن أن تستعمل ما يلي
Private Sub Command1_Click() Dim result As Variant result = MyEval(Text1.Text) MsgBox result End Sub
4- إستعمال مكتبة جاهزة راجع الروابط التالية
http://www.topshareware.com/Room76-Express...wnload-5149.htm
http://www.programurl.com/axeval-expressio...vex-control.htm
http://www.programurl.com/software/expression-parser.htm
5 - الحل البارع و المفيد أنشأ دالتك الخاصة إبحث في الـ msdn لأني متأكد من و جود مثال ممتاز بالفجوال بيسك و لكني لا أذكر مكانه
تم تعديل هذه المشاركة بواسطة ytreza في 19 يناير 2008 في 13:34
جزاك الله خيرا أخي
الحل الأول جميل جدا وقد استخدمته لحساب sin و cos و tan و log وقام بحسابهم بالفعل
وأما بالنسبة للحل الخامس فقد كنت أنوي بالفعل عمل ذلك لكن تراجعت لأني اكتشفت أن الموضوع طويل ويحتاج إلى وقت وليس عندي هذا الوقت وخاصة إذا أخذنا في الاعتبار الدوال المثلثية واللوغاريتمات
من أقوال الأئمة
الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".
الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".
الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".
الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".
علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".
وكل خير في اتباع من سلف وكل شر في ابتداع من خلف
Private Sub Command1_Click() Dim T1, T2 As String T1 = T1 T2 = T2 For x = 1 To Len(T1) If Mid(T1, x, 1) = "+" Then T2 = Val(Mid(T1, x + 1, 1)) + Val(Mid(T1, x - 1, 1)) ElseIf Mid(T1, x, 1) = "-" Then T2 = Val(Mid(T1, x - 1, 1)) - Val(Mid(T1, x + 1, 1)) End If Next x End Sub
هذا ما قدرت عليه أخي , وأرجو ممن لديه خبرة , ذكر كيف أستطيع إعادة الدوارة من الاول مع زيادة قيمة x
بحيث تستطيع هذه الدوارة العمل مع عدة أرقام , فهي حاليا تتوقف عند : "10+5" مثلا , أو "1+2+6" فقط تتعامل مع رقمين مكونين من خانة واحدة مثل "6+4"
أرجو الرد
اقتباسIf A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut
Albert Einstein
بس في مشكلة لما حاولت استخدام الطريقة الاولى ظهرت رسالة هى
invalid use or new keyword
قولو لا اله الا الله تفلحو
كنت قد وضعت كود لذلك في هذا الموضوع (تحويل نص إلى رقم)
وأعتقد أنه محتاج منك بعض التعديل
لكن أفكار الأخ ytreza جميلة جدااا
تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 20 يناير 2008 في 01:14
yasser_abu 2020 كتب:بس في مشكلة لما حاولت استخدام الطريقة الاولى ظهرت رسالة هىinvalid use or new keyword
تأكد من اضافة Microsoft Script Control 1.0 من Project => References
من أقوال الأئمة
الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".
الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".
الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".
الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".
علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".
وكل خير في اتباع من سلف وكل شر في ابتداع من خلف
السلام عليكم
هذه طريقة أخرى من مايكروسوفت باستعمال الـ Excel تجدها في الرابط التالي
How To Evaluate Numeric Expressions Stored as a String
و في المرفقات مثال من موقع نادي المبرمجين الفرونكوفون أظن أنه يفي بالغرض
و هذا مصدر مترجم بالفجوال بيسك؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ Compiler
هذا الموضوع مغلق.