أفضل تحديث(عبارة غير مكتمل اي لا يحتوي الميزة الاقل وهي استعادة التحميل مرة اخرى الفكرة موجودة لكن الارهاق وصل ذروته)
كلمة المرور:vb4arb
تسمية ملف المشروع (مش حالك)
اشكر كل من قدم معلومة في المنتدى عموما
المعلومة اللي كنت محتاجا لمدة طويلة لمعرفة نهاية الملف موجودة
هنا
ففي هذه المشاركة تمكنت من معرفة كم ملف سيتم تقسيمه وكنت بعدها فقط احتاج نهاية الملف والحمدلله .
كلمة المرور saud
آخر كلام حسنت اللي يمكنني تحسينه
جربت قبل قليل باكثر من حجم ونوع
جربت بحجم 5 جيجا نسخة ويندوز iso
وايضا بحجم مقارب .zip
وتم
هذا المشروع هو اللي كان ناقص وكملته ورفعته الان فقط لانسخه الى جهازي الاخر
الان المثالين مثل بعض بالاكواد فقط شكل وتسميات تفرق بينهم
يعطيك العافية - صرفت عليه الكثير من الجهد ليصل لهذه الجمالية ..
-------------------------------------
ولكن قمت ببعض التعديلات :
تم التعديل على المثال - بحيث تتطابق احجام المخرجات (عدا الاخير) .
تم التعديل على تسمية الملفات بحيث لا يعطي أصفار اطول من عدد الملفات.
تم التعديل على سرعة التقسيم بحيث يبدو شريط التقدم يعمل ببطئ مهما كان حجم الملف(وهو تقدم فعلي وليس وهمي).
طبعاً الفضل الأول يبقى لصاحب الفكرة للاخ المتميز (سعود الشرارات)
إقتباس :تم التعديل على تسمية الملفات بحيث لا يعطي أصفار اطول من عدد الملفات.
هذي لحالها تحتاج وقت للفهم .
رائع بارك الله فيك.
(27-08-22, 10:06 AM)سعود كتب : [ -> ]إقتباس :تم التعديل على تسمية الملفات بحيث لا يعطي أصفار اطول من عدد الملفات.
هذي لحالها تحتاج وقت للفهم .
رائع بارك الله فيك.
الطريقة بسيطة ..
1 - نحسب عدد الملفات الناتجة (المخرجات) + 1
2 - نحسب طول سلسلة الرقم (يعني كم خانة).
3 - نستعين بالدالة (StrDup) لتكرار خانة معينة عددة مرات (وهي الصفر) بعدد خانات سلسلة الرقم (الذي هو عدد الملفات الناتجة).
4 - نجعل رقم الملف (متغير يحسب عدد الملفات الناجة مع كل صنع ملف جديد) يدخل السلسلة السابقة ويأخذ تنسيقها.
5 - وفي الختام السلام.
السلام عليكم ورحمة الله و بركاته
التحديث للمشروع الثاني ونفس الشي مناسب للاول وهو تعديل تسمية الملف بعد تعديل الاخ الكريم بارك الله فيه و له.
سيكون تنسيق الاسم الجديد هكذا:
PHP كود :
A7mad_saud.zip.Total27part01
بالكود التالي:
اولا نعرف متغير باي اسم وتكون قيمته هي عدد الملفات
PHP كود :
Dim allgroups As Long
If mo > 0 Then
allgroups = (rmain + 1)
ElseIf mo = 0 Then
allgroups = rmain
End If
و عند التسمية نكتب كود:
PHP كود :
Dim newfile As String = folder & fn & ".Total" & allgroups & "part" & (n1 + 1).ToString(StrDup(Len(rmain.ToString), "0"))
هذا بالنسبة لعملية الـ split اما الـ merge :
PHP كود :
Dim newfilename As New IO.FileInfo(lst(0))
Dim fn As String = newfilename.Name
fn = Mid(fn, 1, fn.LastIndexOf("."))
الان fn هو الاسم الاصلي بعد حذف الزيادة .
كود زر الدمج بعد التعديل:
PHP كود :
If txtfolder.Text.Trim = "" Then Exit Sub
folder = txtfolder.Text
Dim s As New FolderBrowserDialog
If s.ShowDialog = Windows.Forms.DialogResult.OK Then
th = New Threading.Thread(AddressOf merge)
If th.IsAlive = False Then
btnsplit.Enabled = False
btnstopsplit.Enabled = False
btnmerge.Enabled = False
btnstopmerge.Enabled = True
th.Start(s.SelectedPath & "\")
End If
End If
استخدمنا تحديد مجلد لوضع الملف المدموج الجديد والاسم بخطوة الدمج حيث ناخذ اسم اول ملف فقط لتوليد المسمى الاصلي.
اذا لم تتضح فالمثال مرفق من غير كلمة مرور