PDA

View Full Version : محاسبه فرمول به صورت شرطی



a_b_toops
سه شنبه 13 آذر 1386, 19:49 عصر
منظور من این است که فرد به دلخواه خود شرطی را بر حسب اشیایی که بر روی فرم قرار دارد بنویسد

if (edit1.text=1)and(edit2.text=3) then
edit3.text:=edit1.text*edit2.text
else
edit3.text:=edit1.text*12

مثلا فرمان بالا توسط فرد تایپ شده و این اعمال بر روی اشیا مورد نظر اعمال شده, من یک فرم ساز درست کردم و برای نرم افزار حقوق دستمزد لازم به این است که صد در صد طراحی توسط خود فرد و این کار نیاز به این حالت دارد, در این فرم ساز تمام حالتها در نظر گرفته شده است شما می توانید انواع اشیاء را ساخته و همچنین هرنوع بانکی را طراحی کنید, هم با کد نویسی و هم با اشیاء , برای همین من در بعضی از قسمتها نیاز به شرایط خاص دارم من خودم با تبدیل تک جمله توانشته ام این کار بکنم مانند (x*y( را به یک متغیر دیگر نسبت بدهم این کار را با تبدیل به درختهای برای محاسبه انچام دادام ولی این نیاز به اصول کامپایلر نویسی دارد

Touska
سه شنبه 13 آذر 1386, 20:40 عصر
لطفا بیشتر توضیح بدهید ، من که هیچی که یکم فهمیدم ;) (مخلص آقا احمد و کوچولوشون :) )

موفق باشید :)

a_b_toops
سه شنبه 13 آذر 1386, 21:41 عصر
آخه من یه فرم ویزارد برای بانک اطلاعاتی درست کرده ام و برای محاسبه بعضی از فیلدهای آن نیاز به محاسبه بعضی از فیلدهای با شرایط خاص دارم با جملات postfix یه چیزایی رو در آوردم ولی نیاز به کنترل بعضی شرطها دارم و مثلا اگر مقدار یه فیلد برابر صفر باشد X*y را محاسبه کند اگر مقدار آن برابر 1 باشد (x*y*z) را محاسبه کند ما مخلص آقا مصطفی هستیم.

a_b_toops
چهارشنبه 14 آذر 1386, 11:53 صبح
کسی نیست جواب ما رو بده

spicirmkh
چهارشنبه 14 آذر 1386, 18:04 عصر
آخه من یه فرم ویزارد برای بانک اطلاعاتی درست کرده ام و برای محاسبه بعضی از فیلدهای آن نیاز به محاسبه بعضی از فیلدهای با شرایط خاص دارم با جملات postfix یه چیزایی رو در آوردم ولی نیاز به کنترل بعضی شرطها دارم و مثلا اگر مقدار یه فیلد برابر صفر باشد X*y را محاسبه کند اگر مقدار آن برابر 1 باشد (x*y*z) را محاسبه کند ما مخلص آقا مصطفی هستیم.
به نظر من در شرط طرفین شرط چندین حالت دارد

1- هر دو طرف ثابت مثل if a=1 then
2- یک طرف ثابت و طرف دوم متغیر مثل if a=i tehn که i است
3- دو طرف متغیر مثل if r=m then که r و m متغیر است

اما از سوال شما بر می آید شما باید حالاتی که در برنامه شما پیش می اید مد نظر بگیرید

مثل


if R=0 then T := x*y;
if R=1 then T := x*y*z;

موفق باشید

a_b_toops
چهارشنبه 14 آذر 1386, 21:15 عصر
منظور من این است که فرد به دلخواه خود شرطی را بر حسب اشیایی که بر روی فرم قرار دارد بنویسد

if (edit1.text=1)and(edit2.text=3) then
edit3.text:=edit1.text*edit2.text
else
edit3.text:=edit1.text*12

مثلا فرمان بالا توسط فرد تایپ شده و این اعمال بر روی اشیا مورد نظر اعمال شده, من یک فرم ساز درست کردم و برای نرم افزار حقوق دستمزد لازم به این است که صد در صد طراحی توسط خود فرد و این کار نیاز به این حالت دارد, در این فرم ساز تمام حالتها در نظر گرفته شده است شما می توانید انواع اشیاء را ساخته و همچنین هرنوع بانکی را طراحی کنید, هم با کد نویسی و هم با اشیاء , برای همین من در بعضی از قسمتها نیاز به شرایط خاص دارم من خودم با تبدیل تک جمله توانشته ام این کار بکنم مانند (x*y( را به یک متغیر دیگر نسبت بدهم این کار را با تبدیل به درختهای برای محاسبه انچام دادام ولی این نیاز به اصول کامپایلر نویسی دارد
متشکر از جواب شما

a_b_toops
شنبه 17 آذر 1386, 19:04 عصر
آیا کسی درباره این موضوع کار کرده است

ghabil
شنبه 17 آذر 1386, 23:17 عصر
QuickReport یک Experssion Builder داره که همه اینایی که میخوای رو پیاده سازی کرده ، میتونی سورسش رو یک نگاهی بکنی و با یکمی دستکاری ازش استفاده کنی.

A.Nemati
یک شنبه 18 آذر 1386, 15:12 عصر
1- بهتره کاربر رو درگیر اسامی کنترل‌ها نکنی، اگر کاربر جداول و فیلدها رو می‌سازه، پس بهتره با اسامی فیلدها کار کنه و اگر فقط از فیلدها استفاده می‌کنه، یک سری اسامی قابل فهم براش بذار که بتونه راحتتر فرمولهاشو طراحی کنه.
خوب حتما می‌گی این چه ربطی داره؟ این مسئله دو کمک خیلی بزرگ به تو می‌کنه. اولا می‌تونی کنترل مقادیر رو دست خودت بگیری. اینجوری دیگه نیازی نیست که درگیر این بشی که این کنترلی که در فرمول بکار رفته از چه جنسیه و به چه فیلدی مربوطه و ... دوما پردازش فرمول رو خیلی راحت می‌کنه.

2-

QuickReport یک Experssion Builder داره که همه اینایی که میخوای رو پیاده سازی کرده ، میتونی سورسش رو یک نگاهی بکنی و با یکمی دستکاری ازش استفاده کنی.

Arman_1367
چهارشنبه 21 آذر 1386, 00:05 صبح
با سلام

ببین شما راحتترین راهی که داری اینه که با پشته ها بیایی عبارت وسط را پردازش کنی مثل یک کمپایلر و بعد نتیجه را با یک if چک بکنی اگر هم حوصله نوشتن یک مفسر اسکریپت ندارید از یک اسکریپت مثل pascalscript یا fastscript استفاده کنید.

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

merced
پنج شنبه 22 آذر 1386, 23:36 عصر
همون طور که قبلاً‌حضور احمد آقای گل عرض کردم ... یه جدول بانک اطلاعاتی (یا هر چی که بتونه این اطلاعات رو ذخیره کنه لازم داری)

(آیا شرط است یا دستور) نام کامپوننت وپراپرتی عملوند نام کامپوننت وپراپرتی (و یا)


حلا مثالی که خودت زدی تو جدول اینجوری ذخیره می کنم:‌


if (edit1.text=1)and(edit2.text=3) then
edit3.text:=edit1.text*edit2.text
--------------------------------

(IsIF) (AndORSimicolon)
True | Edit1 | = | 1 | | | 1
True | Edit2 | = | 3 | | | 0
False | Edit3 | := | Edit2 | * | Edit1 | 3



به هر سختی که هست اطلاعات رو ذخیره کن و بعداً استفاده کن.

وگرنه هر کار بکنی باید به گفته دوستمون باید یه مترجم اختصاصی خودت بنویسی ..