PDA

View Full Version : خطا در كپي فايل ( خدايش هر كي مشكلم رو حل كنه حاضرم هزينه اش بدم)



taybad
شنبه 23 دی 1391, 16:44 عصر
يك برنامه دارم كه داراي يك فرم براي ثبت مشخصات دانش اموزان استفاده ميشه داري يك pictureBox است كه براي ذخيره عكس دانش اموز استفاده ميشه عكس دانش اموز با نام كد ملي دانش آموز در پوشه pic ذخيره ميشه تا اينجا كه مشكلي ندارم اما اگه بخوام عكس رو تغيير بدم خطا ميگيره كه فايل در حال استفاده است يا اين خطا A generic error occurred in GDI+.
نمونه كد گذاشتم لطف كنيد كمكم كنيد ممنون
در انتهاي اين تايپيك مشكلم حل شد

programerinfonet
شنبه 23 دی 1391, 16:53 عصر
خوب اگه اشتبه نکنم در موقع تعویض هم عکسو میاری تو پوشه پیک که خوب هم نامش هست و اگه بخواد جایگزین کنه اون استفاده شده و پاک نمیشه
ساده ترین حالتش اینه که یا عکستو با یک فرمت دیگه ذخیره کنی و یا هنگام لود شدن دیالوگ پیکچرباکسو خالی کنی عکس قبلیو حذف و بعد عکس جدید رو جایگزین کنی

ordebehesht
شنبه 23 دی 1391, 16:55 عصر
دیالوگ پیکچرباکسو خالی کنی عکس قبلیو حذف و بعد عکس جدید رو جایگزین کنی


این مورد ممکنه به خاطر خالی نبودن picbox ممکنه باشه من که راخت اجراش کردم

taybad
شنبه 23 دی 1391, 16:57 عصر
دوست گرامي ميشه نمونه كد رو تغيير بديد ممنون ميشم

taybad
شنبه 23 دی 1391, 17:02 عصر
مشكلم اينه كه عكس موقع پاك شدن همون خطاها رو ميده

mousa1992
شنبه 23 دی 1391, 17:22 عصر
پست شماره 2 این تاپیک (http://barnamenevis.org/showthread.php?366194-%D8%AD%D8%B0%D9%81-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87) راه حلتونه
موفق باشی

taybad
شنبه 23 دی 1391, 17:25 عصر
پست شماره 2 این تاپیک (http://barnamenevis.org/showthread.php?366194-%D8%AD%D8%B0%D9%81-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87) راه حلتونه
موفق باشی
با تشكر از اينكه وقت گذاشتيد ميشه اون كدها رو توضيح بديد براي كپي عكس مشكل دارم
FileStream fs = new FileStream(opn.FileName, FileMode.Open, FileAccess.Read);
byte[] ar = new byte[fs.Length];
fs.Read(ar, 0, (int)fs.Length);
fs.Close();
MemoryStream ms = new MemoryStream(ar);
pictureBox1.Image = Image.FromStream(ms);

mousa1992
شنبه 23 دی 1391, 17:38 عصر
همونطور که دوستمون توضیح دادن برا بردن عکس به پیکچرباکس دوراه دارید یکی اینکه اول اونو به حافظه ببرید و بعد به picturebox اختصاص بدی و یا اینکه از خاصیت imageLocation مربوط به پیکچرباکس استفاده کنید
من از همون imagelocation استفاده کردم ولی خب اگه اصرار بر استفاده از این روش دارید توضیحی مختصر میدم
با استفاده از کلاس filestream عکس مورد نظر رو یا هر فایلی به ارایه ای از بایت ها تبدیل میکنیم و اونو داخل ar ریختیم
و با استفاده از کلاس memoryStream اونو به حافظه رم انتقال داده و با استفاده از متد fromStream مربوط به کلاس image اون حافظه رو به پیکچر باکس اختصاص میدیم

موفق باشید

taybad
شنبه 23 دی 1391, 17:49 عصر
تغيير دادم بازم خطا ميده

morteza271
شنبه 23 دی 1391, 18:00 عصر
سلام.
من کدتون رو به صورت زیر تغییر دادم و مشکلی هم پیش نیومد و خیلی راحت تصویر جدید رو جایگزین تصویر قبلی میکنه :
string OldPath = "";
string NewPath = "";
private void Form1_Load(object sender, EventArgs e)
{
filename = Application.StartupPath + @"\pic\0741234567.jpg";
pic_box.ImageLocation = filename;
}

private void pic_box_Click(object sender, EventArgs e)
{
OldPath = pic_box.ImageLocation;
OpenFileDialog openfile = new OpenFileDialog();
openfile.Filter = "image file(*.jpg)|*.jpg";
if (openfile.ShowDialog() == DialogResult.OK)
{
pic_box.ImageLocation = openfile.FileName;
NewPath = pic_box.ImageLocation;
}
}

private void btn_save_Click(object sender, EventArgs e)
{
if (OldPath.ToLower() != NewPath.ToLower())
{
System.IO.File.Delete(OldPath);
System.IO.File.Copy(NewPath, OldPath);
}
}

چک کنید ببینید مشکلتون با این روش حل میشه یا نه؟؟
موفق باشید

taybad
شنبه 23 دی 1391, 18:16 عصر
با تشكر از
morteza271 (http://barnamenevis.org/member.php?95103-morteza271)
مشكلم حل شد از همه دوستان عزيز كه لطف كردند و كمكم كردند كمال تشكر رو دارم اميدوارم من هم بتونم كمكتون كنم

morteza271
شنبه 23 دی 1391, 18:31 عصر
اگه لطف کنید کد نهایی که درست کار میکنه رو اینجا بذارین خیلی بهتر میشه. چون ممکنه بعدا کسی این مشکل براش پیش بیاد و توی این تایپیک به نتیجه نهایی برسه...
موفق باشید

taybad
شنبه 23 دی 1391, 18:40 عصر
با تشكر از دوستان برنامه تصحيح شده رو مي گذارم بلكه افراد ديگه هم بتونند استفاده كنند

morteza5358
شنبه 23 دی 1391, 20:03 عصر
سلام
من که نفهمیدم هزینه اشن رو به کی دادی؟؟؟؟؟:متفکر:

:لبخند:

taybad
شنبه 23 دی 1391, 23:00 عصر
دوستان هيچ كدوم درخواست هزينه ندادند و گرنه من رو حرفم هستم:تشویق: