PDA

View Full Version : سوال: مشکل در کار کردن با ارایه



Farshid007
دوشنبه 15 فروردین 1390, 20:50 عصر
سلام لطفا به کد زیر دقت کنید:
string strName = string.Empty;
strName += textBox1.Text.ToString();

اما من می خوام همین کارو توی ارایه انجام بدم:
از این کد هم استفاده کردم برنامه اجرا می شه اما خطای منطقی م یده
string[] History = System.IO.File.ReadAllLines("c://Command/History.txt", UTF8Encoding.UTF8);
History['\n'] += textBox1.Text.ToString() ;

راستش می خوام برای تکست باکسم یه History درست کنم و این History ما با متن خو دکاربر پر بشه
(به وسیله auto Complete)
یهنی اینکه می خوام توی ارایه History در خط جدید متن تکست باکس به اونا اضافه بشه
در ضمن History.Rankچیه؟:گریه:

FastCode
چهارشنبه 17 فروردین 1390, 11:18 صبح
شما باید وقتی کاربر متن رو تایید کرد مقدارش رو با متود AppendLine به انتهای قایل اضافه کنید. و در پروپرتی های AutoComplete اون فایل رو به تکست باکس معرفی کنید.

Farshid007
پنج شنبه 18 فروردین 1390, 16:12 عصر
چرا نمیشه از این کد استفاده کرد
string[] History=System.IO.File.ReadAllLines("C:/Command/History.txt",UTF8Encoding.UTF8);
History[History.LongLength+1]="For Example:Farshid";
میگه :
Index was outside the bounds of the array.
خوب من چی کار کنم که بره به خط جدید
می شه با AppendLine یه مثال بزنی!

sabloger
پنج شنبه 18 فروردین 1390, 21:06 عصر
سلام دوست محترم

یک آرایه رو فقط یک بار میتونید "بعد بندی" یا اندازه دهی کنید

یعنی شما همون بار اول که خط ها رو از فایل میخونید و توی آرایه میریزید، آرایه اندازه دهی میشه و دیگه نمیتونید به خانه های اون اضافه کنید

باید یک آرایه جدید درست کنید و تعداد خانه هاش رو، تعداد خانه های آرایه قبلی +1 قرار بدید

با AppendLine میتونید یک خط به آخر فایلتون اضافه کنید
این هم راه خوبیه، میتونید اول به آختر فایل آضافه کنید و بعد اون رو دوباره بخونید
(البته AppendAllLine رو بنده ازش استفاده میکنم که یک آرایه میگیره)

موفق و شاد و برنامه نویس باشید

mmd2009
جمعه 19 فروردین 1390, 03:23 صبح
با سلام.

شما میتونید به اینجا (http://msdn.microsoft.com/en-us/library/system.io.file.appendalllines.aspx)مراجه کنید .

موفق باشید.

barnamenevisjma
جمعه 19 فروردین 1390, 11:31 صبح
پیشنهاد می کنم بجای آرایه، از List استفاده کنید.(اینجوری هر وقت بخواهید، میتونید یه خونه جدید بهش اضافه کنید) نحوه تعریف کردنش هم به این صورته:


List<string> my_history= new List<string>();

موفق باشید.

azaditafakor
جمعه 19 فروردین 1390, 13:38 عصر
یک آرایه رو فقط یک بار میتونید "بعد بندی" یا اندازه دهی کنید

یعنی شما همون بار اول که خط ها رو از فایل میخونید و توی آرایه میریزید، آرایه اندازه دهی میشه و دیگه نمیتونید به خانه های اون اضافه کنید

؟؟؟
همیشه میتونید اندازه آرایه رو تغییر بدید :

Array.Resize(ref Par, Par.Length + 2);

Farshid007
جمعه 19 فروردین 1390, 20:20 عصر
اقا دستتون درد نکنه مشکلم حل شد .
فقط یه مشکل کوچولو:
ref چیه؟

unknown.unforgiven
جمعه 19 فروردین 1390, 20:56 عصر
فقط یه مشکل کوچولو:
ref چیه؟

فرض کن یه متد داری، وقتی اون متد رو فراخوانی میکنی اون متغیرهایی که به متد میفرستی کپیشون به متد میرسه نه خودشون. به همین خاطر بعد از اینکه کار متد تموم شد مقدار متغیر هیچ تغییری نمیکنه. مثال زیر رو نگاه کن تا متوجه بشی:
فرض کن متد myMethod رو داری
void myMethod(int inp)
{
inp = 10;
}
حلا یه جایی از برنامت این کد رو داری
int tmp = 2;
myMethod(tmp);
بعد از اجرا شدن myMethod هیچ تغییری تو متغیر tmp به وجود نمیاد چون کپی مقدار متغیر به متد ارسال شده. اما وقتی قبل از اسم نوع متغیر (تو تعریف متد) و قبل از خود متغیر (فراخوانی متد) ref قرار میدی باعث میشه خود متغیر به متد ارسال بشه. همون کد بالا رو با ref در نظر بگیر
void myMethod(ref int inp)
{
inp = 10;
}
int tmp = 2;
myMethod(ref tmp);
چون خود متغیر به متد ارسال شده بعد از فراخوانی متد مقدار tmp میشه 10

azaditafakor
جمعه 19 فروردین 1390, 21:01 عصر
1- فراخوانی با مقدار ( بدون تغییر در اصل متغیر )
2- فراخوانی با ارجاع ( تغییر در اصل متغیر )