الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أختبار فتح الملف بواسطة If

بدأه وائل عبد الرحمن في 9 أغسطس 2009 · 8 رد · 581 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاتة

خطاء يتكرر وحاولت معالجتة بأكثر من طريقه و هو أريد أن أكتب كود يعبر عن

أذا فتح الملف W2 فكتب تم الفتح جملة بسيطة كتبتها بهذه الطريقة

FileInfo w2 = new FileInfo("G:\\waal\\tasks.txt");

if(w2.OpenRead())

{

Console.WriteLine("is opend");

}

فلم تفلح فكتبت

If(w2.openText())

فلم تفلح

if(w2.Open(FileMode.Open)

فلم تفلح

شىء أخر أستخدام كود Moveto() دئما ينقل الملف أو المجلد داخل الدريفر فقط يعنى ينتقل داخل C مثلا إذا كان الملف موجود على C لكن لو حاولت نقلة من C مثلا الى D يظهر خطا أرجو المساعدة

#2

أنت تحاول برمجة الملفات في لغة C# بطريقة لغة C/C++ حيث مثلا fopen ترجع NULL في حالة فشل فتح الملف أما في لغة C# فعند فشل فتح الملف سيتم رفع استثناء Exception. لهذا أنصحك باتباع طريقة C# التي يلخصها الكود التالي :

			FileInfo fi = null;
			FileStream fs = null;
			try {
				fi = new FileInfo(@"file_name.ext");
				fs = fi.OpenRead();
			} catch(Exception ex) {
				// إذا دخلنا هنا فهذا يعني فشل عملية فتح الملف
				Console.WriteLine("Can't open the specified file : {0}", ex.Message);
				return;
			}
			// هنا يمكننا قراءة محتوى الملف

			// غلق الملف بعد الإستعمال
			fs.Close();

تحياتي...

#3

السلام عليكم

جزاك الله خيرا على أستجابتك

لكن الطريقة التى قمت بكتابتها هى ماتعلمتة فى السى شارب حيث أنى لم أدرس غيرها إلآ الفيجول بيسك و استخدمت هذة الطريقة كثيرا فهل هى لاتصلح فقط مع المشكلة if

#4

معذرة هل لديك أى حل لمشكلة moveTo() الموجودة فى الأعلى

#5

المشكلة أنه في حالة استعمال if وحدها, سيكون برنامجك عرضة ظهور خلل فيه إذا فشلت عملية فتح الملف, لأنه في هذه الحالة الدالة OpenRead و غيرها لا ترجع فراغا null و لكن ترفع استثناء Exception و إذا لم يتم التقاط الإستثناء كما يجب فالبرنامج بكامله سيتم غلقه.

بالنسبة لـ MoveTo() فلا أجد المشكلة من خلال طرحك للسؤال. فإذا كانت الدالة ترفع استثناء من نوع FileNotFoundException فهذا راجع إلى أن الدالة لا تجد الملف أو المجلد المراد نقله و بالتالي فأغلب الظن أن اسم الملف و مساره به خطأ. المرجو إرفاق نوع الإستثناء و الرسالة المرفقة حتى تتاح لباقي الأعضاء الفرصة للتعرف على الخطأ.

تحياتي...

#6

بالنسبة لموضوع نقل الملف أنا كنت شغال على الكونسول أبليكشن و كنت قد أعطيتة عنوان صحيح و ينفذ الكود و لايوجد خطاء فى العنوان لكن عند البد فى نقلة الى خارج الدريفير الى دريفير أخر

class Program

{

static void Main(string[] args)

{

DirectoryInfo w2 = new DirectoryInfo(@"G:\waal");

w2.MoveTo(@"D:\ee");

}

}

}ويكون الأستثناء هو

unhandled exception:system.IO.IOexception source and destination path must have identical roots .move not work across a volume

at system .IO.DirectoryInfo.MoveTo<stringdest DirName>

مع الملاحظة أنى جربت أكثر من ملف و أكثر من مكان انقل الملف و لكن يكون نفس الأمر

هناك سؤال أخر عندما أستخدم دالة LastaccsssTime

دوما يكون التاريخ لدخول صحيح لكن الساعة دوما تكون الساعة 12:00

#7

أسف سؤال رابع لأن ردك على طمعنى فيك

عند اٍستخدام الكومبو بوكس أقوم بأدخال الخيرات من جدول الخصائص من خاصية Items عند تشغيل البرنامج أجدها لكن أذا أدخلت الخيرات من خلال الكود و قمت بتشغيل البرنامج أجده فارغ و الطريقة التى أدخل بها الكود من خلال الضعط المزدوج على الكمبوبوكس و أكتب فى صفحة الأكواد الكود التالى

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

comboBox1.Items.Add("snaks");

}

}

#8

بالنسبة للسؤال حول الدالة FileInfo.LastAccessTime() فهذا الكود يعطيني نتائج جيدة :

			OpenFileDialog ofd = new OpenFileDialog();
			if(ofd.ShowDialog(this) == DialogResult.OK) {
				FileInfo fi = new FileInfo(ofd.FileName);
				MessageBox.Show(fi.LastAccessTime.ToString());
			}

بالنسبة للسؤال عن الكومبوبوكس فلملء الائحة عبر الكود, قم بزيادة الكود عند الحدث Form.Load و ذلك عبر النقر مرتين على الفورم فيقوم IDE بفتح نافذة الكود و التحرك نحو الدالة المشتركة في الحدث Form.Load و هناك يمكنك زيادة الكود و سيتم ملء الائحة بإذن الله.

تحياتي...

#9

جزاك الله خيرا لقد أجهدتك معى وشكر الله لك ردك على

مواضيع مشابهة