PDA

View Full Version : خواندن متغییر از داخل Label



bluray
پنج شنبه 22 مرداد 1388, 20:42 عصر
سلام . یه سوال فوری دارم که هرجا گشتم جوابی براش پیدا نکردم .

فرض کنید من داخل برنامه یه متغییر به نام AX دارم که مقداری صحیح در خودش نگه می داره . حالا label ای هم دارم که داخل ویژگی تکست اون نوشته شده AX . من می خوام کدی داشته باشم که داخل لیبل نام هر متغییری بود مقدار اون رو برام بریزه تو لیبل دیگه .
مثلا اگه داخلش BX بود برنامه محتوای متغییر BX بریزه تو یه لیبل دیگه .
دوستان با شرط نمی خوام باشه . چون این یه EDITOR هست و باید در هر بار محتوای لیبل نام هر متغییری بود مقدار اون متغییر رو بریزه تو یه تکست یا لیبل و نوشتن شرط براش 200000خط می شه .کد باید جوری باشه که بی نیاز به چک کردن شرط به مقدار متغییری که نامش در لیبل هست مستقیما دسترسی داشته باشه . نگیم مثلا اگه نوشته بود AX برو و AX رو بریز تو textbox
من مبتدی هستم و به تابع های از پیش تعریف شده زیاد آشنا نیستم . پروژه رو باید یکشنبه تحویل بدم
یا حق

Mehdi_mh
پنج شنبه 22 مرداد 1388, 22:56 عصر
کدوم یکشنبه. نمیدونم دیر شده یا نه.
از طریق findcontrol و Cast کردن میتونی این کارو انجام بدی. خیلی ساده.

saymon
پنج شنبه 22 مرداد 1388, 23:13 عصر
سلام . یه سوال فوری دارم که هرجا گشتم جوابی براش پیدا نکردم .

فرض کنید من داخل برنامه یه متغییر به نام AX دارم که مقداری صحیح در خودش نگه می داره . حالا label ای هم دارم که داخل ویژگی تکست اون نوشته شده AX . من می خوام کدی داشته باشم که داخل لیبل نام هر متغییری بود مقدار اون رو برام بریزه تو لیبل دیگه .
مثلا اگه داخلش BX بود برنامه محتوای متغییر BX بریزه تو یه لیبل دیگه .
دوستان با شرط نمی خوام باشه . چون این یه EDITOR هست و باید در هر بار محتوای لیبل نام هر متغییری بود مقدار اون متغییر رو بریزه تو یه تکست یا لیبل و نوشتن شرط براش 200000خط می شه .کد باید جوری باشه که بی نیاز به چک کردن شرط به مقدار متغییری که نامش در لیبل هست مستقیما دسترسی داشته باشه . نگیم مثلا اگه نوشته بود AX برو و AX رو بریز تو textbox
من مبتدی هستم و به تابع های از پیش تعریف شده زیاد آشنا نیستم . پروژه رو باید یکشنبه تحویل بدم
یا حق
اگر AXوغیره چیزای مشخصی هستند چرا از combobox استفاده نمی کنی در comboچیزی هست به اسم:combobox1.Display memberوcombobox1.Value memberکه می تواند اولی چیزی باشد که نشان می دهد وAXاست ,دومی مقداران.مثلا
combobox1.DisplayMember = "cName";
combobox1.ValueMember = "cID";
cnameمثلاAXاست وcidمقدار ان (از همدیگه جداشون کن)درواقع بعد از انتخاب گزینه مربوطه کافی است بگید valuememberش را نشان دهد.
امیدوارم کمکت کنه.

bluray
پنج شنبه 22 مرداد 1388, 23:31 عصر
سلام . منظورم همین یکشنبه آینده هست دوست من .
می شه این کار رو برام با مثال توضیح بدی(یک تکه کد).
فرض کن که AX نام یک متغییر هست . من هر بار که دکمه ای زده می شه label.text ام عوض میشه و نام یک متغییر درونش قرار می گیره که می خوام برنامه مقدار اون متغییر رو برام بریزه یه جایی . مثلا اگه َAX بود بره و مقدار AX که مثلا 5هست رو بریزه تو یه textboxیا مثلا اگه AX بودمقدارشو برام بریزه جایی تا من بتونم ضربش کنم و... و نهایتا برگردونم شه خود AX .
من مبتی ام . با سی زیاد کار کردم . با همین C# تو console :ار کردم اما زیاد با oop آشنایی ندارم . اگه میشه مثالی برام بنویسید از این نکته هایی که گفتید .

>ببینید برنامه از تو یه richtextbox اطلاعاتی رو میگیره و با جداسازی هر چیزی رو میزاره سرجاش . مثلا :
mov ax,bx
این تکه کد رو که بنویسه در ریچ باکس بعد از زدن دکمه داریم:با فرض ax=10,bx=20
opcode=mov
oprand1=ax
oprand2=bx
کد باید بره و مقدار bx رو بریزه به حای مقدار ax . من تو این گیرم که چه مدلی دسترسی پیدا کنم به مقدار متغییری که نامش در oprand ها هستش.
حالا کدی می خوام که بره مقدار bxرو که در oprand1هست بخونه و بریزه در ax. مهم اینجاست که من تو این گیرم که چطوری کدی بنویسم که لازم نباشه شرط چک کنه . بفهمه که تو oprand1 ما ax رو داریم پس ax متغییری است که به مقدارش نیاز داریم.
نمی دونم چه مدلی راحت تر بیان کنم .
ممنون که کمکم می کنید

Mehdi_mh
پنج شنبه 22 مرداد 1388, 23:35 عصر
میتونی یه طوری کد رو بگذاری تا من ببینمش.

bluray
جمعه 23 مرداد 1388, 00:40 صبح
میتونی یه طوری کد رو بگذاری تا من ببینمش.


publicstring all, opcode, oprand1, oprand2,line;


publicint j = 0, ax, bx, cx, dx, op;
privatevoid Form2_Load(object sender, EventArgs e)
{
ax = int.Parse(label9.Text);
bx = int.Parse(label10.Text);
cx = int.Parse(label11.Text);
dx = int.Parse(label12.Text);
}
privatevoid button1_Click(object sender, EventArgs e)
{
line = "";
opcode = "";
oprand1 = "";
oprand2 = "";
all = richTextBox1.Text;
for (j = j; all[j] != '\n'; j++)
{
line = line + all[j].ToString();
}
for (int i = 0; i <= 2; i++)
opcode = opcode + line[i];
for (int z = 4; z <= 5; z++)
oprand1 = oprand1 + line[z];
for (int w = 7; w <= 8; w++)
oprand2 = oprand2 + line[w];
label5.Text = line;
label6.Text = opcode;
label7.Text = oprand1;
label8.Text = oprand2;



if (label6.Text == "add")
op = 0;
elseif (label6.Text == "sub")
op = 1;
elseif (label6.Text == "mul")
op = 2;
elseif (label6.Text == "div")
op = 3;
j++;
line = "";
opcode = "";
oprand1 = "";


if (j ==all.Length )
{
button1.Enabled = false;
MessageBox.Show("Please Close compiler , enter new command and run again");
}

ناقصه دیگه . ببین حالا می خوام چک کنم ببینم تو عملوندها(oprand)نام چه متغییر هایی هست بعد مقدار اونها رو به دست بیارم و با استفاده از متغییر op که مشخص می کنه دستور چیه چهار عمل رو انجام بدم . oprand اول هم مولفه ای است که تو عملیات دخیل هست و هم مقصد محاسبات . با ساختار کیس باید بعد از هر بار انجام هر عملی مقادیر به روز بشوند . نمی شه هر بار 200تا شرط چه کرد که بگی مثلا اگه AX بود و دومی هم BX بود فلان کارو بکنه که .
شما به من بگو با فرض اینکه تو oprand1 ما AX قرار داره من با چه کدی می تونم مقدار این AX که یه متغییر هست رو بخونم؟کدی که تو oprand نام هر متغییری بود مقدار اون متغییر ور برام به دست بیاره .گه AX =5هست اون به من 5 رو بده نه Ax رو.ممکنه که تو oprand {یزی به جز ax باشه . ;کد باید مقدار هر متغییر رو که تو Oprand ها هست بهم بیاره بیرون.
یا حق

bluray
جمعه 23 مرداد 1388, 09:52 صبح
اگر AXوغیره چیزای مشخصی هستند چرا از combobox استفاده نمی کنی در comboچیزی هست به اسم:combobox1.Display memberوcombobox1.Value memberکه می تواند اولی چیزی باشد که نشان می دهد وAXاست ,دومی مقداران.مثلا
combobox1.DisplayMember = "cName";
combobox1.ValueMember = "cID";
cnameمثلاAXاست وcidمقدار ان (از همدیگه جداشون کن)درواقع بعد از انتخاب گزینه مربوطه کافی است بگید valuememberش را نشان دهد.
امیدوارم کمکت کنه.
می شه واضح تر بگید
من مثلا متغییرم رو که اسمش هست Oprand و یک مقدار رشته ای رو نگه می دارهمثلا AX رو با این کد زیر میریزم تو کومبو باکس:
combobox1.displaymember=oprand1;
حالا تو خط بعدی می نویسم:
label1.text=combobox1.valuemember;
اما کار نمی کنه .
.ببین کدی که می خوام کافیه بره و مقدار متغییری که اسم اون در Oprand هست رو برام بریزه تو یه label دیگه .