منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[مشروع] ضغط وفك الضغط (باستخدام حبوب خاصة) - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم امثلة ومشاريع VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=188)
+--- الموضوع : [مشروع] ضغط وفك الضغط (باستخدام حبوب خاصة) (/showthread.php?tid=13419)



ضغط وفك الضغط (باستخدام حبوب خاصة) - سعود - 03-10-15

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
أشكر الاخ "أباعمر" على المثال (ردا على استفسار احد الاخوة)
فأحببت تجربة الملف "Ionic.Zip.dll" بمشروع مستقل .. وها هو مرفق.
ملاحظة لا جديد أبدا وانما حب مشاركة.
تنبيه(تختلف نتيجة الاستخراج او توليد ملف من حيث المكان Path فاذكر بطريقة الكود التي استخدمتها يكون المكان في المحرك الرئيسي للنظام اما الان يكون بجوار الملف التنفيذي) هذا اذا لم اخطيء



وهذا كلاس الفورم
PHP كود :
Imports System.ComponentModel
Imports System
.IO
Imports Ionic
.Zip
Public Class Form1
    Dim lst 
As New List(Of String)
 
   Dim ofd As OpenFileDialog
    Dim sfd 
As SaveFileDialog
    Private Sub p
(ByVal i As Integer)
 
       If ProgressBar1.InvokeRequired Then
            ProgressBar1
.Invoke(New Action(Of Integer)(AddressOf p), i)
 
       Else
            ProgressBar1
.Value i
        End 
If
 
   End Sub

    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        lst
.Clear()
 
       ofd = New OpenFileDialog
        ofd
.Multiselect True
        If ofd
.ShowDialog DialogResult.OK Then
            lst
.AddRange(ofd.FileNames)
 
       End If
 
       If lst.Count 0 Then
            Button1
.Enabled False
            Button2
.Enabled False

            ProgressBar1
.Maximum lst.Count 1
            If b1
.IsBusy False Then b1.RunWorkerAsync()
 
       End If
 
   End Sub
    Dim zip 
As ZipFile
    Private Sub b1_DoWork
(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles b1.DoWork
        zip 
= New ZipFile
        For a 
0 To lst.Count 1
            b1
.ReportProgress(a)
 
           zip.AddFile(lst(a), "")
 
       Next
    End Sub

    Private Sub b1_ProgressChanged
(sender As ObjectAs ProgressChangedEventArgsHandles b1.ProgressChanged
        p
(e.ProgressPercentage)
 
   End Sub

    Private Sub b1_RunWorkerCompleted
(sender As ObjectAs RunWorkerCompletedEventArgsHandles b1.RunWorkerCompleted
        If zip
.Count 0 Then
            zip
.Save(IO.Path.GetFileNameWithoutExtension(lst(lst.Count 1)) & ".zip")
 
       End If
 
       Button1.Enabled True
        Button2
.Enabled True

    End Sub
    Dim zipfilename 
As String ""

 
   Private Sub smax(ByVal i As Integer)
 
       If ProgressBar1.InvokeRequired Then
            ProgressBar1
.Invoke(New Action(Of Integer)(AddressOf smax), i)
 
       Else
            ProgressBar1
.Maximum i
        End 
If
 
   End Sub
    Private Sub Button2_Click
(sender As ObjectAs EventArgsHandles Button2.Click
        ofd 
= New OpenFileDialog
        ofd
.Filter "Zip Files(*.zip)|*.zip"
 
       If ofd.ShowDialog DialogResult.OK Then
            zipfilename 
ofd.FileName
            Button2
.Enabled False
            Button1
.Enabled False

            If b2
.IsBusy False Then b2.RunWorkerAsync()
 
       End If
 
   End Sub
    Dim zip2 
As ZipFile



    Private Sub b2_DoWork
(sender As ObjectAs DoWorkEventArgsHandles b2.DoWork

        zip2 
ZipFile.Read(zipfilename)

 
       smax((zip2.Count) - 1)
 
       Dim m As Integer 0
        For Each en 
As ZipEntry In zip2
            b2
.ReportProgress(m)
 
           en.Extract()
 
           m += 1
        Next


    End Sub

    Private Sub b2_RunWorkerCompleted
(sender As ObjectAs RunWorkerCompletedEventArgsHandles b2.RunWorkerCompleted


        Button2
.Enabled True
        Button1
.Enabled True

    End Sub

    Private Sub b2_ProgressChanged
(sender As ObjectAs ProgressChangedEventArgsHandles b2.ProgressChanged
        p
(e.ProgressPercentage)
 
   End Sub
End 
Class 



RE: ضغط وفك الضغط (باستخدام حبوب خاصة) - أبو عمر - 03-10-15

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


RE: ضغط وفك الضغط (باستخدام حبوب خاصة) - adel27 - 31-10-15

الشكر لله ياغاليين


RE: ضغط وفك الضغط (باستخدام حبوب خاصة) - TigreBlanc1 - 24-11-15

بارك الله فيك أخي متميز


RE: ضغط وفك الضغط (باستخدام حبوب خاصة) - myalsailamy - 16-12-15

بالبدايه شكراً لك اختصرت علي وقت في كتابة الاكواد و لي ملاحظه بسيطه ،،  وهو عدم احتفاظ الملفات  بترميزها  ،،  فمثلاً  لو تم ضغط  ملف اسمه يحوي حروف عربيه سيظهر بهذا الشكل  ؟؟؟؟؟؟؟؟؟ بداخل الملف المضغوط  ،،  وقد عملت مع هذه المكتبه سابقاً على مشروع  ب ASP.Net   و حللتها بسطور بسيطه  و هي :

PHP كود :
        zip.UseUnicodeAsNecessary True
        zip
.AlternateEncodingUsage ZipOption.Always
        zip
.AlternateEncoding System.Text.Encoding.UTF8 

اضفها في الـ Method 

PHP كود :
    Private Sub b1_DoWork(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles b1.DoWork
        zip 
= New ZipFile
        zip
.UseUnicodeAsNecessary True
        zip
.AlternateEncodingUsage ZipOption.Always
        zip
.AlternateEncoding System.Text.Encoding.UTF8
        
For 0 To lst.Count 1
            b1
.ReportProgress(a)
            zip.AddFile(lst(a), "")
        Next
    End Sub 



و بهذا تنحل مشكلة الترميز  للحروف العربيه  ،، بالتوفيق للجميع