مشکل در استفاده از SaveVariable

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
سلام بر دوستان عزیز میخواستم از دوستان سوالی کنم تا راهنمایی کنند من میخوام که توی یه مثال رنگ یک تصویر رو با ColorPicker() تغییر بدم که این کار رو به خوبی انجام میدم حالا میخوام وقتی رنگ این تصویر رو تغییر دادم و از برنامه خارج شدم با استفاده از SaveVariable اون رو ذخیره کنم تا وقتی دوباره برنامه اجرا شد به همون رنگی که قبلا تغییر دادم نشون داده بشه حالا من هر کاری کردم نتونستم از دوستان میخوام که من رو راهنمایی کنند من همیشه توی اینجور کارا ( منظورم SaveVariable و LoadVariable ) ضعف داشتم ممنون میشم راهنمایی کنید.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
دستور SaveVariable دو پارامتر میپذیره که اولی نام کلیدی هست که در رجیستری ذخیره میشه و شما برای بازیابی اطلاعات از همین نام استفاده میکنید و دومی هم نام متغیری هست که اطلاعات موجود در اون باید در رجیستری ذخیره بشه
برای دستور LoadVariable هم به همین شکل هست.
 

Ehssan_it

Well-Known Member
نام کلید که دلخواه هست و میتونیم خودمون تعریف کنیم
اما در مورد نام متغیر یک توضیح کوچیک لطفا
مسیر که باید ذخیره بشه کجا تعیین میشه؟
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
فرم کلی کد به این شکل هست:
کد:
[color=#009000]**// The Variable can be a String [/color] 
[color=#000090][b]SaveVariable[/b][/color](“RegistryKey”,”Variable$”) 
 
[color=#009000]**// Or it can be a Integer as well[/color] 
[color=#000090][b]SaveVariable[/b][/color](“RegistryKey”,”Variable”)[/SIZE][/FONT]
پارامتر اول که همونطور که فرمودید نام کلیدی هست که در رجیستری ایجاد میشه و اطلاعات در اون محل ذخیره میشه
پارامتر دوم که با نام Variable مشخص شده، نام متغیری هست که باید محتویات اون متغیر در رجیستری و در کلید مربوطه ذخیره بشه
مثلاً در مورد سوال ایشون برای ذخیره ی رنگ:
کد:
[FONT=Courier New][SIZE=2][color=#000090][b]LoadVariable[/b][/color]("PageBGColor","RGB$") 
[color=#0000FF]If[/color] (RGB$ = [color=#800000]''[/color]) [color=#0000FF]Then[/color] 
  [color=#000090][b]ColorPicker[/b][/color]() 
  RGB$ = [color=#0000FF]CBK_SelColor[/color] 
  [color=#000090][b]SaveVariable[/b][/color]("PageBGColor","RGB$") 
[color=#0000FF]End[/color] 
[color=#000090][b]SetProjectParam[/b][/color]("PAGEBG","COLOR=RGB$")[/SIZE][/FONT]
این کد اول بررسی میکنه که آیا در کلید PageBGColor موجود در رجیستری، مقداری وجود داره یا نه.
در صورت وجود که محتوای اون کلید رو در متغیر $RGB میریزه و سپس رنگ صفحه رو به اون رنگ تغییر میده و در غیراینصورت، ابتدا اجازه ی انتخاب رنگ رو به کاربر میده و سپس اون رنگ رو در متغیر $RGB میریزه و محتوای اون متغیر رو هم برای استفاده ی بعدی در کلید PageBGColor در رجیستری ذخیره میکنه.

یک نکته ی دیگه این هست که در صورتی که از این دستور در برنامه هاتون استفاده میکنید، این امکان وجود داره که در صورتی که در برنامه های مختلف (مثلاً ورژن های مختلف از یک برنامه) نام کلیدها یکسان باشه، امکان تداخل وجود داره
برای مرتفع ساختن این مشکل میتونید مراحل زیر رو دنبال کنید:
در Project Settings گزینه ی Save Last Position in Registry رو علامت بزنید و در کادر مشخص شده یک نام یکتا و منحصر بفرد برای برنامتون انتخاب کنبد و دوباره گزینه ی Save Last Position in Registry رو غیرفعال کنید، با اینکار تمام کلیدهای مربوط به برنامه ی شما در شاخه ای به نامی که مشخص کردید در رجیستری ذخیره میشن و دیگه این تداخل هم پیش نمیاد.
 

Ehssan_it

Well-Known Member
طبق اون چیزی که من فهمیدم
در قسمت کد دوم باید عباراتی بنویسیم که تغییرات ما رو ذخیره کنه ( مثلا اگه کاربر یک عکس جایگزین کرده بود یا مثلا هر چیز دیگه باید همین کد رو بنویسیم)
اگه ما به جای colorPicker مثلا کد تغییر عکس رو بزاریم درست کار میکنه؟
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
درسته، در خط اول برنامه کلید PageBGColor رو بررسی میکنه و محتوای اون رو در متغیر $RGB میریزه، حالا اگه این متغیر خالی باشه و به عبارتی هیچ اطلاعاتی در کلید PageBGColor موجود نباشه، برنامه میاد و به کاربر اجازه ی انتخاب رنگ میده.و و در آخر هم تغییرات رو با قرار دادن رنگ در کلید PageBGColor ذخیره میکنه و دفعه ی بعد دیگه کادر انتخاب رنگ ظاهر نمیشه و مستقیماً رنگ صفحه به رنگی که قبلاً در اون کلید ذخیره کردیم تغییر میکنه.

حالا شما میتونید همینکار رو با عکس انجام بدید، ولی بجای کد رنگ از آدرس عکس یا نام عکس و چیزهایی شبیه به این استفاده کنید.
در واقع این کلیدها مثل متغیرها در برنامه نویسی برای ما عمل میکننید، با این تفاوت که عمرشون با خروج از برنامه تموم نمیشه، حالا شما در این کلیدها میتونید هر اطلاعاتی رو ذخیره کنید و پس از بازیابی به هر نحوی که مایل بودید ازشون استفاده کنید.
 

جدیدترین ارسال ها

بالا