PDA

View Full Version : مشكل با دستور Split



hamed232
پنج شنبه 09 شهریور 1391, 12:53 عصر
سلام به همه دوستان
يك مشكل به نظر من عجيب دارم اگه كسي كمك كنم واقعا ممنون ميشم.مشكلم اينه كه وقتي با دستور split يك رشته را ميام توي يك آرايه رشته‌اي مثلا 10 تايي ميريزم ، اگه رشته اصليه به 5 قسمت تقسيم بشه و 5 تا از انديس هاي آرايه را گرفته باشه توي ادامه برنامه ديگه نميشه به انديس 6 دسترسي داشت و پيغام خطا ميده؟:متعجب::متعجب::متعجب:

string str_data = "RFMP.135:,10,20,30,40,40";
string[] data=new string[10];
string[] data2 = new string[10];
lbl_packet.Text = str_data;
for (cnt_str = 0; cnt_str < 10; cnt_str++)
{
data[cnt_str] = " ";
data2[cnt_str] = " ";
}
data[9] = " ";

data = str_data.Split(',');

data[9] = " ";
data2[9] = " ";

يعني دفعه اول كه داخل انديس نهم data‌ يك كاركتر خالي ريختم خطا نمگيره اما بعد از اينكه از دستور split استفاده كردم خطا ميده؟؟؟

alitavakoli
پنج شنبه 09 شهریور 1391, 13:19 عصر
دستور split خروجیش یک آرایه هست وقتی آرایه ای که از قبل ایجاد کردین رو مساوی رو با این ارایه (یعنی آرایه ایجاد شده توسط)دستور split پر میکنید با اینکار آرایه شما new میشه و تعداد ایندکس هاش از 9 به 6 کاهش پیدا میکنه و به همین دلیله که وقتی بعد از دستور split میخواین مقدار ایندکس 9 رو تغییر بدید خطا رخ میده.
در واقع دستور split که نوشتید این کار رو انجام میده:

data = str_data.Split(',');//return 6 value
شبیه:
data=new string[5];

hamed232
پنج شنبه 09 شهریور 1391, 18:37 عصر
ممنون مهندس از لطفتون
البته ديگه الان با تغيير برنامه و تست به اين نتجه رسيدم. راستش من خيلي توي #C تازه كارم .آخه رشته من مخابراته.
حالا يك سوال ديگه : چه جوري ميشه تعداد انديس هاي اين آرايه را بدست آورد؟

hamed232
پنج شنبه 09 شهریور 1391, 20:00 عصر
آقا دستتون درد نكنه فهميدم . با مشخصه Lenght ميشه .