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

مقارنة الملفات -- اكتشاف خطير

مغلق
بدأه jooorj في 1 يناير 2007 · 14 رد · 2,390 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني وجدت شئ غريب فعلا

عند مقارنة ملفي اكسيل متطابقين يقول انهم مختلفان

using System; 
using System.IO;  

public class CompFiles {  
  public static void Main(string[] args) {  
	int i=0, j=0;  
	FileStream f1;  
	FileStream f2;  

	try {  
	  // open first file 
	  try {  
		f1 = new FileStream(args[0], FileMode.Open);  
	  } catch(FileNotFoundException exc) {  
		Console.WriteLine(exc.Message);  
		return;  
	  }  

	  // open second file  
	  try {  
		f2 = new FileStream(args[1], FileMode.Open);  
	  } catch(FileNotFoundException exc) {  
		Console.WriteLine(exc.Message);  
		return;  
	  }  
	} catch(IndexOutOfRangeException exc) {  
	  Console.WriteLine(exc.Message + "\nUsage: CompFile f1 f2");  
	  return;  
	}  

	// Compare files  
	try {  
	  do {  
		i = f1.ReadByte();  
		j = f2.ReadByte();  
		if(i != j) break; 
	  } while(i != -1 && j != -1);  
	} catch(IOException exc) {  
	  Console.WriteLine(exc.Message);  
	}  
	if(i != j)  
	  Console.WriteLine("Files differ."); 
	else 
	  Console.WriteLine("Files are the same."); 

	f1.Close();  
	f2.Close();  
  }  
}

تم تعديل هذه المشاركة بواسطة jooorj في 1 يناير 2007 في 16:54

موقوف من المشاركة لقلة الأدب

============================

#3

الموضوع بخصوص الملفين شئ غريب فعلا المقارنة تقول انهما مختلفان فقط اذا كان الملفان اكسيل انا تجننت فعلا فقط في حالة الاكسيل فقط !!! انا راح انخوت

الملفان نسخة طبق الاصل بالامكان تجريب الكود

موقوف من المشاركة لقلة الأدب

============================

#4

قصدي هو كيف عملت النسختين؟ هل هي عملية copy paste لنفس الملف أم لبيانات الملف أم ماذا؟

و بالتفصيل الممل لو أمكن

تم تعديل هذه المشاركة بواسطة System Down في 1 يناير 2007 في 22:02

#5

يا خي انا نسخت ملف الاكسيل الاول بالكود وعملت مقارنة عن طريق البرنامج فقال انهما مختلفان

لكن غير الاكسيل لا يظهر شئ ويقول انهما غير مختلفان يعني المشكلة انه ملفات الاكسيل تطلع مختلفة.

اما كله تمام لغير الاكسيل..

استخدمت للنسخ الامر التالي

File.Copy("c:\\f1.xls","d:\\f1.xls");

تم تعديل هذه المشاركة بواسطة jooorj في 1 يناير 2007 في 22:15

موقوف من المشاركة لقلة الأدب

============================

#6

السلام عليكم

هل فتحت أحد الملفين بعد ان نسختهما؟

ولا نسخت الملف ثم قارنت كلا الملفين؟

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#7

الاختلاف ليس فى المحتوى ولكن سيكون فى تركيب الملف (structure) ..

#8

لقد فتحته بالكود ونسخته بالكود

الكود شغال مع كل الملفات الا الاكسيل

تجننت

موقوف من المشاركة لقلة الأدب

============================

#9

و ما هي الإختلافات التي ظهرت؟؟ من الممكن أن يكون الإختلاف على سبيل المثال في خصائص الملف نفسه كـ Created و Modified و Accessed و ليس في البيانات الموجودة بداخله...

رأس الحكمة الإيمان بالله

#10

ياجماعة غير الاكسيل يشتغل 100% فقط عندما يكون الامتداد xls تنقلب الموازيين يعني اعمل انشاء للملف من نوع وورد يطلع 100% بس الاكسيل به المشكلة يقول ان الملفان مختلفان على الرغم من انهما نسخة طبق الاصل

اليكم كود المقارنة للملفين من مايكروسفت :

http://support.microsoft.com/kb/320348

راح انجن شئ غريب

موقوف من المشاركة لقلة الأدب

============================

#11

السلام عليكم

Mo7eb_Alrasool كتب:
السلام عليكم

هل فتحت أحد الملفين بعد ان نسختهما؟

ولا نسخت الملف ثم قارنت كلا الملفين؟

هلاقصد هل عمل مقارنة قبل فتح اي منهما

يعني عملت

File.Copy("c:\\f1.xls","d:\\f1.xls")
then Compare files.......

ثم عملت مقارنة بعدذلك على طول

تم تعديل هذه المشاركة بواسطة Mo7eb_Alrasool في 8 يناير 2007 في 14:50

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#12

نعم اخي عملت Copy بدون فتح حيث استخدمت امرCopy ولم اعمل فتح مطلقا في أحد طرقي الاخرى..

بعد عمل نسخة مطابقة باستخدام الامر Copy

ومن ثم عمل مقارنة بالدالة العلوية حيث فتحت الملف الاول للقراء وللمقارنة كما اسلفات بالاعلى وللاسف كان بيقولي مختلفان فقط في حالة كون الملفان اكسيل..

للتبسيط : اعمل ملف اكسيل بالزر الايمن بالويندوز عال : C:\ new Excel_file.xls

وعلى ال D:\new Excel_file.xls بالزر الايمن عن طريق الويندوز وبدون اي اكواد

الان استخدم الكود العلوي للمقارنة تجد الغرابة غير الاكسيل يطلع 100% أما الاكسيل فيقول انهما مختلفان :( شئ عجيب فعلا..

الرجاء من الاخوة اختصار الاستفسارات مني والتجريب بانفسهم ، وشكرا...

موقوف من المشاركة لقلة الأدب

============================

#13

يا كريم اكرمني عن السؤال

موقوف من المشاركة لقلة الأدب

============================

#14

?

هل هناك خطأ في كودي

ياربي هل من مجيب

موقوف من المشاركة لقلة الأدب

============================

#15

جرب هذا الكود كتبته على السريع و جربته على مجموعة من الملفات عندي و يعمل جيداً

static bool CompareFiles(string file1, string file2)
		{
			using (FileStream f1 = new FileStream(file1, FileMode.Open))
			{
				using (FileStream f2 = new FileStream(file2, FileMode.Open))
				{
					if (f1.Length != f2.Length)
						return false;

					while (f1.Position < f1.Length)
					{
						if (f1.ReadByte() == f2.ReadByte())
							continue;
						return false;
					}
					return true;
				}
			}
		}

Sr. Software Development Engineer
Hulu, LLC
My Blogs

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…