كيف يتم تحويل متغير نصي string الى تعليمة في لغة دلفي ؟
#1
السلام عليكم ورحمة الله تعالى وبركاته

شكرا على المقيمين على هدا الموقع لهم التوفيق ان شاء الله

السؤال هو كيف يتم تحويل قيمة موجودة في متغير نصي من نوع string الى تعليمة في لغة دلفي
مثال
كود :
Text :String .......... .......... Text :=' Edit1.Text+Edit2.Text';
هل هناك دالة او مكون يسمح بتنفيد ماداخل المعرف النص كتعليمة دلفي
اي تنفد
Edit1.Text+Edit2.Text كقيمة وليس كنص
وشكرا
الرد
#2
اخي الكريم حياك الله..
اخي اعتقد انك تريد مثلا اضافة 7 + 5 و النتيجة تصبح 12 وليس 57 اليس كذلك ؟
اذن يجب عليك ان تستخدم ال
StrToInt و IntToStr حتى تتمكن من ذلك...

وقد تم شرح هذا الشئ في الدورة وبلأخص الدرس الثاني والله تعالى اعلم...
اما ان كان الأمر مختلف فلو سمحت ان توضح قليلا و بارك الله لك.
الرد
#3
السلام عليكم.
أعتقد أني فهمت قصدك أخي.
تريد أن يتغير الحدث (Event) في زمن التشغيل (runtime)
هذه طريقة لعمل ذلك لكن التغيير يكون بحدث محضر مسبقا...
يعني نكتب الحدث في مكون TAction ثم نركب الحدث على الزر TButton:
هذا مثال صغير يغير حدث النقر على الزر Button2
كود :
var Form1: TForm1; Event: TNotifyEvent; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Event := Action1.OnExecute; Button2.OnClick := Event; end; procedure TForm1.Action1Execute(Sender: TObject); begin ShowMessage('Event changed'); end;
أما إذا كنت تريد أن يتغير الحدث أثناء التشغيل إلى حدث لم يحضر أثناء التصميم، فهذا لا أعرفه وأنا أيضا أبحث عن طريقة لذلك، ,أتمنى من الخبراء أن يدلونا عليها.
شكرا كثيرا.
الرد
#4
السلام عليكم ورحمة الله

اظن انك تقصد هذا:
كود :
text :string; ..... ..... text := inttostr (strtoint (edit1.text) + strtoint(edit2.text) );
strtoint تحول القيم النصية الى ارقام و inttostr تعمل العكس
والسلام عليكم
الرد
#5
إقتباس :كيف يتم تحويل قيمة موجودة في متغير نصي من نوع string الى تعليمة في لغة دلفي

أوامر دلفي تتحول من شكل نصي الى Binary بعد عمل Compile من طرف دلفي
الملفات المصدرية PAS + DFM + DPR + ... تجمع و تتحول الى ملف EXE به نفس الاوامر لكن بلغة الالة
المعالج CPU ينفذ الاوامر الموجودة بالملف EXE

اثناء التنفيذ لايمكنك تحويل نص الى اوامر وتنفذها في نفس البرنامج (لان هذا ما يقوم به Delphi حينما يعمل Compile)
ما تستطيع فعله هو تنفيسر تلك الاوامر وتنفيذ ما تمثله لك الاوامر اي برمجة Interpreter

برمجة Interpreter شيئ متقدم نوعا ما بالنسبة لمبتدا

طبعا هناك حلول و مكونات تجارية قد تغنيك عن ذلك اذكر على سبل المثال :
RemObjects Pascal Script
TMS Scripter Studio
FastScript من مبرمج Fast Report
TPaxScripter
...

بها يمكنك تطوير برنامج مثل AutoIt

والسلام عليكم
الرد
#6
السلام عليكم ورحمة الله
اولا شكرا لكم على الاجابة
اخي Delta Aziz اود ان استفسرك بعض الشيئ
هل تقصد Interpreter استخدام الكلمة ASM .

وسؤالي بـ تحويل متغير نصي string الى تعليمة في لغة دلفي ؟
المقصود به تنفيد تعليمة موجودة داخل نص
كتنفيد تعليمكة Select في مكون Query ولكن باكثر توسع
كما جاء على دكر اخي عزيز

وشكرا لكم جمبعا
الرد
#7

ذكرت بعض المكونات وهناك غيرها مجاني وتجريبي اوة تجاري
http://www.torry.net/pages.php?id=280

إقتباس :هل تقصد Interpreter استخدام الكلمة ASM

لا، Interpreter مفسر

والسلام عليكم
الرد
#8
السلام عليكم ورحمة الله

اخي Delta Aziz لم اقصد Interpreter بالترجمة الحرفية اي تفسير برنامج انما قصدت
هل هناك طريقة او تعليمة يمكن من خلالها تفسير جزء معين من تعليمة باستخدتم تعليمات ASM .

وشكرا اخي
الرد
#9
حسب ما فهمت من سؤال الاخ هو مثلا بعد تنفيذ البرنامج نكتب له كمثال في الـ Edit1 الكود التالي :
mediaplayer1.play و يقوم البرنامج بتفسيرها على انها تعليمة برمجية في دلفي برمجت له سابقا و بالتالي سيتم تنفيذ ذلك الكود و هو تشغيل الصوت
لكن ليس بالكود if edit1.text = 'mediaplayer1.play' then
بل يقوم البرنامج لوحده تحويل النص الى تعليمة دون إستعمال اية شروط
للاسف انا أيضا أبحث عن حل لهذه القضية و لم أجده منذ سنوات
الرد
#10
السلام للجميع

ان شاء الله بخير (دعوة خاصة لاهل غزة اللهم انصرهم)

اما بعد

الدالة StrToBool تقوم بتحويل من نص الى متغير منطقي الاشكال هو ارجاع خطا عند تقديم التالي
StrToBool('True')
من فظلكم ماهو الحل وشكرا جزيلا
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم