تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] * [تم الحل] * المحاولة الثانية و اللتي باءت بالفشل حول تقسيم ملف بشكل دقيق
#1
آخر تحديث هنا






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

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


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




ساضع كلاس الفورم كامل هنا ان لم ترد تحميل المرفق:
PHP كود :
Imports System.IO
Public Class Form1
    Dim filemax 
As Long 0
    Dim mb 
As Long = (1024) ^ 2
    Dim filesize 
As Long 0
    Dim folder 
As String
    Dim th 
As Threading.Thread
    Private 
Function fl(ByVal fpath As String)
 
       If IO.File.Exists(fpath) = True Then
            Dim f 
As New IO.FileInfo(fpath)
 
           Return f.Length
        Else
            Return Nothing
        End 
If
 
   End Function
 
   Private Function folderfiles(ByVal fo As String) As Integer
        Dim dir 
As New IO.DirectoryInfo(fo)
 
       Return dir.GetFiles.Count
    End 
Function
 
   Private Sub split(ByVal fpath As String)
 
       If IO.File.Exists(fpath) = False Then Exit Sub
        Dim thefile 
As New IO.FileInfo(fpath)
 
       Dim fn As String thefile.Name
        Dim fs 
As New FileStream(fpathFileMode.Open)
 
       Dim br As New BinaryReader(fs)
 
       Dim i As Long 0
        Dim n 
As Long 0
        Dim mo 
As Long filesize Mod filemax
nxt
:
 
       Dim newfile As String folder fn "_File_" n.ToString("000000") & "_byte"
 
       p1.Invoke(Sub() p1.Maximum filemax + (filemax 80)) 'ماقدرت اتصرف معها زودت القيمة جدعنة بس
        For i = n To br.BaseStream.Length
            n = i
            Dim fw As New FileStream(newfile, FileMode.Append)
            Dim bw As New BinaryWriter(fw)
            bw.Write(br.ReadBytes(i))
            p1.Invoke(Sub() p1.Value = fl(newfile))
            fw.Close()
            fw.Dispose()
            bw.Close()
            bw.Dispose()
            If fl(newfile) >= filemax Then
                n += 1
                GoTo nxt
            End If
        Next ' 
الغريب ان الاكواد بعد هذا السطر لا يصل اليه البرنامج
        fs
.Close()
 
       fs.Dispose()
 
       br.Close()
 
       br.Dispose()
 
       lbl.Invoke(Sub() lbl.Text "تم")
 
       btnstart.Invoke(Sub() btnstart.Enabled True)
 
   End Sub
    Private Sub Form1_FormClosing
(sender As ObjectAs System.Windows.Forms.FormClosingEventArgsHandles Me.FormClosing
        If IsNothing
(th) = False Then
            If th
.IsAlive True Then
                th
.Abort()
 
           End If
 
       End If
 
   End Sub
    Private Sub Form1_Load
(sender As System.ObjectAs System.EventArgsHandles MyBase.Load
        rep
(Me)
 
   End Sub
    Private Sub Form1_MouseDown
(sender As System.ObjectAs System.Windows.Forms.MouseEventArgsHandles MyBase.MouseDownlbl.MouseDownLabel1.MouseDownp1.MouseDown
        If e
.Button Windows.Forms.MouseButtons.Left Then
            dr 
True
            ax 
MousePosition.Left
            ay 
MousePosition.Top
        End 
If
 
   End Sub
    Private Sub Form1_MouseMove
(sender As ObjectAs System.Windows.Forms.MouseEventArgsHandles Me.MouseMovelbl.MouseMoveLabel1.MouseMovep1.MouseMove
        If dr Then
            Left 
MousePosition.ax
            Top 
MousePosition.ay
        End 
If
 
   End Sub
    Private Sub Form1_MouseUp
(sender As ObjectAs System.Windows.Forms.MouseEventArgsHandles Me.MouseUplbl.MouseUpLabel1.MouseUpp1.MouseUp
        dr 
False
    End Sub
    Private Sub Label2_Click
(sender As System.ObjectAs System.EventArgsHandles Label2.Click
        Dim o 
As New OpenFileDialog
        If o
.ShowDialog Windows.Forms.DialogResult.OK Then
            txtsfile
.Text o.FileName
        End 
If
 
   End Sub
    Private Sub Label3_Click
(sender As System.ObjectAs System.EventArgsHandles Label3.Click
        Dim fbd 
As New FolderBrowserDialog
        If fbd
.ShowDialog Windows.Forms.DialogResult.OK Then
            txtfolder
.Text fbd.SelectedPath
            If txtfolder
.Text.Trim.ToLower.EndsWith("\") = False Then
                txtfolder.Text = txtfolder.Text & "
\"
            End If
        End If
    End Sub
    Private Sub btnstart_Click(sender As System.Object, e As System.EventArgs) Handles btnstart.Click
        If txtsfile.Text.Trim = "" Or txtfolder.Text.Trim = "" Or txtmax.Text.Trim = "" Then Exit Sub
        Dim fl As New IO.FileInfo(txtsfile.Text)
        folder = txtfolder.Text
        filesize = fl.Length
        filemax = CLng(txtmax.Text) * mb
        th = New Threading.Thread(AddressOf split)
        btnstart.Enabled = False
        If th.IsAlive = False Then
            th.Start(txtsfile.Text)
        End If
    End Sub
   
End Class 
ادري فيه لخبطة كثيرة لكن !Sad
شكرا لكم مقدما.


الملفات المرفقة
.zip   NewSplitterAndMerger.zip (الحجم : 16.34 ك ب / التحميلات : 14)
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
}}}


الردود في هذا الموضوع
* [تم الحل] * المحاولة الثانية و اللتي باءت بالفشل حول تقسيم ملف بشكل دقيق - بواسطة سعود - 26-08-22, 08:39 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ما الحل dwidar07@gmail.com 3 441 21-02-25, 01:08 AM
آخر رد: أبو خالد الشكري
Question [VB.NET] هناك سؤال يهم كل مبرمج الماذا برنامجك يظهر على بعض الشاشات اكثر دقه بشكل مصغر ومشوه Microformt 0 453 01-02-25, 03:48 PM
آخر رد: Microformt
  هذا الكود لا يعمل بشكل صحيح لماذا ؟ PeterGhattas082460 3 454 21-12-24, 02:55 PM
آخر رد: aljzazy
  ممكن طريقة عمل الصورة بشكل دائري بوحمد 3 504 14-10-24, 04:01 PM
آخر رد: بوحمد
  ماهو حل رسالة الخطأ اللتي تظهر حتى لو انها ضمن Try catch justforit 2 588 28-04-24, 09:45 AM
آخر رد: justforit
  تقسيم الفانورة الي اكثر من ورقة عبدالكريم برشدان 1 388 20-04-24, 02:22 AM
آخر رد: عبدالكريم برشدان
  هل يمكن جعل عناوين الهيدر بشكل عمودي مصمم هاوي 2 568 16-04-24, 03:59 AM
آخر رد: مصمم هاوي
Heart اقدم لكم هدية تصفح منتدى vb4arb.com بشكل أفضل من قبل مع ( vb4arb Code Highlighter ) عبدالله الدوسري 5 4,591 24-01-24, 10:31 PM
آخر رد: annagui
  كيف يتم تعبئة قريد فيو بدون قاعدة بيانات بشكل مباشر؟ nowiglah 1 716 01-12-23, 10:57 PM
آخر رد: Taha Okla
  [سؤال] حول ظهور النافذة الاولى عند الضغط على Menustrip2 في النافذة الثانية vb.net 2012 mh66 0 472 19-10-23, 09:05 AM
آخر رد: mh66

التنقل السريع :


يقوم بقرائة الموضوع: