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

نسخ و نقل المفات

بدأه C++er في 25 أغسطس 2009 · 3 رد · 1,355 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندما تقوم بنسخ ملف او نقله بإستخدام File.Copy او File.Move فإنه يتم نسخ الملف و لكن دون معرفة اى بيانات عن النسخ مثل سرعة النقل او الوقت المتبقى على انتهاء عملية النقل ايضا انت لا تستطيع وقف عملية النقل، و فى حالة ان الملف ذو حجم كبير من المحتمل ان يتوقف عمل البرنامج حتى انتهاء النسخ (إلا إذا كان النسخ من داخل Thread منفصل).

هذه مشكله واجهتنى كثيرا فى برامجى لذا قمت بعمل بديل لهاتين الدالتين بإستخدام الدالتين CopyFileWithProgress و MoveFileWithProgress حيث تقوم هاتين الدالتين بارسال بيانات عن تقدم عميل النسخ او النقل لدالة فرعيه تقوم انت بتضمينها لذا و عوضا عن ذلك قمت بصنع فئتين هما FileSystem و CopyInfoEventArgs هذا هو شكل الفئتين (بدون كود)

Public Class CopyInfoEventArgs
	Inherits EventArgs

	' source file size in bytes
	Public ReadOnly Property TotalSourceFileSize() As Long

	' total bytes transfered from source file to destination file
	Public ReadOnly Property TotalBytesTransfered() As Long

	' last bytes transfered from source file to destination file
	Public ReadOnly Property LastBytesTransfered() As Long

	' percent of operation to be complete from 0 to 100
	Public ReadOnly Property Percent() As Integer

	' remaining time to operation to be completed in seconds
	Public ReadOnly Property TimeToComplete() As Long

	' transfer speed of current operation. transfer speed mesured in byte per second B/s
	Public ReadOnly Property TransferSpeed() As Long

End Class

و هذا هو كود الفئه FileSystem (ايضا بدون كود)

Public Class FileSystem

	Public Delegate Sub FileOperationEventHandler(ByVal sender As Object, ByVal e As CopyInfoEventArgs)

	Public Event FileOperation As FileOperationEventHandler

	' Source FileName
	' while copying this property is readonly
	Public Property SourceFile() As String

	' Destination FileName
	' while copying this property is readonly
	Public Property DestinationFile() As String

	' Allow Overwrite
	' while copying this property is readonly
	Public Property Overwrite() As Boolean


	' cancel current operation
	' set true to cancel, false to resume
	Public Property CancelOperation() As Boolean

	Public Sub CopyFile()

	Public Sub MoveFile()

End Class

و كمثال تطبيقى على الفئه قمت بعمل برنامج لنسخ او نقل الملفات من مكان الى اخر و هذا شكله

post-135620-1251180387_thumb.jpg

فقط قم بإختيار الملف الذى ستتم عليه العمليه و الملف الناتج و نوع العمليه ثم اضغط على الزر Action ستظهر لك القائمه التاليه

post-135620-1251180400_thumb.jpg

الزر Start Transfer غير فعال لإنى لم اختر ملف المصدر و الملف الناتج (لابد ان يكون الملف المصدر و الناتج مختلفين و ليسوا واحد). بمجرد الضغط عليه سيبدا النقل و ستظهر سرعة النقل و الوقت المتبقى، كذلك مدى تقدم عملية النقل. اثناء النقل عند الضغط على زر Action تظهر القائمه التاليه:

post-135620-1251180395_thumb.jpg

و الهدف منها ايقاف عملية النقل بشكل مؤقت ثم اكمالها او الغائها تماما

ملاحظه هامه : البرنامج لا يتحقق من المساحه الخاليه داخل الـ Drive الذى يتم النسخ او النقل فيه لذا كن حذر.

فى المرفقات نسختين من البرنامج الكود و نسخه تنفيذيه فقط و قد قمت بعمل Scan عليها من الفيروسات ببرنامج كاسبرسكى قبل رفعها لكم.

هذه هى النسخه التنفيذيه

FileOperation.rar

و هذا هو الكود

FileOperation_Code.rar

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 25 أغسطس 2009 في 09:35

مدونتي: C++ Tips and Tricks

#2

:clapping:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

رائع يا رائع .. :) ..

يعطيك العافية ..

#4

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

اخي محمد علاء اهنأك بهذا الانجاز الاكثر من رائع , كود افضل من افضل كود في فئته , و الله انك فنان , ماشاء الله لا قوة الا بالله

كل يوم مواضيع قيمة يا سلام , جزاك الله في هذا الشهر الفضيل و الحسنات تضاعف كل الخير.

تم تعديل هذه المشاركة بواسطة assaf_abdullah في 25 أغسطس 2009 في 13:31

<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">

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

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

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

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

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