View Full Version : فراخونی یک تابع با داشتن نام آن به صورت رشته
Win_RT
سه شنبه 06 تیر 1391, 16:43 عصر
سلام.من نام یک تایعی رو به صورت رشته دارم،چجوری این تابع رو فرخونی کنم؟
Felony
سه شنبه 06 تیر 1391, 17:44 عصر
کتابخانه RTTI رو به Uses اضافه و از تابع زیر استفاده کنید :
procedure RunMethod(SourceObject: TObject; MethodName: string);
type
TExec = procedure of object;
var
Routine: TMethod;
Exec: TExec;
begin
Routine.Data := Pointer(SourceObject);
Routine.Code := SourceObject.MethodAddress(MethodName);
if Assigned(Routine.Code) then
begin
Exec := TExec(Routine);
Exec;
end
else
ShowMessageFmt('%s method not found', [MethodName]);
end;
به عنوان مثال کد زیر تابع Test رو از کلاس جاری اجرا میکنه :
RunMethod(Self, 'Test');
BORHAN TEC
سه شنبه 06 تیر 1391, 20:30 عصر
در ضمن اگر حالت خیلی دینامیکتری نیاز دارید. مثل اینکه بتوانید هر تابعی با هر تعداد پارامتر و هر پارامتر با نوع عای مختلف را صدا بزنید و از اون استفاده کنید می تواید از ابزارهایی مثل RemObjects Pascal Script استفاده کنید. باور کنید که برنامه هایی که می توانند خودشان را بنا به نیاز مشتری به صورت دینامیک تغییر دهند و یا اینکه مشتری بتواند بنا به نیاز خود برنامه را با یکسری ویزارد بسازد اکثراً با استفاده از این قبیل ابزارها ساخته می شوند و هیچ چیز عجیب و غریبی در پشت صحنه به غیر از یک طراحی منطقی وجود ندارد. به عبارتی دیگر برای این کارها شرکت های تولید کننده نرم افزار هیچ کامپایلری طراحی نمی کنند و معمولاً این ادعا ها کاملاً دروغین هستند. یکی از بهترین ابزارها در این زمینه TMS Scripter Studio Pro میباشد که برای کسب اطلاعات بیشتر در مورد آن می توانید به آدرس زیر مراجعه کنید:
http://www.tmssoftware.com/site/scriptstudiopro.asp
بالاخره تصمیم گرفتم که از این تکنیک بسیار مهم پرده برداری کنم تا بتوانم تا حدودی دریچه ای از علم رو به روی بسیاری از دوستان باز کنم! :لبخند:
باور کنید اگر شرکت و یا شخصی بتواند نرم افزارهای کاملاً انعطافپذیر در موارد مختلف تولید کنه نونش توی روغنه و میتونه جلوی شرکتهای معروف قد علم کنه و بازار نرم افزار رو به خاک و خون بکشه! مثلاً نرم افزاری که کاربر نهایی بتونه با یکسری ویزارد برنامه خودش رو بسازه! مثلاً یک برنامه انبارداری کاملاً انعطاف پذیر و ... . به نظر من این مورد می تواند به عنوان یک ایده بسیار عالی برای پروژه نهایی دانشجویان کامپیوتر مطرح شود. :متفکر:
Ananas
سه شنبه 06 تیر 1391, 23:34 عصر
سلام برادرا. این قابلیت خیلی برای من مهمه از جهت اینکه فکر می کنم اسکریپت تری دی مکس و مایا با همچین روشهایی ایجاد شدن.
باور کنید اگر شرکت و یا شخصی بتواند نرم افزارهای کاملاً انعطافپذیر در موارد مختلف تولید کنه نونش توی روغنه و میتونه جلوی شرکتهای معروف قد علم کنه و بازار نرم افزار رو به خاک و خون بکشه! مثلاً نرم افزاری که کاربر نهایی بتونه با یکسری ویزارد برنامه خودش رو بسازه! مثلاً یک برنامه انبارداری کاملاً انعطاف پذیر و ... . به نظر من این مورد می تواند به عنوان یک ایده بسیار عالی برای پروژه نهایی دانشجویان کامپیوتر مطرح شود. :متفکر:
اسکریپت مکس یک زبان برنامه نویسی هست که ضمن قابلیت ساختن پنجره و button و یک سری UI های کاربردی (10 الی 15 تا) به همراه استفاده از رویدادهای موس و کیبرد البته کمی محدود، از طریق نوشتن کد، می تونه با استفاده از توابع و اشیای محیط Max به شکل اتوماتیک کارهایی رو انجام بده. ویژگی جالبی که داره اینه که خودش می تونه کد خودش رو بنویسه یعنی مثلا من 10 خط کد مینویسم که با اجرا شدن اون بسته به شرایط تصمیم میگیره که کدی خاص رو تولید کنه مثلا ممکنه بخواد برای صد تا شی سه بعدی، صد تا دکمه بسازه که هر دکمه ای برای شی متناظرش کار خاصی رو انجام بده. اونوقت اجرای و کامپایل این برنامه ها هم در یک چشم به هم زدن انجام میشه یعنی فایلی مثل exe نمیسازه بعد اجرا کنه. در حد خودش خیلی قویه از سیو کردن و اپن کردن فایل بگیر تا ریجیستری و هر چیزی فکرشو بکنید که یک پلاگین بخواد ازش استفاده کنه. و اهمیت اون اینه که داخل محیط مکس اجرا میشه و می تونه با اشیای داخل مکس ارتباط برقرار کنه و جزئیات اونها رو تغییر بده.
و من فکر میکنم نرم افزار هایی شبیه و هم رده ی مکس و مایا واقعا بدون ابزار اسکریپت نویسی فلج هستن! نمی تونم روزی رو تصور کنم که بخوام با تری دی مکس بدون اسکریپتش کار کنم. مثلا نرم افزار انیمیشن سازی مایا به شکلی طراحی شده که خودش خیلی ابزار و پلاگین و امکانات ویژوال برای کاربر نداره و در واقع طراحان اومدن اسکریپت مایا رو ساختن بعد همه ی ابزار ها و پلاگین ها و حتی یوزر اینترفیس مایا با اسکریپت اجرا شده. و به خاطر همین توسعه ی ابزار ها و پلاگین ها هم خیلی وسیع تر میشه توسط کابرها. من اسکریپت های زیادی با مکس نوشتم و دوست دارم اگه یک روزی برنامه ی مدل سازی و یا رندر سه بعدی ساختم قابلیت اسکریپت نویسی داشته باشه.
ممنون از دوستان به خاطر اطلاعاتی که دادن. نطرتون رو در مورد اسکریپت مکس هم بگید. بنظرتون یک کامپایلر براش طراحی کردن یا همچین روشی به کار بردن؟
BORHAN TEC
سه شنبه 06 تیر 1391, 23:45 عصر
ممنون از دوستان به خاطر اطلاعاتی که دادن. نطرتون رو در مورد اسکریپت مکس هم بگید. بنظرتون یک کامپایلر براش طراحی کردن یا همچین روشی به کار بردن؟
من در مورد max اطلاعاتی ندارم ولی مادامی که به امنیت برنامه صدمه ای وارد نشود ترکیب برنامه های مبتنی با پلاگین(که دیروز یک فیلم آموزشی در رابطه با اون رو قرار دادم) با اضفه کردن قابلیت اسکریپت می تونه ترکیب بسیار قدرتمندی رو به وجود بیاره که همچنین اضافه شدن این موارد در سرعت رشد برنامه خیلی میتونه مهم باشه چرا که افراد زیادی هم به صورت خود جوش بر روی پروژه کار خواهند کرد، به نظر من یکی از موفقیت های Firefox هم همین موضوع بوده است. اصلاً نظرتون چیه که تاپیکی با عنوان "ایده های ساخت برنامه های مدرن" ایجاد کنیم تا دوستان ویژگی هایی که در مورد ساختار برنامه های مدرن به ذهنشون میرسه رو اونجا مطرح کنند؟
Ananas
چهارشنبه 07 تیر 1391, 00:35 صبح
. اصلاً نظرتون چیه که تاپیکی با عنوان "ایده های ساخت برنامه های مدرن" ایجاد کنیم تا دوستان ویژگی هایی که در مورد ساختار برنامه های مدرن به ذهنشون میرسه رو اونجا مطرح کنند؟
شاهین جون موافقم.
راستی یک قابلیت دیگه که تو ورژن های بالا تر به مکس اضافه شده استفاده از .net هست. من اولا که با دلفی شروع به تمرین کرده بودم همش دنبال تابعی با اسمی شبیه execute بودم که یک متن رو بتونم بگذارم تو یک Memo که هنگام اجرای برنامه اونو تغییر بدم و با دکمه ای اون رو بدم به تابع execute و بعد که متوجه شدم اصلا سیستم برنامه نویسی دلفی این نیست خیلی احساس محدودیت تو برنامه نویسی با دلفی می کردم تا اینکه کم کم متوجه سبک برنامه نویسی با این زبان ها شدم. فکرشو بکنید اگه دلفی همچین امکانی رو داشت چقدر فرق می کرد! البته شاید الانم همچین امکانی باشه که من خبر ندارم ولی چیزی که مشخصه اینه که سرعتش میاد پایین ولی یه جاهایی ارزشش رو داره. ببینید مثلا من یه زمانی مقایسه سرعت انجام داده بودم، سرعت اسکریپت مکس نسبت به برنامه های دلفی 20 برابر کند تره! اما چون دست و موس و کیبورد قادر به انجام بعضی امور به شکل اتوماتیکی و بر اساس فرمول خاصی نیست ، به همین خاطر اسکریپت مکس خیلی سریع به نظر میاد. دست انسان جیب کوچیکه ی اون 20 برابر کندی هم نمیشه پس خیلی ارزش منده.
SayeyeZohor
چهارشنبه 07 تیر 1391, 02:14 صبح
شاهين جان منظورت از "نرم افزارهای کاملاً انعطافپذیر" يك چيزي شبيه CMS هستش؟
يعني مي گين يك چيزي شبيه دلفي تحويل كاربر بديم؟
اون موقع كدنويسي و استفاده از كامپوننت براي كاربر عادي سخت نيست؟
من با كامپوننت هاي TMS كار مي كنم خيلي توپند ولي اينو نديده بودم
دموش رو گرفتم خوبه
BORHAN TEC
پنج شنبه 08 تیر 1391, 17:34 عصر
شاهين جان منظورت از "نرم افزارهای کاملاً انعطافپذیر" يك چيزي شبيه CMS هستش؟تقریباً اینطور میتونه باشه!
يعني مي گين يك چيزي شبيه دلفي تحويل كاربر بديم؟خیر!
اون موقع كدنويسي و استفاده از كامپوننت براي كاربر عادي سخت نيست؟نه، باید طوری باشه که تمامی کارها به صورت یک ویزارد انجام بشه و نیازی به کدنویسی نداشته باشه. در ابتدا ممکنه که ساخت چنین نرم افزارهایی خیلی وقت گیر و دشوار به نظر بیاد ولی به نظر من که ارزشش رو داره و کلاً یک اختراع و نوآوری در صنعت نرم افزار کشور خواهد بود!
فکرشو بکنید اگه دلفی همچین امکانی رو داشت چقدر فرق می کرد!
همانطور که گفتم انجام اینکار شدنی است. انشاالله اگر نفس یاری کرد قصد دارم که در فیلم آموزشی بعدی به توضیحاتی در خصوص RemObjects Pascal Script بپردازم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.