تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] فكرة نقل وضغط ملفات
#1
بسم الله الرحمن الرحيم
-----------------------------
عندي فكرة لكن لا اعرف كيفية تطبيقها ساقولها واريد شخص ان يطبق الاكواد (اتمنا ان اكون ضيف خفيف عليكم )
-------------------------------------
نبدء بالفكرة اولا اريد عند الضغط علي "زر ما في البرنامج" يقوم البرنامج بفتح اداة SaveFileDingol
ويختار البرنامج اسم الملف وليكن Test وستكون الصيغة dll

عند الضغط علي حفظ يقوم البرنامج بضغط كافة الملفات التي في هذا الرابط "H:\" مثلا

ويضعها في شكل dll في المكان الذي اختاره الشخص
------------------------------------
وهناك زرار اخر فيه
اداة
LiodFileDingol
وفيها المستخدم يختار الملف الذي تم حفظه من قبل بعد الاختيار

يقوم البرنامج بحذف كافة الملفات المخفية والموجود التي في هذا المسار"H:\"

ويقوم بفك الضغط "DLL" واسترجاع الملفات كما كانت من قبل
الرد }}}
تم الشكر بواسطة:
#2
لا يصلح تحويل مجموعة من الملفات المختلفة و التي لها صفات مختلفة الي ملف Dll لأن ملفات Dll ملفات لها صفة خاصة مثلها مثل اي ملف أخر

لكن الصحيح هو أن تقرأ كل ملف علي حده و تقوم بتحويله الي مصفوفة من البايت و أيضا يجب أن تحدد نوع الملف من امتداد الملف مثلا
ثم تتم عملية الحفظ للملفات علي هيئة مصفوفة
لكنك يجب ان تحدد FileHeader الخاصة بكل ملف تحفظه و هذا ممكن كتابته علي هيئة كلاس أو Structure و تكون مكوناته عبارة عن اسم الملف و امتداده أو نوعيته لأن هذه المعلومات سوف تساعدك لاحقا علي إعادة كل ملف الي صيغته الأصلية
الرد }}}
تم الشكر بواسطة:
#3
اوكي اخي لا نحولها اريد ضغطها في ملف rar بنفس الطريقة التي قلتها فوق
الرد }}}
تم الشكر بواسطة:
#4
اين انت ياخبراء
الرد }}}
تم الشكر بواسطة:
#5
اتوقع ان عبد الرحمن يريد نوع من الخداع في لاحقة الملف بينما يبقى النسق الخاص بالملف هو rar او zip
الفكرة حلوة و لكن يبقى السؤال ما هو اصدار FrameWork الذي تعمل عليه
ساحاول بها و لكن على الاصدارة 4.5
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة:
#6
اعمل فورم لديك و اضف له كما في الصورة المرفقة



الان تابع معي عبر الاكواد
استورد المراجع التالية
PHP كود :
Imports System.IO
Imports System
.IO.Compression 

و كذلك استورد المرجع  System.IO.Compression.FileSystem الى قائمة المراجع في Solution Explorer و ليس في محرر الكود

عرف المتغير التالي في اعلى الفورم
PHP كود :
   Dim FolderName As String 

سنعمل على وظيفة مشتركة يتسخدمها اكثر من زر و هي تعود بمسار المجلد المحدد
PHP كود :
   Private Function GetOpenFolder(sender As Object) As String

        Dim Ofd 
As New FolderBrowserDialog

        With Ofd
            
.SelectedPath Environment.SpecialFolder.Recent
            
.Description "Select the source directory"
 
           If .ShowDialog DialogResult.OK Then
                Dim btn 
As Button DirectCast(senderButton)
 
               If btn.Name "FolderPath" Then
                    FolderName 
System.IO.Path.GetFileName(Ofd.SelectedPath)
 
               End If
 
               Return .SelectedPath
            End 
If
 
       End With
        Return 
""
 
   End Function 


الان الى اكود الازرار 
PHP كود :
   Private Sub FolderPath_Click(sender As ObjectAs EventArgsHandles FolderPath.Click
        TextBox1
.Text GetOpenFolder(FolderPath)
 
   End Sub 

PHP كود :
   Private Sub BtnSave_Click(sender As ObjectAs EventArgsHandles BtnSave.Click
        If FolderName 
<> "" Then
            TextBox2
.Text GetOpenFolder(BtnSave) & "\" & FolderName & ".dll"

        End If
    End Sub 

الاجراء اسفل الكود
PHP كود :
   Private Sub BtnCompress_Click(sender As ObjectAs EventArgsHandles BtnCompress.Click
        CompressionFolder
()
 
   End Sub 

PHP كود :
   Private Sub CompressionFolder()
 
       Try
            Dim startPath 
As String TextBox1.Text
            Dim zipPath 
As String TextBox2.Text
            ZipFile
.CreateFromDirectory(startPathzipPath)
 
       Catch ex As Exception
            MessageBox
.Show(ex.Message)
 
       End Try

 
   End Sub 


PHP كود :
   Private Sub Btn_selcompress_Click(sender As ObjectAs EventArgsHandles Btn_selcompress.Click
        SelectZipFile
()
 
   End Sub 

PHP كود :
   Private Sub SelectZipFile()

 
       Dim openFileDialog1 As OpenFileDialog = New OpenFileDialog
        openFileDialog1
.Filter "Dll Files (*.dll)|*.dll"
 
       openFileDialog1.FilterIndex 1
        openFileDialog1
.RestoreDirectory True
        Dim UserClickedOK 
As Boolean openFileDialog1.ShowDialog
        If 
(UserClickedOK TrueThen
            FolderName 
System.IO.Path.GetFileName(openFileDialog1.FileName)
 
           FolderName FolderName.Substring(0FolderName.Length 4)
 
           TextBox3.Text openFileDialog1.FileName
        End 
If

 
   End Sub 


PHP كود :
   Private Sub Btn_ExFold_Click(sender As ObjectAs EventArgsHandles Btn_ExFold.Click
        TextBox4
.Text GetOpenFolder(Btn_ExFold) & "\" & FolderName
    End Sub 


PHP كود :
   Private Sub Btn_Exctract_Click(sender As ObjectAs EventArgsHandles Btn_Exctract.Click
        
'معالجة عملية الحذف
        If CheckBox1.CheckState = CheckState.Checked Then
            DeleteFilesFromFolder(TextBox4.Text)
        End If
        ExTractZipFile()

    End Sub 


PHP كود :
   Sub DeleteFilesFromFolder(Folder As String)
 
       If Directory.Exists(FolderThen
            For Each _file 
As String In Directory.GetFiles(Folder)
 
               System.IO.File.Delete(_file)
 
           Next
            For Each _folder 
As String In Directory.GetDirectories(Folder)
 
               DeleteFilesFromFolder(_folder)
 
           Next

        End 
If

 
   End Sub 


PHP كود :
   Private Sub ExTractZipFile()
 
       Try
            Dim ZipFilePath 
As String TextBox3.Text
            Dim ExtactPath 
As String TextBox4.Text
            ZipFile
.ExtractToDirectory(ZipFilePathExtactPath)
 
       Catch ex As Exception
            MessageBox
.Show(ex.Message)
 
       End Try
 
   End Sub 

الطريقة تعمل وفق ما طلبت تقوم بضغط مجلد بكل ما يحتويه الى المكان المحدد و اعطائه اللاحقة Dll , و اعادة الفك في المسار المحدد مع امكانية الحذف
بالتوفيق اخي


الملفات المرفقة
.rar   ZipTest.rar (الحجم : 66.74 ك ب / التحميلات : 55)
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة: أسامة السالمي , أبو عمر
#7
ممكن تطبقها في مشروع بي نت فريم وارك 3.5

هناك مشكلة هنا بالتحديد ZipFile.CreateFromDirectory(startPath, zipPath)
ZipFile
الرد }}}
تم الشكر بواسطة:
#8
المرجع متوفر ابتداءاً من الاصدار 4.5 فقط
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة:
#9
https://msdn.microsoft.com/en-us/library...ckage.aspx

3.0 ++
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 اللهم اغْفِرْ لِلمؤمنين والمؤمنات والمسلمين والمسلمات الأحياء منهم والأموات
الرد }}}
تم الشكر بواسطة:
#10
ياخواني ما اريده التالي ارجوكم انتبوه جيدا انا عندي برنامج فيه 2 زرار عند الضغط علي زر الحفظ فيه يقوم بعمل ضغط لجميع الملفات التي في المسار الموجود في تيكست بوكس 1 ويفتح نافذه SaveFileDingol ليختار المستخدم مكان الحفظ

اما عند الاسترجاع اولا يقوم البرنامج بحذف جميع متحويات الملف من ثم يقوم البرنامج بفتح نافذه LoadFileDingol منها يختار المستخدم الملف المحفوظ مسبقا وعند التحديد يقوم البرنامج بفك الضغط عن الملفات ويسترجعها الي المسار المحدد في التيكست بوكس 1
الرد }}}
تم الشكر بواسطة:



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


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