PDA

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



SSP_Software_team
یک شنبه 09 فروردین 1383, 14:55 عصر
دوستان لطف کنید ببینید مشکل این کد چیه ؟
من تو این قطعه کد یه سری فایل رو خوندم و به ریسورس فایل تبدیل کردم
اینجا...


private void button1_Click(object sender, System.EventArgs e)
{
System.Windows.Forms.OpenFileDialog op = new OpenFileDialog();
System.Resources.ResourceWriter w = new System.Resources.ResourceWriter(".\\1.resources");
System.IO.FileStream file;
System.Collections.ArrayList arr = new ArrayList();
op.Multiselect = true;
op.ShowDialog();
byte[] data;
int count = 0;

foreach(object o in op.FileNames)
{
arr.Add(o);
}

arr.Sort();

foreach(object o in arr)
{
MessageBox.Show(o.ToString());
file = new System.IO.FileStream(o.ToString(),System.IO.FileMo de.Open,
System.IO.FileAccess.Read);
data = new byte[file.Length];
file.Read(data,0,(int)file.Length);
file.Close();
w.AddResource(count.ToString(),data);
count++;
}
w.Close();
}


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


private void Read()
{
System.Resources.ResourceSet res = new System.Resources.ResourceSet(
System.Reflection.Assembly.GetExecutingAssembly(). GetManifestResourceStream("1.Resources"));
object obj = r.GetObject("0");
byte[] data = (byte[])obj;
MessageBox.Show(data.Length.ToString());
res.Close();
}


در ضمن من از دستور Resgen هم در خط فرمان استفاده کردم ولی نشد که نشد . اینم بگم که این قطعه کد ها کاملا عملی هستن فقط نمیدونم چه چیزی رو از قلم انداختم یا اشتباه کردم که نمیشه . خنگی هم عالمی داره ها :lol:
و وقتی هم که از کد پایین استفاده میکنم یه پیغام خطا میده که میکه حتما باید از Embedded شدن فایل به فایل Exe برنامه اطمینان حاصل کنین و مقدار Null رو بر میگردونه


private void Read2()
{
System.Resources.ResourceManager r = new System.Resources.ResourceManager("1",
System.Reflection.Assembly.GetExecutingAssembly()) ;
object obj = r.GetObject("0");
byte[] data = (byte[])obj;
MessageBox.Show(data.Length.ToString());
}


این متن پیغام خطا ی اولی که متد Read() باعثش میشه


Value Can not be Null

اینم متن پیغام خطای دومی که متد Read2() باعثش میشه


Could not find any resources appropriate for the specified culture (or the neutral culture) in the given assembly. Make sure "1.resources" was correctly embedded or linked into assembly "re".
baseName: 1 locationInfo: <null> resource file name: 1.resources assembly: re, Version=1.0.1547.14132, Culture=neutral, PublicKeyToken=null


چند تا راه دیگه رو هم امتحان کردم ولی اصلا جواب نمیده دیگه مطمئن هستم که یا یه چیزی رو از قلم انداختم ولی کدها درستن از این بابت مطمئنم شما هم اگه میشه این کد هارو خودتون یه امتحانی بکنین شاید شما اشکالشو پیدا کنین .
با تشکر

SSP_Software_team
پنج شنبه 13 فروردین 1383, 16:03 عصر
دوستان با تجربه ی دات نت کار کسی نظری نداره؟ آقای اینپرایز شما چی؟