PDA

View Full Version : مبتدی: مقایسه بین دو datagrid



ghazal_mohammady
شنبه 22 فروردین 1394, 23:00 عصر
عرض سلام و ادب من یه دیتاگرید دارم به نام dataGridView1 که دارای سه ستونه یه ستون اول که یه سری نام کده و ستون دوم و سوم مین و ماکس هستند
یه دیتاگرید دیگه هم دارم به نام dataGridView3 که ساختارش مثل قبلیه
من میخوام اگه مین و مکس dataGridView3 در محدوده ی dataGridView1 باشه در هر سطر اونوقت اعلام بشه این فایل ویروسیه اگه خارج از این محدوده و رنج بود بگه سالمه
این کدمه ولی منطقا اشتباه جواب میده


int virus = 0;
int salem = 0;
for (int i = 0; i < table1.Rows.Count; i++)
{

if (double.Parse(dataGridView3.Rows[i].Cells[1].Value.ToString()) <double.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString())
||double.Parse(dataGridView3.Rows[i].Cells[2].Value.ToString())> double.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString()))
{
virus++;
}
else
{
salem++;
}
}
if (virus>salem)
{
MessageBox.Show("ویروسی");

}

else
{
MessageBox.Show("سالم");

}

}


درواقع من میخوام فایلی که دیتاگرید سوم هست اگه محدوده هاش شبیه دیتاگرید اولی باشه بگه ویروسیه هرچه بیشتر شبیه باشه احتمال ویروسی ش بیشتره
چرا جواب درست نمیده؟

Mofid.m
شنبه 22 فروردین 1394, 23:14 عصر
درود به شما
یه سوال
منظورت از Table1 توی حلقه for چیه؟
دیتاتیبله؟

ghazal_mohammady
شنبه 22 فروردین 1394, 23:17 عصر
درود به شما
یه سوال
منظورت از Table1 توی حلقه for چیه؟
دیتاتیبله؟
مقدار دیتاگرید 1 رو نگه میداره

Mofid.m
شنبه 22 فروردین 1394, 23:23 عصر
شما بیا به جای table1 همون اسم دیتاگرید1 رو بزار.

ghazal_mohammady
یک شنبه 23 فروردین 1394, 15:21 عصر
گذاشتم
ولی کلا فکر کنم منطق کارم اشتباهه نه؟

Mofid.m
یک شنبه 23 فروردین 1394, 15:52 عصر
راستشو بخوای من هنوز دقیق متوجه منطق کار شما نشدم.
یکم بیشتر توضیح بده ببنم اصلا جریان چیه.
کدی که شما نوشتی کار میکنه اما هدفت چیه؟
ویروس رو اینطوری پیدا نمیکنن.
اگر هم اماکنش هست برنامتو بزار.

hamid_hr
یک شنبه 23 فروردین 1394, 16:21 عصر
اگه مین و مکس dataGridView3 در محدوده ی dataGridView1 باشه
این یعنی چی؟
میشه با یه چند تا عدد مثال بزنی؟

ghazal_mohammady
یک شنبه 23 فروردین 1394, 16:54 عصر
این یعنی چی؟
میشه با یه چند تا عدد مثال بزنی؟
مثلا برای دیتاگرید 1 تو یه سطرش که مربوط به یه دستور خاصه مثلا add
min=12 و max=93
حالا تو دیتاگرید 3 میگرده ببینه اون سطری که دستورش add هست( یعنی ستون اولش برابره add هست)
میبینه اگه مینش از دوازده کوچکتر نباشه و مکسش از 93 بزرگتر نباشه یعنی این فایل ویروسیه اگه باشه یعنی ویروسی نیست

ghazal_mohammady
یک شنبه 23 فروردین 1394, 21:52 عصر
private void button2_Click(object sender, EventArgs e)
{
int virus = 0;
int salem = 0;
string code="";
double value=0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{

if (dataGridView1.Rows[i].Cells[0].Value.ToString()!=null)
{
code = dataGridView1.Rows[i].Cells[0].Value.ToString();
for (int j = 0; j < dataGridView3.Rows.Count; j++)
{
if (dataGridView3.Rows[j].Cells[0].Value.ToString()!=null)
{
if (code == dataGridView3.Rows[j].Cells[0].Value.ToString())
{
if (double.Parse(dataGridView3.Rows[j].Cells[1].Value.ToString()) > double.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()) &&
double.Parse(dataGridView3.Rows[j].Cells[1].Value.ToString()) < double.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()))
{
virus++;
}
else
{
salem++;
}
}
}
}
}
}
if (virus>salem)
{
MessageBox.Show("ویروسی");

}

else
{
MessageBox.Show("سالم");

}

}
}
}

این کدو نوشتم اما nullrefrenceException میده

alibilgats
یک شنبه 23 فروردین 1394, 22:14 عصر
سلام
راستش صرفنظر از اینکه کد شما دقیقا چه کار انجام میده باید بگم که if اصلی شما منطقا اشتباهه و در واقع هیچ وقت برقرار نمیشه!





چون شما با گذاشتن && شرط خودتون رو نقض کردین! و برای همین همیشه else اجرا میشه!

ghazal_mohammady
یک شنبه 23 فروردین 1394, 22:59 عصر
بله این یه اشتباه کلی بود بخاطر حواس پرتی
اما بازم ارور null میده

ghazal_mohammady
یک شنبه 23 فروردین 1394, 23:22 عصر
درست شد

private void button2_Click(object sender, EventArgs e)
{
int virus = 0;
int salem = 0;
string code="";
double value=0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{

if ((dataGridView1.Rows[i].Cells[0].Value)!=null)
{
code = dataGridView1.Rows[i].Cells[0].Value.ToString();
for (int j = 0; j < dataGridView3.Rows.Count; j++)
{
if ((dataGridView3.Rows[j].Cells[0].Value)!=null)
{
if (code == dataGridView3.Rows[j].Cells[0].Value.ToString())
{
if (double.Parse(dataGridView3.Rows[j].Cells[1].Value.ToString()) > double.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()) ||
double.Parse(dataGridView3.Rows[j].Cells[2].Value.ToString()) < double.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString()))
{
virus++;
}
else
{
salem++;
}
}
}
}
}
}