PDA

View Full Version : تغییر سورس برنامه در زمان اجرا



amir_pro
سه شنبه 20 فروردین 1387, 23:52 عصر
با سلام به دوستان و عرض تبریک سال نو
--------------------------------------------------------------
فرضا در برنامه متغیر زیر را تعریف کرده ایم

public String MsgTitle = "تایید";

می خواهم وقتی کاربر کار خاصی را که مد نظرم است انجام داد. مقدار این متغیر عوض شود.
به صورتی که در سورس برنامه عوض شود.
مثلا اگر روی دکمه ای کلیک کرد، مقدار این متغیر به
خیر تغییر کند و این مقدار جدید در سورس برنامه به جای مقدار قبلی بنشیند.
باید چه کار کنم؟
از دوستان تقاضای راهنمایی دارم.
با تشکر

gdevnb
چهارشنبه 21 فروردین 1387, 00:21 صبح
با سلام به دوستان و عرض تبریک سال نو
--------------------------------------------------------------
فرضا در برنامه متغیر زیر را تعریف کرده ایم

public String MsgTitle = "تایید";می خواهم وقتی کاربر کار خاصی را که مد نظرم است انجام داد. مقدار این متغیر عوض شود.
به صورتی که در سورس برنامه عوض شود.
مثلا اگر روی دکمه ای کلیک کرد، مقدار این متغیر به تغییر کند و این مقدار جدید در سورس برنامه به جای مقدار قبلی بنشیند.
باید چه کار کنم؟
از دوستان تقاضای راهنمایی دارم.
با تشکر
آیا منظورتون اینه که سورس تغییر کنه و برنامه دوباره کمپایل بشه؟
اگه اشتباه نکنم تو msdn یه همچین چیزی قبلاً دیده بودم.

amir_pro
چهارشنبه 21 فروردین 1387, 01:00 صبح
آیا منظورتون اینه که سورس تغییر کنه و برنامه دوباره کمپایل بشه؟

بله منظورم همینه. فقط کامپایل دوباره بدون خروج از برنامه و کامپایل مجدد ان باشد.

یعنی وقتی سورس تغییر کرد، برنامه دوباره کامپایل شده و بر اساس مقدار جدید کار خاصی را انجام دهد.

Mahdi.Kiani
چهارشنبه 21 فروردین 1387, 01:12 صبح
با سلام به دوستان و عرض تبریک سال نو
--------------------------------------------------------------
فرضا در برنامه متغیر زیر را تعریف کرده ایم

public String MsgTitle = "تایید";

می خواهم وقتی کاربر کار خاصی را که مد نظرم است انجام داد. مقدار این متغیر عوض شود.
به صورتی که در سورس برنامه عوض شود.
مثلا اگر روی دکمه ای کلیک کرد، مقدار این متغیر به تغییر کند و این مقدار جدید در سورس برنامه به جای مقدار قبلی بنشیند.
باید چه کار کنم؟
از دوستان تقاضای راهنمایی دارم.
با تشکر

با سلام
شما می خواین مقدار یک متغیر را تغیر بدین.. چه نیازی به کامپایل مجدد هست؟
مسلما وقتی مقدار متغیر عوض بشه، هر جای برنامه که از این متغیر استفاده کرده باشه، از مقدار جدید استفاده می کنه..
اگه هدفتون اینه که مقدار جدید را در دفعات بعدی که برنامه اجرا میشه، حفظ کنه، می تونین از setting ها استفده کنید و یا مقدار را در رجیستری و .. ذخیره کنید....
**
اگه هدف چیز دیگریست، بیشتر توضیح دهید
موفق باشید

mohammad272005
چهارشنبه 21 فروردین 1387, 01:27 صبح
public String MsgTitle = "تایید";
.
.
.
private void Test(bool arg)
{
if(arg==false)
MsgTitle = "انصراف";
}فکر کنم امیر آقا همچین چیزی میخوان

Milad Mohseny
چهارشنبه 21 فروردین 1387, 12:58 عصر
هم میتوانید از راحی که دوستمون r.kiani گفتند استفاده کنید هم اینکه یک فیل xml بسازید و مقدار متغییر MsgTitle را از داخل فایل xlm بخونید و در متغیر بریزید و وقتی هم کاربر مقدار جدیدی را وارد کرد مقدار جدید را در فایل xml جایگزین مقدار قبلی کنید.

amir_pro
چهارشنبه 21 فروردین 1387, 13:10 عصر
ممنون از دوستان عزیز که جواب دادید ولی منظور من این ها نیست
------------------------------------------------------------------------------
من یک کلاس دارم که کد آن به صورت زیر است


using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.IO;

namespace Mehregan_2
{
public partial class VariableClass
{
public VariableClass()
{

}

public String MsgTitle = "تایید";
public OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Mehregan.mdb");
}
}


برای برنامه هم می خوام قسمت 1)پشتیبان گیری و 2)بازیابی اطلاعات را بگذارم. بانک هم Access است. برای پشتیبان گیری از کد زیر استفاده می کنم که کاربر پس از انتخاب فایل بانک برنامه و انتخاب مسیر، فایل در آنجا کپی می شود.


//گرفتن پشتیبان از داده های بانک اطلاعاتی
openFileDialog1.Title = "انتخاب فایل حاوی اطلاعات آموزشگاه جهت پشتیبان گیری";
openFileDialog1.FileName = "";
openFileDialog1.ShowDialog();
if (openFileDialog1.FileName == "")
{

}
else
{
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName == "")
{

}
else
{
File.Copy(openFileDialog1.FileName, saveFileDialog1.FileName, true);
}
}

مشکلم اینجاست که وقتی از قسمت بازیابی اطلاعات فایل بانک برنامه را انتخاب می کنه مقدار ConnectionString که در کلاس بالا تعریف کرده ام برای همیشه تغییر کنه تا زمانیکه دوباره بازیابی اطلاعات را انتخاب و فایل دیگری را انتخاب نماید. و این مانایی با بسته شدت برنامه از بین نرود.

و اگر هم در برنامه های خودتان همچین قسمتی را دارید ممنون می شم اگر بفرمایید که چه طور انجام داده اید.
با تشکر

gdevnb
چهارشنبه 21 فروردین 1387, 14:03 عصر
برای بازیابی هم به جای اول کپیش کن. و دیگه چه لزومی به تغییر ConnectionString هست .
برای ذخیره ConnectionString هم میتونی از setting ها استفاده کنی.

Mahdi.Kiani
چهارشنبه 21 فروردین 1387, 15:11 عصر
هم میتوانید از راحی که دوستمون r.kiani گفتند استفاده کنید هم اینکه یک فیل xml بسازید و مقدار متغییر MsgTitle را از داخل فایل xlm بخونید و در متغیر بریزید و وقتی هم کاربر مقدار جدیدی را وارد کرد مقدار جدید را در فایل xml جایگزین مقدار قبلی کنید.

خوب stting ها هم همین کار را می کنند. :چشمک:فقط کار برنامه نویس یکمی راحت تر شده. البته باید جنبه های دیگه ای را هم در هنگام کار با setting ها لحاظ کرد.(مثل security و .. که ربطی به موضوع این تاپیک نداره)
موفق باشید

amir_pro
چهارشنبه 21 فروردین 1387, 17:37 عصر
ممنون - از setting استفاده می کنم- توی سایت هم مطالب خوبی در این باره بود.
ممنون از راهنمایی دوستان