PDA

View Full Version : سوال: اشکال این کد و...



amir-yazdel
شنبه 03 بهمن 1388, 07:54 صبح
کد پایین رو می نویسم لطف کنید ببینید چه مشکلی داره:
/////// Load File For View In TextBoxs And Count Of Members//////////
StreamReader sr = new StreamReader("members.dat");
string s = "";
int Count = 0;
while (!sr.EndOfStream)
{
s = sr.ReadLine();
Count++;

}
s.ToString();
sr.Close();
txtotal.Text = Count.ToString();
for (int i = 0; i < s.Length; i++)
{
name += s[i];
s[i]='';
if(s[i]=='*')
break

}
txname.Text = name;
//////////////////////////////////////////////////////////////////////
این رو توی فرم لودم می نویسم برا اینکه وقتی فرم باز میشه آخرین عضو را نمایش بده. البته یادم رفت بگم این پروژه کتاخونه است که مجبوریم با فایل ها کار کنیم چون پرژه پایانی رو با دیتابیس می نویسیمش.
حالا این کد تو قسمت حلقه تا قسمت مقدار دهی نام درست کار می کنه از جایی که باید اون کاراکتری رو که خونده پاک کنه ایراد می گیره .
چون من توی یک خط توی فایلم مشخصات یک عضو رو وارد می کنم و با ستاره مشخصات رو از هم جدا می کنم. حالا می خوام وقتی داره خط رو می خونه قسمت ها رو با رسیدن به ستاره از هم جدا کنه مثلاً بعد از نام، نام خانوادگی و بعد شماره و بقیه مخفات هست. روش دیگه ای هم داره بگو.

hamidreza20
شنبه 03 بهمن 1388, 07:59 صبح
سلام دوست عزیز
کد را همیشه داخل تگ کد قرار دهید به این شکل:


/////// Load File For View In TextBoxs And Count Of Members//////////
StreamReader sr = new StreamReader("members.dat");
string s = "";
int Count = 0;
while (!sr.EndOfStream)
{
s = sr.ReadLine();
Count++;

}
s.ToString();
sr.Close();
txtotal.Text = Count.ToString();
for (int i = 0; i < s.Length; i++)
{
name += s[i];
s[i]='';
if(s[i]=='*')
break

}
txname.Text = name;
//////////////////////////////////////////////////////////////////////

hamidreza20
شنبه 03 بهمن 1388, 08:05 صبح
دوست عزیز مشکل کد شما اینجاست که می خواهید مقداری از رشته را مثلا محل 3 رشته را تغییر دهید. نمی توان این کار را کرد.

باید با char یا آرایه از آن کار کنید . دستورات در #C با ++C کمی متفاوت است البته از لحاظ استفاده از کلاس ها نه دستورات کلیدی.

التماس دعا....

amir-yazdel
شنبه 03 بهمن 1388, 15:12 عصر
خوب یعنی اون رشته رو تبدیل به کاراکتری کنم و یا آرایه ای اش کنم. شما تا حالا خواستید از یه رشته ای یک کاراکتری رو پیدا کنید و بخواید وقتی به اون کاراکتر مورد نظر رسیدید کاراکترهای قبلی رو توی یک رشته بریزه و یه جوری مثل این؟

slashslash2009
شنبه 03 بهمن 1388, 15:18 عصر
if (textBox1.Text.ToString()[3] == 'Q')
MessageBox.Show("Backslash");حرف سوم رشته رو داره با حرف Q مقایسه میکنه البته از صفر شروع میشه که میشه یعنی حرف
http://barnamenevis.org/forum/showthread.php?t=200788

SMRAH1
شنبه 03 بهمن 1388, 15:27 عصر
سلام
1) حتما از تگ کد استفاده کنید تا کد ها خوانا باشند.
2) اگر درست فهمیده باشم ،شما یک رشته دارید (به نام فرضی S) که می خواهید اطلاعاتی رو از اول اون تا کاراکتر * رو بخونید.خوب کافیست از دستور Split رشته استفاده کنید (خودش رشته رو به کارکتر یا کاراکتر هایی که شما بخواهید میشکنه).در نتیجه پس ازا اجرای دستور زیر اولین عنصر آرایه ی رشته ای sr حاوی نامی است که شما می خواهید:

string[] sr = s.Split(new char[] {'*'});
//Now sr[0] is name
موفق باشید