PDA

View Full Version : سوال: End of Stream encountered before parsing was completed.



woeful
دوشنبه 01 شهریور 1389, 12:17 عصر
سلام
بازم exception عکس میزارم MSDN هم گشتم ولی چیزی تفهمیدم ...

http://up.iranblog.com/Files2/4df13346f8f44e87a92d.JPG

FastCode
دوشنبه 01 شهریور 1389, 12:59 عصر
یعنی stream شما محتواش آسیب دیده یا connection ی چیزی قطع شده.
تا کد اینجا نزارید که چیزی معلوم نمیشه.

woeful
دوشنبه 01 شهریور 1389, 13:48 عصر
یعنی سفقثشپ شما محتواش آسیب دیده یا connection ی چیزی قطع شده.
تا کد اینجا نزارید که چیزی معلوم نمیشه.



public static string searchWord(string word)
{
if (File.Exists("Words.wd"))
{
using (FileStream objFS = new FileStream("Words.wd", FileMode.Open, FileAccess.Read))
{
StreamReader objSR = new StreamReader(objFS, Encoding.UTF8);
BinaryFormatter objBF = new BinaryFormatter();
objFS.Seek(0, SeekOrigin.Begin);
while (objFS.Position != objFS.Length)
{
Word objWord = new Word();
objWord = (Word)objBF.Deserialize(objFS);
if (string.Compare(objWord.EStr.ToLower(), word.ToLower()) == 0)
{
return objWord.PStr;
}
//objFS.Position = 0;
}
objFS.Close();
//objSR.Close();
}
}

return "";
}
خط آبی exception میده ...

FastCode
دوشنبه 01 شهریور 1389, 14:00 عصر
این کاری که شما کردی اصلاْ اصولی نیست.
برای این کارها از یه فایل sqlite استفاده کنید.
کد نویسیش کمتره.سرعتش خیلی بیشتره.یعنی یه چیزی حدود ۱ میلیون برابر توی یه میلیون کلمه.
و فایلش یه این راحتی آسیب نمیبینه.

مشکل فایل شما هم الان میتونه این باشه که واقعاْ آسیب دیده.چون من چیز زیادی از کد شما متوجه نشدم.

woeful
دوشنبه 01 شهریور 1389, 15:54 عصر
این کاری که شما کردی اصلاْ اصولی نیست.
برای این کارها از یه فایل sqlite استفاده کنید.
کد نویسیش کمتره.سرعتش خیلی بیشتره.یعنی یه چیزی حدود ۱ میلیون برابر توی یه میلیون کلمه.
و فایلش یه این راحتی آسیب نمیبینه.

مشکل فایل شما هم الان میتونه این باشه که واقعاْ آسیب دیده.چون من چیز زیادی از کد شما متوجه نشدم.

سلام ممنون از چواب اگه میشه یه منبع در مورد این sqlite به من بدین

در مورد اینکه میگین فایل ممکنه آسیب دیده باشه من این طور فک نمیکنم

به این قسمت از کد دقت کنید :


if (string.Compare(objWord.EStr.ToLower(), word.ToLower()) == 0)
{
return objWord.PStr;
}


هر موقع این if و true میشه برنامه هیچ مشکلی نداره اما هر موقع false میشه eception میده این کمکی نمیکنه مشکل مشخص بشه ؟؟

FastCode
دوشنبه 01 شهریور 1389, 17:04 عصر
ایراد 1.
= new Word();
اضافیه.
ایراد 2.
اگر اینطور که گفتید باشه,فقط یه کلمه توی فایلتون هست.

woeful
دوشنبه 01 شهریور 1389, 17:40 عصر
ایراد 1.
= new Word();
اضافیه.
ایراد 2.
اگر اینطور که گفتید باشه,فقط یه کلمه توی فایلتون هست.

بله درسته یک کلمه بیشتر نداره اصلا من خودم به فایل کلمه اضافه میکنم فعلا هم فقط یه کلمه بیشتر داخلش نزاشتم

من یک کلمه رو میدم به تابع اون داخل فایلو میگرده که آیا کلمه مشابهی هست اگه هست که :

return objWord.PStr;
حالا اگه نیست چرا exception میده با تموم شدن FileStream (اینجا objFS) از حلقه WHILE بره بیرون

من با این کد داخل فایل مینویسم


private void btnAdd_Click(object sender, EventArgs e)
{
Word objWord = new Word();
objWord.PStr = txtPersian.Text;
objWord.EStr = txtEnglish.Text;
BinaryFormatter objBF = new BinaryFormatter();
try
{
FileStream objFS = new FileStream("Words.wd", FileMode.Append, FileAccess.Write);
StreamWriter objSW = new StreamWriter(objFS, Encoding.UTF8);
objFS.Seek(0, SeekOrigin.Current);
objBF.Serialize(objFS, objWord);
objSW.Close();
objFS.Close();


}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
}



اگه میشه یه منبع در مورد این sqlite به من بدین