كيفية إنشاء دالة FileCompare باستخدام .NET Visual C++ أو Visual C++ 2005

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية816189
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
للحصول على إصدار Microsoft Visual C# .NET من هذه المقالة، راجع 320348.
للحصول على إصدار Microsoft Visual Basic .NET من هذه المقالة، راجع 320346.
تشير هذه المقالة إلى Microsoft .NET Framework مكتبة الفئات مساحة الاسم:

System.IO

الموجز
توضح هذه المقالة خطوة بخطوة حول كيفية مقارنة ملفين لمعرفة ما إذا كانت محتوياتها هي نفسها. هذه المقارنة يبحث في محتويات الملفين ولكن لا عند أسماء الملفات أو مواقع التواريخ مرات أو سمات أخرى.

تشبه هذه الوظيفة Fc.exe يستند إلى MS-DOS الأداة المساعدة المضمّنة مع الإصدارات المختلفة من Microsoft Windows وMS- DOS Microsoft و مع بعض أدوات التطوير.

تنفيذ نموذج التعليمة البرمجية الموضح في هذه المقالة مقارنة بايت بايت حتى يتم العثور على تطابق أو حتى الوصول إلى نهاية الملف. بتنفيذ التعليمات البرمجية أيضاً الاختبارات بسيطة جهازي التالية زيادة فعالية المقارنة:
  • إذا كان كلا الملف نقطة مراجع إلى نفس الملف يجب أن تكون الملفين متساوية.
  • إذا كان حجم الاثنين ملفات مختلفة, تختلف الملفين.

إنشاء في نموذج

  1. بدء تشغيل Visual Studio .NET (2003) أو Microsoft Visual Studio 2005.
  2. من القائمة ملف، أشر إلى جديد ثم انقر فوق المشروع.
  3. انقر فوق مشاريع Visual C++ ضمن أنواع Project ثم انقر فوق مشروع فارغ (.NET) ضمن قوالب. اسم المشروع FileCompare.

    ملاحظة في Visual Studio 2005 ، انقر فوق Visual C++ ضمن أنواع Project ثم انقر فوق مشروع فارغ ضمن قوالب.
  4. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق FileCompare وأشر إلى إضافة ثم انقر فوق إضافة عنصر جديد.
  5. في مربع الحوار إضافة عنصر جديد ، انقر فوق ملف الرأس أسفل قوالب. في مربع النص اسم اكتب Form1 ومن ثم انقر فوق فتح. يتم عرض الملف Form1.h.
  6. Paste the following code in the Form1.h file:
    #pragma once#using <mscorlib.dll>#using <system.windows.forms.dll>#using <system.dll>#using <system.drawing.dll>namespace Compare{	using namespace System;	using namespace System::ComponentModel;	using namespace System::Collections;	using namespace System::Windows::Forms;	using namespace System::Drawing;	using namespace System::IO;	public __gc class Form1 : public System::Windows::Forms::Form	{		public:		Form1(void)		{			InitializeComponent();		}  	protected:		void Dispose(Boolean disposing)		{			if (disposing && components)			{				components->Dispose();			}			__super::Dispose(disposing);		}		private: System::Windows::Forms::TextBox *  textBox1;	private: System::Windows::Forms::TextBox *  textBox2;	private: System::Windows::Forms::Label *  label1;	private: System::Windows::Forms::Label *  label2;	private: System::Windows::Forms::Button *  Compare;	private:		System::ComponentModel::Container * components;				void InitializeComponent(void)		{			this->textBox1 = new System::Windows::Forms::TextBox();			this->textBox2 = new System::Windows::Forms::TextBox();			this->label1 = new System::Windows::Forms::Label();			this->label2 = new System::Windows::Forms::Label();			this->Compare = new System::Windows::Forms::Button();			this->SuspendLayout();			// 			// textBox1			// 			this->textBox1->Location = System::Drawing::Point(32, 104);			this->textBox1->Name = S"textBox1";			this->textBox1->TabIndex = 0;			this->textBox1->Text = S"";			// 			// textBox2			// 			this->textBox2->Location = System::Drawing::Point(168, 104);			this->textBox2->Name = S"textBox2";			this->textBox2->TabIndex = 1;			this->textBox2->Text = S"";			// 			// label1			// 			this->label1->Location = System::Drawing::Point(32, 64);			this->label1->Name = S"label1";			this->label1->TabIndex = 2;			this->label1->Text = S"File1";			// 			// label2			// 			this->label2->Location = System::Drawing::Point(176, 64);			this->label2->Name = S"label2";			this->label2->TabIndex = 3;			this->label2->Text = S"File2";			// 			// Compare			// 			this->Compare->Location = System::Drawing::Point(96, 168);			this->Compare->Name = S"Compare";			this->Compare->TabIndex = 4;			this->Compare->Text = S"Compare";			this->Compare->Click += new System::EventHandler(this, button1_Click);			// 			// Form1			// 			this->AutoScaleBaseSize = System::Drawing::Size(5, 13);			this->ClientSize = System::Drawing::Size(292, 273);			this->Controls->Add(this->Compare);			this->Controls->Add(this->label2);			this->Controls->Add(this->label1);			this->Controls->Add(this->textBox2);			this->Controls->Add(this->textBox1);			this->Name = S"Form1";			this->Text = S"Form1";			this->ResumeLayout(false);		}	private:		System::Void button1_Click(System::Object *  sender, System::EventArgs *  e)		{	 		}	};}
    هذه التعليمة البرمجية بإنشاء نموذج يحتوي على عنصري تحكم مربع النص زر أمر.

    ملاحظة يجب إضافة الشائعة لغة وقت التشغيل دعم برنامج التحويل البرمجي الخيار (/ clr:oldSyntax) في Visual C++ 2005 ترجمة نموذج التعليمات البرمجية السابق بنجاح. لإضافة الشائعة لغة وقت التشغيل دعم برنامج التحويل البرمجي الخيار في Visual C++ 2005 اتبع الخطوات التالية:
    1. انقر فوق Project ثم انقر فوق <ProjectName> خصائص.

      ملاحظة<ProjectName> عنصرًا نائبًا اسم المشروع.
    2. قم بتوسيع خصائص تكوين ثم انقر فوق عام.
    3. انقر لتحديد وقت تشغيل اللغة العامة دعم ، البناء القديمة (/ clr:oldSyntax) في الإعداد المشروع يعتمد "وقت تشغيل اللغة العامة" في الجزء الأيسر انقر فوق تطبيق ثم انقر فوق موافق.
    للحصول على مزيد من المعلومات حول وقت تشغيل اللغة العامة تعتمد الخيار برنامج التحويل البرمجي قم بزيارة موقع Microsoft التالي على الويب:
    / مسح (الترجمة وقت تشغيل اللغة العامة)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  7. إضافة دالة التالية إلى الفئة Form1:
    // This method accepts two strings that represent two files to // compare. A return value of 0 indicates that the contents of the files// are the same. A return value of any other value indicates that the // files are different.private:bool FileCompare(String *file1, String *file2){	int file1byte;	int file2byte;	FileStream *fs1;	FileStream *fs2;    	// Determine if the same file was referenced two times.	if (String::Equals(file1,file2))	{		// Return true to indicate that the files are the same.		return true;	}        	// Open the two files.	try	{		fs1 = new FileStream(file1, FileMode::Open);		fs2 = new FileStream(file2, FileMode::Open);				    		// Check the file sizes. If the sizes are different, the files 		// are different.		if (fs1->Length != fs2->Length)		{			// Close the file			fs1->Close();			fs2->Close();			// Return false to indicate files are different			return false;		}		// Read and compare a byte from each file until either a		// non-matching set of bytes is found or until the end of		// file1 is reached.		do 		{			// Read one byte from each file.			file1byte = fs1->ReadByte();			file2byte = fs2->ReadByte();		}		while ((file1byte == file2byte) && (file1byte != -1));		// Close the files.		fs1->Close();		fs2->Close();	}		catch(Exception *ex)	{		if(fs1)		{			fs1->Close();		}		if(fs2)		{			fs2->Close();		}		throw ex;	}	// Return the success of the comparison. "file1byte" is 	// equal to "file2byte" at this point only if the files are 	// the same.	return ((file1byte - file2byte) == 0);}
  8. قم بلصق التعليمة البرمجية التالية في حدث النقر لزر الأمر button1_Click في فئة Form1: حاول
    try{	if (FileCompare(this->textBox1->Text, this->textBox2->Text))	{		MessageBox::Show("Files are equal.");					}	else	{		MessageBox::Show("Files are not equal.");	}}catch(Exception *ex){	MessageBox::Show(ex->Message);}
  9. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق FileCompare وأشر إلى إضافة ثم انقر فوق إضافة عنصر جديد.
  10. في مربع الحوار إضافة عنصر جديد ، انقر فوق ملف C++ ضمن قوالب. في مربع النص اسم اكتب File_Compare ومن ثم انقر فوق فتح. يتم عرض الملف File_Compare.cpp.
  11. قم بلصق التعليمة البرمجية التالية في file:
    #include "form1.h"#include <windows.h>#include <tchar.h>using namespace Compare;
  12. إضافة دالة WinMain التالية إلى ملف File_Compare.cpp:
    int APIENTRY _tWinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPTSTR    lpCmdLine,                     int       nCmdShow){}
  13. قم بلصق التعليمة البرمجية التالية في دالة WinMain:
    System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;Application::Run(new Form1());return 0;
  14. حفظ النموذج.

تشغيل في نموذج

  1. توفير مسارات الكاملة إلى ملفين في عناصر تحكم مربع النص.
  2. انقر فوق مقارنة.
مراجع
لمزيد من المعلومات، قم بزيارة مواقع الويب Network (MSDN) المطور Microsoft التالية:
مساحة الاسم System.IO
ملف Access عبر فئة يقوم FileStream

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 816189 - آخر مراجعة: 01/17/2015 06:55:13 - المراجعة: 2.3

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowtomaster kbhowto kbio KB816189 KbMtar
تعليقات