4199 (23-05-15), M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
امنیت در AMS :
خوب اولا که امنیت رو بیشتر واسه فایلای دیتابیس به کار میبرن و دوما این پست قراره به امنیت فایلا و دیتابیس ای گفته شه که خودشون قابلیت رمز نگاری ندارن. مثل دیتابیس sql 3 (نه دیتابیس my sql که خود طرف همون موقع میتونه روش رمز بزاره و این قابلیت تو خود دیتابیس های my sql هست)
امنیت تو اینجا ،2 حالت و روش داره :
1) دسترسی فایل مورد نظر رو قطع کنیم که در این صورت تا دسترسی اش باز نشه ، نمیشه اطلاعات رو خوند یا روش نوشت و ذخیره کرد
2) با دستورات و توابع crypto ، روی فایل مورد نظر ، پسورد گزاشت که تو این روش ، روش ماهی آبی برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید یا همون BlueFish گفته میشه. در این روش برای کد گزاری و رمز نگاری ، باید فایل مبدا رو بدین و فایل مقصد رو که حاوی همون فایل با رمز هست (البته با پسوند دیگه ای هم هست که واسه همین ، نمیتونین همون لحظه ازش استفاده کنین) و برای استفاده ، باید مسیر فایل مقصد و رمزش رو بدین تا کد گشایی شه و تو یه جای دیگه این فایلی که بدون رمز و قابل استفاده هه رو ، ذخیره و استفاده کنین
روش اول :
با دستور
کد:File.SetPermissions("C:\\MyFile.ext", SID_EVERYBODY, DENY_ACCESS, ALL_PERMISSIONS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);
تو ورودی یا همون پارامتر اول کد بالا ، مسیر همراه پسوند فایل رو بدین . حواستون باشه تو AMS هر درایو یا پوشه ای که بهش میرسین ، باید با دو تا (نه یکی) علامت \\ از هم جدا شن
میتونین دسترسی به یه فایل رو مسدود کنین که نباید در این صورت ، وقتی که از اتوران دارین خارج میشین ، فایل های مورد نیازی که برا اجرای اولیه ی بعدی لازمه مثل فایل autoran.exe و یا فایلایی که تو پوشه ی autoplay و ... هست رو مسدود کنین وگرنه اتوران بالا نمیاد و هیش کاریش نمیشه کرد. همونطور که گفتم ، بیشتر کاربرد ، تو امنیت و مسدود کردن فایلای دیتابیس هه. یادتون باشه که با این روش ، نمیتونین کاری کنین که طرف فایل رو از ویندوزش حذف نکنه ها. فقط با این روش ، تا حدود زیادی خیالتون راحت میشه که افراد عادی و... نمیتونن دیتابیس رو ویرایش و اجرا کنن (چون امنیت که 100 در 100 نیست برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید )
برای استفاده از اون فایلی که مسدود کردین هم باید اول از مسدودیت خارجش کنین با تغییر تو ورودی سوم همون کد بالا ،اینجوری کد رو تنظیم کنین :
کد:File.SetPermissions("C:\\MyFile.ext", SID_EVERYBODY, SET_ACCESS, ALL_PERMISSIONS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);
خوب معلومه دیگه ممولا کد باز کردن فایل دیتابیس رو تو رویداد on startup مینویسن تا موقع ورود به اتوران ، قابل استفاده بشه و کد مسدود سازی شو موقع خروج اتوران تا کسی چش چپ به دیتابیس نگا نکنه برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
روش دوم :
استفاده از دستور همون ماهیه هست برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید (دیگه موند پلنگ و یوز پلنگ شکار کنیم برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید )
که برای پسورد گزاشتن از دستور
کد:Crypto.BlowfishEncrypt("C:\\MyFolder\\MyFile.txt", "C:\\DestFolder\\MyFile.enc", "trustno1withthispassword");
استفاده میکنیم که تو ورودی اول ، مسیر همراه پسوند اون فایلی رو که میخایم رمز نگاری کنیم رو میدیم و تو ورودی دوم ، مسیر همین فایلی که رمز نگاری شدش ، حالا بگیم کجا ذخیره بشه رو (تو ورودی دوم ، پسوند فایل رو نباید عوض کرد و همش باید همین enc. باشه. فقط اسم و مسیر ذخیره شدن شو هر جایی که دوس داشتین ، بگین. نکته ی بعدی هم حواستون به مسیری که میدین باشه که گفتم باید بین هر درایو یا فایل یا پوشه ای که میزارین ، دو تا علامت \\ بزارین). تو ورودی سوم هم که پسورد رو تو علامت دابل کونیشن مینویسن . ینی الان پسورد این فایل تو اینجا میشه trustno1withthispassword (بی چاره اونی که بخاد این همه رو رمز گشایی کنه برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید )
حالا برا باز کردن اون فایلی که پسورد داره و رمز نگاری شد (منظورم همون فایل مقصدی هه که مسیر ذخیره سازیش رو تو ورودی و پارامتر دوم کد بالا دادین که با پسوند enc. ذخیره شد) از دستور
کد:Crypto.BlowfishDecrypt("C:\\MyFolder\\MyFile.enc", "C:\\DestFolder\\MyFile.txt", "trustno1withthispassword");
میتونین استفاده کنین که تو ورودی اول ، مسیر اون فایلی که قبلا رمز نگاری کرده بودین و پسوند enc. داشت رو بدین و تو ورودی دوم هم مسیر همین فایلی رو که میخاین رمز گشایی بشه رو بگین کجا ذخیره کنه . تو اینجا لازمه که برای استفاده ، پسوند فایل ، همون پسوند فایل اولیه باشه. مثلا تو ورودی اول دو تا کد بالاتر که داشتیم رمز نگاری میکردیم ، پسوند فایل اصلی مون که بود txt. پس پسوند فایلی که تو ورودی دوم همین کد بالا هست هم باید همون رو بدیم که txt. بود. تو ورودی سوم هم که باید اسم رمزی رو که رو اون فایل گزاشته بودیم رو بدیم.
حالا فایل رمزگشایی شده که گفتیم تو مسیر ورودی دوم کد بالا که دادیم ، ذخیره شدش ، فقط این کد قابل استفاده هست. ینی از اون فایل رمز نگاری شده که پسوند enc. داشت ، مستقیما نمیتونیم استفاده کنیم. پس این فایل تا باز نشد و کد گشایی نشد ، قابل استفاده نیست
یادتون نره باز هم موقع خروج از اتوران ، با دستور
کد:File.Delete("C:\\MyDir\\MyFile.ext", false, false, false, nil);
فایلی رو که کد گشایی کردین و ممولا دیتابیس هست (که تو اینجا اسمش مثلا MyFile.txt بود) رو پاک کنین تا بهش چپ چپ نگا نکنن برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
4199 (23-05-15), M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
نصب و استفاده و دانلود پلاگین های نرم افزار Autoplay Media Studio 8 (تو فیلم گفته نشد) :
اول درباره ی پلاگین ها تو AMS توضیح بدم یه کم ، بعد لینک دانلود شو براتون بزارم
کلا 3 (حالا یا 4 ، دقیقا نمیدونم) نوع پلاگین تو نرم افزار AMS داریم
اولی پلاگین اکشن (action plugin) هه که باعث میشه کدهای جدید به AMS اضافه شه و ملومه که اگه کد اضافه شه ، قابلیت نرم افزار بالاتر میره . پس یکی از مهم ترین پلاگین ها ، این نوع پلاگین ها هستن. این کدها ، به جمع کدهای دیگه میپیوندند (البته بعد از نصب و فعال کردن که میگم چجوری این کارو کنین) .
برای نصب این نوع پلاگین ها ، اول نرم افزار AMS رو ببندین و بعد آخرین پوشه ای که به اسم همون پلاگین هست رو تو اون جایی که نرم افزار رو نصب کردین ، داخل پوشه ای بنام Plugins>Actions ، کپی کنین . مثلا تو لینک زیر که میتونین دانلود کنین پلاگین رو ، اول پوشه ای بنام Plugin هست و بعد داخل پوشه ی action plugin ، پلاگین های مربوط به این قسمت هست . حالا اسم یکی از این پلاگین های اکشن ، هست tray (یه اکشن پلاگینی هه که کدها یا همون اکشن یا همون توابعی رو برای مدیریت بهتر آیکون تو system tray ایجاد میکنه مثلا میشه رو آیکون اش تو system tray ، کلیک راست کرد و یه گزینه هایی برا انتخاب بیاد). برای نصبش ، وقتی داخل خود پوشه ی tray برین ، یه فایل how to install و یه پوشه ی example و یه پوشه ی tray هست که منظور من این آخرین پوشه ی tray هست . (محتویات داخلش نه ها .) کل همین آخرین پوشه ی tray رو کپی کنین و داخل اون مسیری که نصب کردین AMS رو که بصورت پیش فرض ، C:\Program Files\AutoPlay Media Studio 8 Trial هست ، داخل اش تو پوشه ی Plugins و داخل اون ، تو پوشه ی Actions ، اون رو Paste کنین ینی بصورت پیش فرض ، پوشه ی tray ای که گفتم رو باید تو پوشه ی زیر ، کپی کنین :
C:\Program Files\AutoPlay Media Studio 8 Trial\Plugins\Actions
اگه دقت کرده باشین ، چون پلاگین ما از نوع action بود ، پس داخل پوشه ی action کپی شد (این تیکه همون بیشتر بدانید کتابا بود )
خوشال نشین زیاد . تا حالا فقط تونستین نصبش کنین. استفاده اش یه جور دیگه هه
برای استفاده از این اکشن پلاگین ها ، بعد از اجرای AMS ، از اون منوی بالا ، برین تو منوی Projects و گزینه ی یکی مونده آخری ینی Plugins
حالا لیست ای میاد که تو این لیست ، همه ی اکشن پلاگین هایی که نصب کردین ، تو این لیست میاد و هر کدوم رو که میخاین استفاده کنین ، تیک کنارشو بزنین . (یادتون باشه تو هر پروژه ی مختلف که باز میکنین ، باید این گزینه هایی رو که میخاین ، هر بار تیک شو اینجا بزنین)
بعد هم وقتی که میخاین برین تو قسمت action wizard ، ینی میخاین همون جایی برین که کدها رو بنویسین و انتخاب کنین ، میبینین که اَو ، اسم این پلاگین به همراه نوشته ی "Plugin" داخل پرانتز ، جلوش نوشته هه و حالا میتونین ازش استفاده کنین مثلا تو این مثال این جوری Tray (Plugin) نوشته میشه تو لیست اکشن ها
دومی هم پلاگین آبجکت یا شی (object plugin) هه که باعث میشه شی جدید اضافه بشه به AMS و به همراه اون ، کدها یا همون اکشن های مربوط به اون شی اضافه شه .
قضیه ی نصب این آبجکت پلاگین هم دقیقا مثل همون اکشن پلاگین هه با این تفاوت که اون پوشه ی مبدا (که درباره ی پوشه ی tray تو بالا توضیح داده بودم) رو بجای اینکه تو پوشه ی Actions کپی کنین ، تو پوشه ی Objects باید کپی کنین چون ملومه دیگه ، این از نوع آبجکن پلاگین هه . پس مسیر مقصدش بصورت پیش فرض میشه :
C:\Program Files\AutoPlay Media Studio 8 Trial\Plugins\Objects
برای استفاده از این پلاگین هم ، رو یه جای خالی تو صفه ، کلیک راست کنین و برین روی گزینه ی آخر ینی Plugins ، حالا تو اینجا ، لیست تمام آبجکت پلاگین ها رو میبینین که برای استفاده ی ازش ، باید انتخابش کنین و تو رویداد مخصوص خودش که داره و حتی میتونین از اکشن ها (کدها یا توابع) های مربوط به این پلاگین که تو قسمت action wizard میاد ، استفاده کنین
سومین پلاگین هم ترنزیشن پلاگین (transition plugin) هه که پلاگینی هست برای وقتی که صفحه عوض میشه، یه حرکت انیمیشنی خاص بین دو صفحه ایجاد شه که معمولا کپی کردنی نیست و برای نصبش ستاپ داره . اگه کپی کردنی هم باشه ینی بصورت پوشه اگه بود ، میتونین تو مسیر پیش فرض زیر کپی کنین :
C:\Program Files\AutoPlay Media Studio 8 Trial\Plugins\Transitions
برای استفاده از این پلاگین ، باید روی صفه ی خالی پروژه ، کلیک راست و peroperties رو بزنین و از قسمت پایین صفه ای که باز شد ، ینی قسمت transition ، پلاگین مورد نظرتونو انتخاب کنین تا موقع ورود به صفه ، اون نوع انیمیشن اجرا بشه
حالا تو زیر ، براتون یه چن تا پلاگین آپلود کردم که بیشتراشون از مهم ترین پلاگین ها ینی action plugin ها هستن . میتونین از لینک زیر دانلود کنین :
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
پلاگین هایی که توشه :
1) AMS Utilities Setup 2.6
2) Winapi V22
3) Download 11
4) ZipExBundle
5) RecycleBin
6) TaskBarListActionsPlugin
7) Tray 1
8) skin
9) ProgressEx
حالا توضیحات به ترتیب :
1) درباره ی اولی ینی AMS Utilities Setup 2.6 که قبلا توضیح داده بودم و مجموعه ای از هر 3 نوع پلاگین هه و کلا پلاگین ارزشمندیه . ینی تک دونه ی یکی یه دونه هه از اکشن پلاگین های این قسمت هم میشه به HTTP که برای ادامه ی دانلود های قطع شده یا خراب شده هست و ... . اکشن پلاگین FTPS برای آپلود فایل و ... هه . اکشن پلاگین Math ، کدها و توابع مهم برای ریاضی هه مثلا برای محاسبه ی Nan و Nor و ... (علاوه بر توابعی که اکشن Math داره) و ... و همینطور انواع transition plugin مثل Metro و FadeIn و ...
این پلاگین ، بصورت ستاپ نصب کردنی هه . ینی کپی کردنی نیست . اما قضیه ی استفاده رو ، باید از طریقش همونطور که قبلا گفتم برین
2) یکی دیگه از تکدانه (آب میوه نه ها ) ی دوردونه که بالای 100 تا اکشن پلاگین داره که مخلوطی از اکشن ها و کدهای مختلف ان
مثلا مهم ترین هاش میشه به اکشن هایی مثل کم و زیاد کردن وضوح (transparency) پنجره ی اتوران و حتی بقیه ی پنجره ها (WinApi.SetWindowTrans) و برای عکس گرفتن از پنجره ها (مثلا پنجره ی اتوران) WinApi.CaptureWindow و برای نشون دادن یا ندادن و یا مینیمایز کردن کل پنجره ها (مخصوص وقتی که میخاین صفه دسکتاپ فقط نمایش داده شه) و ایجاد انواع شکل های هندسی مثل بیضی و ... و مدیریت Rycycle bin و فعال و غیر فعال کردن موس و کیبرد برای بضی از پنجره ها و ایجاد نوار وضعیت (WinApi.CreateWindowEx) و خیلی از اکشن های دیگه
3) سومی هم اکشن پلاگینی برای دانلود همزمان چندین فایل با قابلیت مکث و ادامه هه (نمونه ی این اکشن هم تو پلاگین اولی هست اما از این اکشن استفاده کنین بهتره. ینی اون اصلا کار نمیکنه resume اش انگار اما این یکی کار میکنه ولی گاهی اوقات ممکنه ارور بده. پیشنهادم اینه که اول با کد و اکشن پیش فرضی که تو قسمت HTTP نرم افزار AMS هست (نه پلاگین HTTP اولی که گزاشتما) ، برای دانلود قدم پیش بزارین ، بعد اگه نصفه نیمه کاره طرف ول کرد ، با این پلاگین ، ادامه شو انجام بدین .)
نکته ی مهمی که درباره ی این پلاگین باید بگم اینه که در هر صورتی که طرف بخاد کنسل کنه یا اینکه وسط دانلود و یا حتی بعد از اینکه دانلود تموم شد ، از نرم افزار و اتوران خارج شه ، قبل از کد خروج ، حتما کد استوپ دانلود و حذف دانلود سیژن که هر دو کار را کد
کد:result = Download.Delete(DownloadSesion);
انجام میده رو بزارین و بعد از این کد ، کد دلخواه خودتونو مثلا خروج از نرم افزار رو بزار وگرنه برنامه تون کرش میشه
دقت کنین که متغییر DownloadSesion تو کد بالا ، متغییر عددیه که برا کد Download.Start هست ینی کد یا تابع یا همون اکشن Download.Start ، عددی رو برمیگردونه اینجا که تو متغییرذخیره DownloadSesion ذخیره کردیم و این عدد رو برای استوپ دانلود و حذف دانلود سیژن ای که گفته بودم ، باید به کد Download.Delete داد (همونطور که تو بالا میبینین)
4) اکشن پلاگینیه برای اکسترکت و ساخت فایل های Rar (بدیش اینه که رایگان نیست و 14 روزه هه . اگه کسی سریال اینو پیدا کنه که خیلی ممنون میشم یا نسخه ی رایگانشو پیدا کنه)
5) اکشن پلاگین برای مدیریت Rycycle Bin
بقیه هم که چندان نیاز به توضیح نداره و از نوع اکشن پلاگین اند و توضیح آبجکت پلاگین ProgressEx رو قبلا داده بودم تو پست صفه قبل
راستی میتونین از این سایت ، پلاگین های بیشتری رو دانلود کنین
4199 (23-05-15), M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
نکته ی دیگه :
اگه یه متغییری تعریف کرده باشین که هنوز اجرا نشده باشه یا کلا اصلا یه متغییر رو تعریف نکرده باشین ، مقدار nil رو برمیگردونه اون متغییر
مثلا اگه تو رویداد کلیک راست شی ای یه متغییر عددی ای بنام Count=5 تعریف کرده باشین و اگه رو اون شی هنوز کلیک راست نکرده باشین ، پس این متغییر تعریف نشد و اگه در این موقه تو رویداد کلیک چپ این شی ، این متغییر رو بخاین فراخونی کنین ، nil رو برمیگردونه که باید این جوری براش بنویسین :
کد:if Count~=nil then اینجا دستورات رو بنویسین end
که ینی فقط مخالف nil یا همون مخالف پوچ بود ینی اگه فقط و فقط این متغییر Count اجرا شده بود (ینی اول کلیک راست کرده باشه طرف) ، این دستورات داخل که فارسی نوشته شد تو خط بالا اجرا بشن وگرنه اگه کلیک راست نشده بود (ینی اون متغییر تعریف نشده بود) ، این دستورات اجرا نشه
در کل منظورم اینه که nil فقط برای متغییرها یا بهتر بگم تابع ها و اکشن هایی که بصورت پیش فرض تو خود برنامه ی AMS هستن و موقه رخ دادن خطا اتفاق میافتن ، نیست بلکه واسه همه ی متغییر های تعریف نشده و یا همه ی متغییر های اجرا نشده هم هست
nil هم که میدونین به منی هیچ و پوچ هست (ینی هیچ چی متغییر تعریف نشد و یا این متغییر یا تابع یا آرایه ، پوچ هست و خطا اتفاق افتاد)
4199 (23-05-15), M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
یه نکته ی دیگه درباره ی تغییر (کد نویسی برای تغییر) رنگ :
اینه که چون رنگ ها هر کدوم شون یه عدد (کد) ای دارن پس متغییرشون از نوع عددی هه اما یه مشکل کوچیک اینه که از نوع اعداد شونزده دهی (هگزا دسیمال) ان که برای استفاده اش باید اول اون عدد رو که حتی میتونین از عدد رنگ تو همین انجمن (نوشته ی زیر رنگی که انتخاب میکنین و با علامت # شروع میشه) یا تو همون AMS این عدد ها رو به عدد دهدهی تبدیل کنین ، و بعد استفاده کنین وگرنه جواب نمیده
مثلا عدد هگزا دسیمال رنگ سفید ffffff# هست که باید اول به عدد دهدهی تبدیل اش کنین که میشه 16777215
بدشم که خودتون اوستایین و با کد و آرایه ی مخصوص خودش که تو فیلم کاملا توضیح داده شد ، اجرا و تغییر رنگ میدین . ینی مثلا اگه بخین برا یه شی Label1 برا حالت نرمال اش تعریف کنین :
کد:Label.SetProperties("Label1", {ColorNormal=16777215});
یا مثلا عدد رنگ سیاه هست 000000# که تو عدد دهدهی اش هم میشه 0
M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
تبدیل عدد هگرادسیمال (شانزده دهی) به دسیمال (دهدهی) :
من هی عذاب وجدان میگیریما. بزارین اون تبدیل عدد شونزه دهی رم بگم
کلاس اول ابتدایی ، یکان ، دهگان ، صدگان خوندینو بلدین هَندا (هنوز)؟ این هم عدل همونه
مثلا 251 رو به یکان و دهگان و صدگان بخایم تبدیل کنیم ، چی میشه؟
میشه یکی ، یکان (یکی ، یک تایی) و 5 تا دهگان و 2 تا صدگان که 2 تا بسته ی صدتایی که میشه 200 تا رو با 5 تا بسته ی دهگان که میشه 50 تا رو با یکی یکان جمع میکردیم و میشد 251
ینی شد :
(1*1)+(10*5)+(100*2)
تا اینجا حالی بَیِّه؟ (ینی متوجه شدین؟) خا بریم ادامه
خا حالا اینو بصورت ریاضی بگین . خوب 2 و 5 و 1 که تو معادله ی بالا سرجاشون هست ان . با اینا که کاری نداریم . منظور من 100 و 10 و 1 معادله ی بالاست. خوب معلومه که عددهای ممولی (نقی نیستا ) ما در مبنای 10 ان پس این 3 تا عدد 100 و 10 و 1 رو یه جوری باید بگین که وقتی عدد 10 رو صربدر خودش میکنیم ، این اعداد بدست بیاد .
ینی 10 ضربدر چه عددی میشه 100؟ ملومه دیگه 10
ینی 100=10*10
ینی 10 به توان 2 میشه 100 پس جوابش میشه 10 به توان 2
حالا 10 را ضربدر چه عددی کنیم ، میشه 10؟ منظورم اینه که توان 10 چند باشه که خودش بشه؟ ملومه دیگه 1
بدش 10 به توان چند میشه 1؟ بازم ملومه ، 0
پس میشه :
(1*10 به توان 0)+(5*10 به توان 1)+(2*10 به توان 2)
خوب ، تا اینجا رم که متوجه شدین؟ (حالا نمیدونم اینجا چجوری توان رو بالای عدد مثل تو ریاضی بنویسم ، این جوری بصورت فارسی نوشتما )
حالا تو محاسبات ، 4 ساعت نمیتونین جذر 100 رو بگیرین که یادتون بیاد میشه 10 به توان 2 که میخاین جین فنگی حساب کنین ، چی کار میکنین؟
میدونین دیگه ، اصل اون توان هه هست که مهمه و اگه بدونین به توان چن میشه ، دو سوته تو ماشین حساب میزنین و بدیت میارین
10 که مبنای ما بود و باهاش کاری نداریم . هیچ چی . توانو چجوری سریع بدست بیاریم؟
عدد ما بود 251 درسته؟
همیشه توان مبنای 10 ، اولین عدد از سمت چپ (در اینجا عدد 1) میشه 0 و توان دومین عدد از سمت چپ (در اینجا عدد 5) میشه 2 و توان سومینعدد از سمت چپ (در اینجا عدد 2) میشه 2 و ... ینی توان n امین عدد از سمت چپ ، میشه n-1
ینی اینکه الان 251 ، 3 تا دونه عدد نیست؟
عدد 2 (صدگان) ، چندمین عدد از سمت چپ هه؟ 3 امین عدد دیگه ، پس یکی کم کنین ، میشه 2 خوب؟ پس توان عدد 2 (صدگان) عدد 251 میشه 10 به توان 2
عدد 5 (دهگان) ، چندمین عدده؟ دومین دیگه؟ ها؟ یکی کم کنین میشه 1 . پس توان عدد 5 (دهگان) ما میشه 10 به توان 1
آخری هم که توان 10 اش یکی کم کنین میشه 0
پس بازم رسیدیم به همون بالایی (ضرب و جمع رو گفتم دیگه مثل بالایی هه)
خسته کیه؟
تکبیر
اسب نرم افزار Matlab :
حالا این مفعوم اعداد دهدهی بود . بریم سوراخ (چی سراغ) شونصد دهی
اول بزارین اینو بگم . همنطور که میدونین که نمیدونین ولی میدونین چرا اعداد تو کامپیوتر 0 و 1 ان؟ ینی به اعداد 0 و 1 چی میگن؟ میگن دودویی یا همون دو بیتی (غزل نیستا. بِیت نخونین ) . نه اینکه دو تا عدد باشه بهش بگن دو بیتی ها . مثلا دهدهی به چه اعدادی میگن؟ از عدد 0 تا 9 درسته؟ پس مثلا هر وقت شنیدین دهدهی ینی عدد هه از 0 شرو میشه تا یکی کمتر از 10 که میشه 9
یا مثلا تو همین دودویی ینی از 0 تا یکی کمتر از 2 که همون میشه 1
یا شونزده دهی هم ینی از 0 تا یکی کمتر از 16 ینی 15
قضیه ی اعداد هم همه ایجوریه
اما ما عدد بزرگتر از 9 نداریم (منظورم تو اعداد و تنوع اعداد هست که از 9 بزرگتر نداریم و بقیه مخلوطی از 0 تا 9 ان) . مثلا ما که میگیم 10 ، ده نیست . مخلوطی از 1 و 0 هه
برا اعداد شونزده دهی هم همینجوره چون بزرگتر از 9 وجود نداره ، مجبور شدن ، بجای عدد 10 تا 15 ، حروف الفبا را به ترتیب بزارن تا به 15 برسه (گفتم دیگه عدد شونزده دهی ینی از 0 تا 15)
اونا این حروف ها ان و هر جا حروف شون رو دیدین ، عدد بجاش بزارین :
10 --> a
11 --> b
12 --> c
13 --> d
14 --> e
15 --> f
خوب حالا باید اتوماتیک طبق چیزایی که تو بالا گفته شد ، تبدیل رو بلد باشین دیگه؟ ها؟
مثلا عدد شونزده دهی 00FD2C رو میخایم به دهدهی تبدیل کنیم :
چون شونزده دهی هست عدد مبدا ما (عددی که میخایم تبدیل کنیم ، ) پس 16 رو مینویسیم ینی پایه ی ما 16 هه و توانش مهمه
توانش هم اولین عدد از سمت چپ که C باشه 0 میشه. خود C هم که میشد عدد 12 پس تا اینجا میشه 12*16 به توان 0
توان دومین عدد از سمت چپ که 2 باشه ، میشه 1 که میشه 2*16 به توان 1
توان سومین عدد از سمت چپ که D باشه میشه 2 . خود D هم که میشه 13 پس میشه 13*16 به توان 2
توان چهارمین عدد از سمت چپ که F باشه میشه 3 و خود F هم که میشه 15 پس میشه 15*16 به توان 3
اون صفرهای سمت چپ هم مثل عددهای ممولی (مثلا 00100 که میشه همون 100) هم که حساب نمیشه
پس کلا میشن :
(12*16 به توان صفر)+(2*16 به توان 1)+(13*16 به توان 2)+(15 *16 به توان 3)
که با یه حساب سر انگشتی (ماشین حسابی ) میشه :
64812 = 61440+3328+32+12
باز چیز دیگه ای هست که میخاین یاد بگیرین ، بگین ، تارف نکنینا
M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
یه نکته ی کوچولوی دیگه درباره ی رنگ ها :
خسته که نشدین؟ ها ؟
الان زنگ تفری رو میزنم 2 دیقه بصبرین
اینو که الان دونستین که رنگ ها بصورت عدد شماره گزاری میشن و چجوری تبدیل اش کنین؟ و از 0 شرو میشن تا 16777215
حالا اینکه یه قضیه ی دیگه اینکه هر رنگ (منظورم پر رنگ اون رنگه ها ) ینی مثلا اگه آبی منظورتونه ، آبی پر رنگ رو میگم ، تا بخاد کم رنگ بشه ، 255 بار تغییر میکنه
مثلا یکی از اعداد آبی پر رنگ 16711935 هه . از این عدد تا 255 تا اگه بالاتر برین ، میبینین که آروم آروم رنگ آبی پر رنگ داره به بنفش تبدیل میشه ینی از عدد 16711935 که واسه آبی پر رنگ هست تا 16712191 که بنفش هست (که اختلافشون 255 تاست) ، آروم آروم آبی پر رنگ به بنفش تبدیل میشه اما وقتی همین عدد یه دونه بالاتر بره و بشه 16712192 ، یهو رنگ یه دفه عوض میشه
تو بالا گفتم یکی از اعداد پر رنگ منظورم اینه که نگا کنین آبی پر رنگ خودش چندین (شاید صدها یا هزار) تاست . مثلا تو بالا ، (عدد مربوط به ) آبی پر رنگی رو گفتم که اگه 255 تا بالاتر برین ، آروم آروم تبدیل میشه به صورتی اما آبی پر رنگی که اگه 255 تا بالاتر برین و مثلا آروم آروم تبدیل بشه به سبز ، و هر رنگ دیگه ای ، عددش گفته نشد تو اینجا پس هر رنگی چندین عدد داره واسه خودش هر چند عین همدیگه باشن
جان من متوجه شدین دیگه؟ ها؟
یه نمونه کد ساده میدم واسه تغییر رنگ تا یه کم بیشتر حس کنین این قضیه رو :
اینو تو رویداد On Show بزارین :
کد:CT = 16711935 Paragraph.SetProperties("Paragraph1", {ColorNormal= CT}); Page.StartTimer(100, 1);
اینو تو رویداد On Timer :
کد:if e_ID == 1 then CT = CT + 1 Paragraph.SetProperties("Paragraph1", {ColorNormal= CT}); Label.SetText("Label1", CT); end
یه شی Label1 و Paragraph1 هم بزارین تو همون صفه
M3RS4D 50062 (02-04-15), mohsenpg (20-05-15), nima_hl (05-08-14)
بازم یه نکته ی دیگه :
جدنی خسته شدین؟
تو رو خدا؟
پس اندکی بتحملین
تنا کلاسیه که شاگرد نداره
شوخی بسه ، جدی دارم میگما . خوب گوش کنین وقت کلاس گرفته شد
خوب اساتیدای بالام جان ، این AMS هم گاهی هول برش میداره ، اندکی قات میزنه موقه تغییر رنگ حتی اگه تبدیل اعداد هگزا دسیمال رو به دسیمال هم درست انجام بدین (البته گاهی و بهتر بگم بیشتر اوقات)
برا اینکه عدد رنگ رو درست بدست بیارین تو AMS اول یه رنگ (مثلا رنگ آبی پر رنگ) رو تو یه شی (تو اینجا مثلا بنام Paragraph1) تنظیم کنین و از تابع زیر استفاده کنین (که البته آموزش نحوه ی استفاده ی کامل این تابع ها و اینکه آرایه ای رو که برمیگردونه چجوریه استفاده اش تو فیلم گفته شد) :
کد:ColorText = Paragraph.GetProperties("Paragraph1"); Dialog.Message("Notice", ColorText.ColorNormal, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
درست کردن (کد نویسی) دیالوگ دستی با پنجره ی DialogEX :
خوب اساتیدا ، از اونجایی که شما فیلمو دیدین ینی ندیدین ، و جواب سئوال بالای منو هم دادین ینی ندادین و منم خیلی ازتون تشکر میکنم ینی بازم میکنم پس بزارین این قضیه هم بگم
تو فیلم دیدین دیگه ، تو AMS هر جا نامی از دیالوگ برده میشه ینی یه صفه ای که حالا یا پیام داره فقط یا با گزینه هایی که انتخاب میکنین ، میتونین کار خاصی انجام بده مثلا گزینه ی yes یا no داشته باشه یه دیالوگ
تا اینجا دید یو آندرستود؟
خا ، حالا دو نوع دیالوگ داریم تو AMS . یکی پنجره ای هستش که فقط اسمش Dialog هه (البته بازم من منظورم بیشتر کد Dialog.Message هه) که این نوع پنجره ، از پیش تعریف شده هه و چن گزینه ی قابل تغییر بیشتر نداره (Abort و Cancell و Yes و No و ...) اما نپجره ی دیگه ای هست بنام DialogEX هه که میتونین مثل صفه ی اتوران ، حتی گرافیکی کار کنین اینترفیس اش رو و هر جور که خودتون خاستین
اینا رو ول کنین ، بریم سر خاستگاری چی همون اسب Matlab (این قد ممدرضا گفت که ما رو به بی راهه کشوند )
مهم کد نویسی شونه و اینکه چه متغییر که اینجا عدده رو برگردونه
تو کد نویسی Dialog.Message که تو فیلم توضیح داده شد و اینکه دکمه ی Yes چه عددی رو برمیگردونه وبقیه ی کد ها ...
تو کد نویسی برای صفه ی DialogEX ، مثلا 3 تا شی (تصویر یا آیکون یا حتی نوشته) میزارین که اگه طرف آیکون اولی رو انتخاب کرد ، مثل مثال Dialog.Message ، یه عدد رو برگردونه و اگه آیکون دومی رو انتخابید ، یه عدد دیگه و ...
یادتون باشه اولین و تنها استثنایی که تو برگردوندن یا همون ذخیره کردن متغییر ها هست ، تو همین قضیه ی DialogEX هه . این جوری که وقتی تو صفحه ی اصلی پروژه (صفه ی DialogEX منظورم نیست) ، با کد DialogEX.Show ، اون صفه ی دیالوگ (منظورم DialogEX هه) رو نمایش بدین ، وقتی موقه بستن همین صفه ، با کد DialogEX.Close ، تو اون پارامتر یا همون ورودی اول همین کد ، هر عددی رو که بنویسین (انتخاب این عدد ، دلخواهی هه) ، این محتوای متغییر (که از نوع عدد) هست ، توی اون متغییری که باهاش این صفه ی DialogEX نمایش داده شد ، ذخیره میشه
من که میدونم متوجه نشدین
بزارین مثال بزنم :
مثلا تو پروژه ی اصلی تو یه رویدادی ، آیکونی ، چیزی مینویسین :
کد:Message = DialogEx.Show("Dialog1", true, nil, nil);
اینو که میدونین ، باعث میشه که صفه ی DialogEX که طراحی کرده بودیم خودمون رو نمایش بده و متغییر اش هم که اسم شو گرفتیم Message
هر عددی هم موقه خروج تو کد DialogEX.Close که بعدا مینویسیم ، تو این متغییر اش ینی متغییر Message ذخیره میشه
3 تا گزینه یا آیکون تو این صفه ی دیالوگ طراحی کردیم که هر کدوم شون با کد DialogEX.Close ، اون کدی رو که تو پارامتر اول این کد مینویسیم ، برمیگردونه تو متغییر Message
پس باید تو هر 3 تا آیکون کد DialogEX.Close رو بنویسیم
چون عدد پارامترش دلخواهی هه ، اولی رو 1 و دومی رو 2 و سومی رو 3 میگیریم
پس تو آیکون اول مینویسیم :
کد:Close = DialogEx.Close(1);
عدد 1 پارامتر اول این کد رو که توضیح دادم
الان این عدد 1 رو اگه کسی با AMS آشنایی داشته باشه یه خورده ، انتظار داره که تو متغییر خود همین کد DialogEx.Close که اسم این متغییر رو Close گرفتیم ، ذخیره شه
اما گفتم که استثنا داره
این عدد 1 ، تو اون متغییری ذخیره میشه که باعث باز شدن این صفه ی دیالوگ شده بود ینی تو متغییر کد DialogEx.Show که تو اینجا اسمشو Message گرفته بودیم
پس از این به بعد با انتخاب اولین آیکون این صفه ی دیالوگ ، این صفه بسته میشه و عدد 1 (عددی که تو اولین پارامتر کد DialogEx.Close) نوشته بودیم ، تو متغییر Message (متغییر اون کدی که باعث باز شدن اون صفه ی دیالوگ شد) ذخیره میشه
حالا همین کار را برا آیکون دوم صفه ی دیالوگ میکنیم . که قبلا توضیح داده بودم ینی مینویسم :
کد:Close = DialogEx.Close(2);
و همینطور واسه آیکون سوم
حالا برا کد نویسی اصلیش که دیگه اوستایین و از این مثالای پیش دست و پا شکسته و افتاده رو 6000 بار کار کردیم دیگه؟ ها؟
تو ادامه ی کد همونجایی که کد باز شدن صفه ی دیالوگ (DialogEx.Show) رو نوشته بودین ، میگین که اگه این متغییر Message ، 1 بود (ینی اگه گزینه یا آیکون اول تو صفه ی دیالوگ کلیک یا انتخاب شد) ، فلان کار رو کنه و اگه برابر 2 بود ، فلان کار رو کنه و ... ینی تو ادامه :
کد:if Message~=-1 then if Message==1 then Dastorat ro inja benevisin elseif Message==2 then Dastorat ro inja benevisin elseif Message==3 then Dastorat ro inja benevisin end end
تو خط اول گفته شد مخالف -1 هر وقت بود این کد ها اجرا شن چون اگه موقه بستن دیالوگ (کد DialogEX.Close) ، اروری اتفاق بیفته ، تو متغییر کد نمایش دیالوگ که تو اینجا Message بود ، -1 (منفی یک) برگردونده میشه
از اونجایی که شما مثل من فراموش کارین ، اگه صفه ی DialogEX ، بصورت استانداردباشه و کاربر قابلیت اینو داشته باشه که از بالا ، گزینه ی ضربدر رو انتخاب کنه و از این طریق ببنده ، در این صورت ، تو همون متغییر صفه ای که دیالوگ رو نمایش میده (در اینجا متغییر Message) عدد مربوط به دکمه ی کنسل که همیشه یا اغلب اوقات عدد 2 هست ، برگردونده میشه پس یادتون باشه که اگه صفه ی دیالوگ بصورت استاندارد هست ، موقه انتخاب عد تو پارامتر اول کد DialogEx.Close ، عدد 2 رو انتخاب نکنین که با این کد کنسل قاتی شه و ندونین قضیه از کجاهه (عدد منفی هم یه وقت نزارین . حالا گفتیم که دلخاهی هه )
دید یو آندرستند بالام جان های گل مهندسین؟
M3RS4D 50062 (02-04-15), mohsenpg (20-05-15), nima_hl (05-08-14)
|
حذف آرایه :
اساتیدها ، یادتون باشه که اگه یه آرایه ای از قبل اعضاش مشخص شده باشه ، و بدش بیاین همون آرایه رو فقط تعریف کنین (اعضاش رو نه ها) ، کل اعضای اون آرایه پاک میشن و برابر nil میشن
مثلا اگه از قبل این آرایه رو با اعضاش توی رویداد On Preload یه صفه تعریف کرده باشم :
کد:Array = {} Array[1] = 53 Array[2] = 48 Array[3] = 9
خوب این که ملومه مثلا تو رویداد On Click یه شی بنویسم :
کد:Dialog.Message("Notice", Array[1], MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
مقدار اولین عضوش که 53 بود رو چاپ میکنه
و اگه حالا تو رویداد On Leave اون شی فقط این آرایه رو تعریف کنم (اعضاش رو نه ها) ینی فقط تو این رویداد بنویسم :
کد:Array = {}
حالا تاوم عضوهای آرایه پاک میشن و یه آرایه ی خالی جایگزین میشه و حالا اگه دوباره روش کلیک کنین ، یه پیام میده که اولین عضوش خالی هه (ملومه که اگه تو رویداد On Leave ، عضوهاشو مشخص کنیم ، این عضوهای جدید تعریف میشن دیگه و عضوهای قبلی همونطور که گفته شد ، هر چن تایی که بودن ، حذف میشن)
M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
نحوه ی کد و الگوریتم جدید دادن به یک رویداد (رویداد اشیاء) :
ینی چی؟ ینی اینکه مثلا شی ای وجود نداشته باشه و شما اون شی رو بوجود بیارین و بعد برا رویدادهای مختلف اون شی (مثلا کلیک چپ و ...) اش کد بنویسین و یا حتی برا پاک کردن و تعویض کد نوشته شده داخل هر رویداد یا شی دیگه ای کد بنویسین که البته این کد نوشتن ، تو هر رویداد و یا اشیاء دیگه ی داخل اون صفه میتونه اتفاق بیفته و بنویسین .
اول موارد ابتدایی شو بگم که همه تون بلدین
کد:Page.CreateObject(OBJECT_BUTTON, "NewObject", {ButtonFile="button\\button 3.btn",Text="ABC",X=0,Y=0});
این کد برای ایجاد یه شی تو صفه هست
کد:Page.SetObjectScript("NewObject", "On Click", "");
این کد بالا هم برای قرار دادن کد و الگوریتم جدید برا شی جدید هست
و اما اصل مطلب که نحوه ی قرار دادن و نوشتن الگوریتم جدید برا یه شی و یا رویداد جدید هست :
البته با تابع بالا فقط میشه کد و الگوریتم جدید رو برای رویدادهای یه شی جدید ست کرد نه برای رویدادهای اصلی مثل On Preload و ... . برای اینکار باید تابع زیر کار کرد و چون نحوه ی استفاده شون عین هم هست ، فقط تابع بالا رو میگم
کد:Application.SetPageScript("Page1", "On Show", "");
کار خیلی خاصی نداره . اول بزارین با یه مثال همینطور توضیح بدم . تو تابع زیر
کد:ABC = "Dialog.Message(\"Notice\", \"Salam\", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);" Page.CreateObject(OBJECT_BUTTON, "NewObject", {ButtonFile="button\\button 3.btn",Text="ABC",X=0,Y=0}); Page.SetObjectScript("NewObject", "On Click", ABC);
اول خط 2 و 3 رو میگم و بعد خط اول . تو خط دوم ، تو پارامتر اول اش ، نوع شی ای که میخاین ایجاد کنین رو مشخص میکنین (مثلا شی تون از نوع دکمه یا Button هست یا از نوع تصویر یا Image و یا هر چیز دیگه ای ...) و تو پارامتر دوم ، اسم شی ای که میخاین ایجاد کنین رو میدین و تو خط سوم هم که خصوصیاتش رو (مثلا شکل شی تون از کجا لود شه و اندازه و X و Y و فونت و ... اش چی باشه که تو فیلم هم توضیح داده شد و تو راهنماشم هست)
تو خط سوم ، پارامتر اولش ، باید اسم اون شی ای رو که میخایم کد جدید بهش بدیم ، رو مینویسیم (چون میخایم به شی ای که جدید ساختیم کد اضافه کنیم و اسمشم NewObject گزاشته بودیم تو تابع قبل ، پس اینجا هم همون اسمشو میزاریم) و تو پارامتر دوم اش ، اسم دقیق رویداد اون شی رو مینویسین . مثل خود رویداد ای که تو شی ها نوشته هه مثلا تو اغلب شی ها برا کلیک چپ اسم رویدادش نوشته هست "On Click" که حرف اول شون بزرگ هست و بین هر دو کلمه اش فاصله داره . شما هم باید دقیق همینجوری بنویسین بدون حتی یه کاراکتر کم یا زیاد اونم با توجه به حروف بزرگ و کوچیک وگرنه ....برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید یا مثلا برا کلیک راست باید بنویسین "On Right-Click" و ... که اسم همه ی رویداد ها نوشته هه تو شی خودش و میتونین از اونجا تقلید کنین . تو پارامتر یا همون آرگومان سوم که مهم ترین و ساده ترین بحث هست ، باید کد و یا اسم متغییری رو که شامل کد و توابع اون هم فقط بصورت رشته هست رو بدین که تو این پارامتر ، متغییر ABC که تو خط اول تعریف شد ، نوشته شد
حالا خط اول :
برای دادن کد جدید ، خوب چون بصورت رشته ای باید باشه پس اول کد مورد نظر رو بین دابل کوتیشن میزارین . ینی اول بسم ا... مینویسین :
کد:ABC = " Dialog.Message("Notice", "Salam", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); "
الان این کد خط بالا کامل نیست ها . کامل اون بالایی هست . این اول بسم ا... اش هه برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید . بد تو هر پارامتر همین خط ، هر جا رشته بصورت مستقیم بود (نه اینکه متغییر ای باشه که رشته رو برگردونه . فقط رشته ی مستقیم داخل اش بکار رفته باشه مثل پارامتر اول و دوم خط بالا) قبل علامت " اش یه علامت \ میزارین ینی پارامتر اول که "Notice" هست را باید این جوری بنویسین "\Notice"\ و همینطور پارامتر رو دوم رو باید بنویسین "\Salam"\ پس میشه :
کد:ABC = "Dialog.Message(\"Notice\", \"Salam\", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);"
دومین نکته اینکه اگه تو همین متغییر ABC خط بالا ، بخاین دو تابع یا کد بنویسین ، نمیتونین با زدن اینتر ، بعدی رو تو خط پایین تر اش بنویسین . باید با علامت ; هر خط رو از هم جدا کنین
مثال دیگه :
کد:ABC = "Text1 = \"Salam Khobi?\";Text2 = \"Koja Bodi?\";Dialog.Message(\"Notice\", Text1..Text2, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);" Page.CreateObject(OBJECT_BUTTON, "NewObject", {ButtonFile="button\\button 3.btn",Text="ABC",X=0,Y=0}); Page.SetObjectScript("NewObject", "On Click", ABC);
خوب Salam Khobi? چون رشته هست ، پس باید قبل " یه دونه \ بزاریم و همینطور برا Koja Bodi? که میشه اونی که تو بالا و خط اول دیدین و چون 3 تا دستور جدا ینی Text1 و Text2 و تابع Dialog.Message داریم ، پس بین همه شون باید نشونه ی جدا کننده ینی ; بزاریم اما تو پارامتر دوم تابع Dialog.Message درسته که متغییرها از نوع رشته هستن اما چون رشته بصورت مستقیم نیومده و متغییر اومده فقط ، پس علامت "\ نمیخاد و مثل حالت عادی تعریف میکنیم ینی Text1..Text2 که در ادامه ی همدیگه نوشته میشن که میدونین
سومین و مهم ترین نکته اینکه تو این دستور جدیدی که خودتون دارین مینویسین (در اینجا همون متغییر ABC منظورمه) ، اگه رشته تون به هر نحوی داخلش علامت \ داشت ، نمیتونین داخل این متغییر ABC تعریف کنین و باید خارج از این متغییر ABC تعریف کنین و داخل دستوراتش اون متغییر رو فراخونی کنین مثلا اگه بخاین تو همون دستور خط اول بالا بنویسین :
کد:ABC = "Text1 = \"Salam Khobi?\n\";Text2 = \"Koja Bodi?\";Dialog.Message(\"Notice\", Text1..Text2, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);"
چون بعد از Salam Khobi? علامت n\ اومد و چون علامت \ داره همراه خودش ، موقه اجرا ارور میده . برا این کار ینی هر رشته ای که بین اش علامت \ داره (بجز علامتی که گفته شد برا خود رشته تو اول و آخرش میزارین) ، باید قبل این متغییر که در اینجا ABC هه تعریف و تو توابع این متغییر ABC فراخونی کرد ینی نوشت :
کد:Text1 = "Salam Khobi?\n\n" Text2 = "Koja Bodi?" ABC = "Dialog.Message(\"Notice\", Text1..Text2, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);" Page.CreateObject(OBJECT_BUTTON, "NewObject", {ButtonFile="button\\button 3.btn",Text="ABC",X=0,Y=0}); Page.SetObjectScript("NewObject", "On Click", ABC);
چون متغییر Text1 و Text2 بیرون از این رشته ی متغییر ABC تعریف شد پس بصورت عادی باید نوشته شه ینی لازم نیست قبل علامت " علامت \ گزاشت و چون تو ته خط اول اش n\n\ گزاشته شد ، پس ملومه که بین شون به اندازه ی 2 خط فاصله میافته
تذکر : این نکته ی سوم که درباره ی علامت \ بود ، برا مسیر فایل یا فولدر هم صدق میکنه چون بین هر درایو یا پوشه ، این علامت رو که جدا کننده هست داره پس برا این نوع دستورات هم باید قبل از رشته ی دستورات جدید (در اینجا ABC) تعریف کرد و داخل توابع این رشته (در اینجا ABC) ، فراخونی کرد مثل مثال بالا و یا پایین :
کد:Path = "narm afzar\\Anti viruse\\Avast Internet Security 8.0.1497.376 Final\\Avast Internet Security.jpg" ABC = "File.Open(Path, \"\", SW_SHOWNORMAL);" Page.CreateObject(OBJECT_BUTTON, "NewObject", {ButtonFile="button\\button 3.btn",Text="ABC",X=0,Y=0}); Page.SetObjectScript("NewObject", "On Click", ABC);
تو پارامتر دوم خط دوم هم که چون رشته ی خالی هست و قبل هر علامت " باید علامت \ گزاشته شه ، پس میشه همونی که تو بالا دیدین ینی "\"\
این هم مثال آخر از چند دستوری که اول فایل مورد نظر اجرا و بعد پیام میده :
و یا همین طور میتونین یه الگوریتم تعریف کنین که مثلا حلقه داشته باشه . مثلا همین کد بالا رو 3 بار با حلقه ی for تکرار کنه :کد:Path = "narm afzar\\Anti viruse\\Avast Internet Security 8.0.1497.376 Final\\Avast Internet Security.jpg" ABC = "File.Open(Path, \"\", SW_SHOWNORMAL);Text1 = \"Salam Khobi?\";Text2 = \"Koja Bodi?\";Dialog.Message(\"Notice\", Text1..Text2, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);" Page.CreateObject(OBJECT_BUTTON, "NewObject", {ButtonFile="button\\button 3.btn",Text="ABC",X=0,Y=0}); Page.SetObjectScript("NewObject", "On Click", ABC);
کد:Path = "narm afzar\\Anti viruse\\Avast Internet Security 8.0.1497.376 Final\\Avast Internet Security.jpg" ABC = "File.Open(Path, \"\", SW_SHOWNORMAL);Text1 = \"Salam Khobi?\";Text2 = \"Koja Bodi?\";for i=1,3 do Dialog.Message(\"Notice\", Text1..Text2, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); end" Page.CreateObject(OBJECT_BUTTON, "NewObject", {ButtonFile="button\\button 3.btn",Text="ABC",X=0,Y=0}); Page.SetObjectScript("NewObject", "On Click", ABC);
از آقا محسن هم خیلی ممنونم که تو این علایم کمکم کرد و ان شاء ا... که براتون مفید بوده باشه
M3RS4D 50062 (02-04-15), nima_hl (05-08-14)
1 کاربر در حال مشاهده این موضوع. (0 عضو و 1 میهمان)
Bookmarks