تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مشروع] ضغط وفك الضغط (باستخدام حبوب خاصة)
#1
Big Grin 
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
أشكر الاخ "أباعمر" على المثال (ردا على استفسار احد الاخوة)
فأحببت تجربة الملف "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 


الملفات المرفقة
.zip   For_adel27.zip (الحجم : 164.28 ك ب / التحميلات : 140)
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة: أبو عمر
#2
الله يجزاك بالخير
انما خلني انقل الشكر الى صاحب الاستفسار نفسه
لاني اعتبره هو صاحب الفكرة وهو صاحب المشروع
adel27
ودائما مبدع في اطروحاتك
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 رَبِّ اغْفِرْ لِي وَلِوَالِدَيَّ
Heart
الرد }}}}
تم الشكر بواسطة: سعود
#3
الشكر لله ياغاليين
الرد }}}}
تم الشكر بواسطة:
#4
بارك الله فيك أخي متميز
الرد }}}}
تم الشكر بواسطة:
#5
بالبدايه شكراً لك اختصرت علي وقت في كتابة الاكواد و لي ملاحظه بسيطه ،،  وهو عدم احتفاظ الملفات  بترميزها  ،،  فمثلاً  لو تم ضغط  ملف اسمه يحوي حروف عربيه سيظهر بهذا الشكل  ؟؟؟؟؟؟؟؟؟ بداخل الملف المضغوط  ،،  وقد عملت مع هذه المكتبه سابقاً على مشروع  ب 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 



و بهذا تنحل مشكلة الترميز  للحروف العربيه  ،، بالتوفيق للجميع
اسم معرفي : محمد يحيى
الرد }}}}
تم الشكر بواسطة: سعود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مشروع] مقبلات - الضغط سعود 7 1,266 29-11-16, 04:18 AM
آخر رد: سعود
  [مشروع] مشروع شجرة الحسابات (دليل الحسابات) باستخدام VB.net أحمد النجار 11 3,201 09-10-16, 12:36 AM
آخر رد: محمود بكرى
Information [مشروع] طريقة تصميم برنامج قواعد بيانات يحتوي على علاقات بين الجداول (باستخدام الكود فقط) Mohamad Anan 7 4,877 15-02-14, 09:56 PM
آخر رد: yemen_design

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم