تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طلب ( التحقق من سلامة ملف Zip والتاكد من الرقم السرى )
#1
السلام عليكم ورجمة الله

اريد التحقق من سلامة ملف مضغوط zip والتاكد من الرقم السرى الخاص به

وجزاكم الله خيرا
الرد }}}
تم الشكر بواسطة:
#2
بصراحة ماجربت سابقا

ولكن للتعامل مع ملفات الwinrar عندك اكثر من طريقة

1- استعمال مكتبة خاصة
http://www.chilkatsoft.com/rar-dotnet.asp

2- استعمال موجة الاوامر
http://acritum.com/software/manuals/winrar/
تقدر تشوف قائمة الاوامر بالذهاب ل command line mode > commands


بالتوفيق
الرد }}}
تم الشكر بواسطة:
#3
جزاك الله خيرا
كثيرا ما يقوم الاخوة باعطائى الحلول بهذه الطريقة لاكن للاسف الخلل يرجع الى فانا غير محترف فى البرمجة & غير موفق فى اللغة الانجليزية
رجاء لو قدرت تعملى مشروع صغير فيه طلبى يبقى جزاك الله خير
الرد }}}
تم الشكر بواسطة:
#4
ali.alfoly كتب :جزاك الله خيرا
كثيرا ما يقوم الاخوة باعطائى الحلول بهذه الطريقة لاكن للاسف الخلل يرجع الى فانا غير محترف فى البرمجة & غير موفق فى اللغة الانجليزية
رجاء لو قدرت تعملى مشروع صغير فيه طلبى يبقى جزاك الله خير

ههههههههههه كلنا مثلك Big Grin
لاتيأس
Smile

هذا مثال للاخ عبد الله الدوسري وجدته بحاسوبي
من الممكن أن يفيدك
Big Grin

صورة المثال :




لتحميل المثال :


اللَّهُمَّ أَنْتَ رَبِّي ، لا إِلَه إِلاَّ أَنْتَ خَلَقْتَني وأَنَا عَبْدُكَ ، وأَنَا على عهْدِكَ ووعْدِكَ ما اسْتَطَعْتُ ، أَعُوذُ بِكَ مِنْ شَرِّ ما صنَعْتُ ، أَبوءُ لَكَ بِنِعْمتِكَ علَيَ ، وأَبُوءُ بذَنْبي فَاغْفِرْ لي ، فَإِنَّهُ لا يغْفِرُ الذُّنُوبِ إِلاَّ أَنْتَ .
الرد }}}
تم الشكر بواسطة:
#5
جزاك الله خيرا وجعله فى موازين حسناتك
انا بالفعل اعرف هذا المشروع قد اعطاه لى احد الاخوة جزاهم الله خير فى طلب قديم بخصوص نفس الموضوع

انا اريد التحقق من سلامة الملف والرقم السرى الخاص به
الرد }}}
تم الشكر بواسطة:
#6
لايمكنك التأكد من كلمة المرور بمقارنة مباشرة

لاحظ برنامج الونرار، عندما تعطيه كلمة مرور لن يعترض ولكنه يحاول فك الضغط وسيظهر خطأ إذا لم ينجح ، لأنه يستخدم كلمة المرور كمفتاح لفك الضغط

وهذا يدل على ان كلمة المرور تستخدم كعنصر "ميكانيكي"
الرد }}}
تم الشكر بواسطة:
#7
اه فعلا جزاك الله خير ابو يعقوب
الرد }}}
تم الشكر بواسطة:
#8
عادي اخي

حتى لو كنت ضعيف في الانجلينزية حاول

لو حاولت في الموقع الي عطيتك اياه للقيت الجواب

ففي مكتبة ChilkatDotNet2 يوجد العديد من الدوال التي تتعامل مع zip و rar

كما قلت سابقا انني لم اتعامل مع هذه الاشياء قط , ولكن فقط اخذت ساعة من وقتي وتصفحت الموقع ورأيت استخدامات الدوال وشرحها
http://www.chilkatsoft.com/refdoc/csZipRef.html

--

ثم كتبت class لك خصيصا اخي الكريم
وفيها دالتان نحقق لك ماتريده

IsArchiveCorrupted
IsPasswordValid


اولا : حمل المكتبة من المرفقات اذا كانت نسخة الفريم ورك هي 3.5
اذا لم يكن ادخل هنا واختار نسخة الفريم ورك وحمل المكتبة
http://www.chilkatsoft.com/downloads_DotNet.asp
-
ثانيا : اضف المكتبة الى مشروعك من خلال Project > Add reference > Browse
-
ثالث : اضف هذا الكلاس

PHP كود :
Public Class ZipInfo
    
Private _zipObj As New Chilkat.Zip()



#Region "password Valid"
    
Public Function IsPasswordValid(ByVal zipFilePath As StringByVal possiblePassword As String) As Boolean
        
If Not System.IO.File.Exists(zipFilePathThen
            Dim ex 
As New Exception("File Not Founded!")
            Throw 
ex
        End 
If
        If 
System.IO.Path.GetExtension(zipFilePath).ToLower() <> ".zip" Then
            Dim ex 
As New Exception("Not supported " System.IO.Path.GetExtension(zipFilePath) & "files")
            Throw 
ex
        End 
If


        
'begin

        '
checkUnclock
        Dim unlocked 
As Boolean _zipObj.UnlockComponent("anything")
        If 
Not unlocked Then
            Dim ex 
As New Exception("Cannot UnlockComponent")
            Throw 
ex
        End 
If


        
'append
        _zipObj.AppendZip(zipFilePath)


        '
is passord valid
        _zipObj
.DecryptPassword possiblePassword
        
Return _zipObj.VerifyPassword()
    
End Function
#End Region



#Region "IsArchiveCorrupted"
    
Public Function IsArchiveCorrupted(ByVal zipFilePath As StringOptional ByRef errorText As String "") As Boolean
        
If Not System.IO.File.Exists(zipFilePathThen
            Dim ex 
As New Exception("File Not Founded!")
            Throw 
ex
        End 
If
        If 
System.IO.Path.GetExtension(zipFilePath).ToLower() <> ".zip" Then
            Dim ex 
As New Exception("Not supported " System.IO.Path.GetExtension(zipFilePath) & "files")
            Throw 
ex
        End 
If
        
'/checkUnclock
        Dim unlocked As Boolean = _zipObj.UnlockComponent("anything")
        If Not unlocked Then
            Dim ex As New Exception("Cannot UnlockComponent")
            Throw ex
        End If


        _zipObj.OpenZip(zipFilePath)
        errorText = _zipObj.LastErrorText
        If _zipObj.LastErrorText.Contains("File access error: did not read full requested amount of data.") Then
            Return True
        Else
            Return False
        End If
    End Function


#End Region


End Class 


سي شارب لإفادة الجميع (فالاصل الكود مكتوب بسي شارب)
PHP كود :
public class ZipInfo
    
{
        
Chilkat.Zip _zipObj = new Chilkat.Zip();


        
#region password Valid
        
public bool IsPasswordValid(string zipFilePathstring possiblePassword)
        {
            if (!
System.IO.File.Exists(zipFilePath))
            {
                
Exception ex = new Exception("File Not Founded!");
                throw 
ex;
            }
            if (
System.IO.Path.GetExtension(zipFilePath).ToLower() != ".zip")
            {
                
Exception ex = new Exception("Not supported " +
                    
System.IO.Path.GetExtension(zipFilePath) + "files");
                throw 
ex;
            }


            
//begin

            //checkUnclock
            
bool unlocked _zipObj.UnlockComponent("anything");
            if (!
unlocked)
            {
                
Exception ex = new Exception("Cannot UnlockComponent");
                throw 
ex;
            }


            
//append
            
_zipObj.AppendZip(zipFilePath);


            
//is passord valid
            
_zipObj.DecryptPassword possiblePassword;
             return 
_zipObj.VerifyPassword();
        }
        
#endregion

        #region "IsArchiveCorrupted"
        
public bool IsArchiveCorrupted(string zipFilePath)
        {
            if (!
System.IO.File.Exists(zipFilePath))
            {
                
Exception ex = new Exception("File Not Founded!");
                throw 
ex;
            }
            if (
System.IO.Path.GetExtension(zipFilePath).ToLower() != ".zip")
            {
                
Exception ex = new Exception("Not supported " +
                    
System.IO.Path.GetExtension(zipFilePath) + "files");
                throw 
ex;
            }
            
////checkUnclock
            
bool unlocked _zipObj.UnlockComponent("anything");
            if (!
unlocked)
            {
                
Exception ex = new Exception("Cannot UnlockComponent");
                throw 
ex;
            }


            
_zipObj.OpenZip(zipFilePath);
            if (
_zipObj.LastErrorText.Contains("File access error: did not read full requested amount of data."))
            {
                return 
true;
            }
            else
            {
                return 
false;
            }

        }


        public 
bool IsArchiveCorrupted(string zipFilePath out string errorText)
        {
            if (!
System.IO.File.Exists(zipFilePath))
            {
                
Exception ex = new Exception("File Not Founded!");
                throw 
ex;
            }
            if (
System.IO.Path.GetExtension(zipFilePath).ToLower() != ".zip")
            {
                
Exception ex = new Exception("Not supported " +
                    
System.IO.Path.GetExtension(zipFilePath) + "files");
                throw 
ex;
            }
            
//begin
            ////checkUnclock
            
bool unlocked _zipObj.UnlockComponent("anything");
            if (!
unlocked)
            {
                
Exception ex = new Exception("Cannot UnlockComponent");
                throw 
ex;
            }


            
_zipObj.OpenZip(zipFilePath);
             
errorText _zipObj.LastErrorText;
            if (
_zipObj.LastErrorText.Contains("File access error: did not read full requested amount of data."))
            {
                return 
true;
            }
            else
            {
                return 
false;
            }


        }
        
#endregion


    




===


خلاص الان تقدر تستعدي الدوال من اي مكان في الفورم

كود الاستدعاء للدالة IsArchiveCorrupted

PHP كود :
Dim zip As New ZipInfo()

Try
    If 
zip.IsArchiveCorrupted("C:\Users\Fti\Desktop\Master uploader.zip"Then
        MessageBox
.Show("الملف معطوب")
        Return
    
End If
Catch 
ex As Exception
    MessageBox
.Show(ex.Message)
End Try 

سي شارب
PHP كود :
ZipInfo zip = new ZipInfo();

            try
            {
                if (
zip.IsArchiveCorrupted(@"C:\Users\Fti\Desktop\Master uploader.zip"))
                {
                    
MessageBox.Show("الملف معطوب");
                    return;
                }
            }
            catch (
Exception ex)
            {
                
MessageBox.Show(ex.Message);
            } 


=========

والاستدعاء للدالة IsPasswordValid

PHP كود :
Dim zip As New ZipInfo()

Try
    
Dim password As String "1234"
    
If zip.IsPasswordValid("C:\Users\Fti\Desktop\Master uploader.zip"passwordThen
        MessageBox
.Show("كلمة السر صحيحة")
    Else
        
MessageBox.Show("كلمة السر غير صحيحة")
    
End If
Catch 
ex As Exception
    MessageBox
.Show(ex.Message)
End Try 


سي شارب
PHP كود :
ZipInfo zip = new ZipInfo();

            try
            {
                
string password "1234";
                if (
zip.IsPasswordValid(@"C:\Users\Fti\Desktop\Master uploader.zip"password))
                {
                    
MessageBox.Show("كلمة السر صحيحة");
                }
                else
                {
                    
MessageBox.Show("كلمة السر غير صحيحة");
                }
            }
            catch (
Exception ex)
            {
                
MessageBox.Show(ex.Message);
            } 


==


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

+

في الموقع ايضا شرح لدوال الفئة rar التي تمكنك من التعامل مع ملفات rar

لكن انا استعملت zip لانك طلبت هذا



===


خارج الموضوع

اخواني هناك سؤال بسيط امبي اعرفه بس قلت مايحتاج اسئل لأن مابستفيد
لكن اليوم اكتشفت اني راح استفيد

خلال كتابتي لكود السي شارب عملت دالتي IsArchiveCorrupted ك 2 overload

والسبب اني اريد فقط اضافة بارمتار اختياري للدالة

فتذكرت ايام الفيجوال بيسك ووجود شيئ اسمه optional parameter

ولكن لايوجد هذا في السي شارب واضطررت لعمل دالتين بنفس الاسم كي يحقق مبدأ الoverload


لكن لو كان موجود optional parameter لاختصرت عليي الوقت وعفاني من كتابة الدالة من جديد

فهل يوجد بديل ل optional parameter في سي شارب ؟؟؟؟



--


العكس حصل لي في فيجوال بيسك

استعملت out في السي شارب لإخراج قيمة من الدالة

ولكن لم اجد هذا في الفيجوال بيسك

فهل يوجد out هناك ؟؟ << رغم اني لست مهتما لأني ماشتغل عليها

لكن فقط للإفادة العامةBig Grin




تحياتي



يالتوفيق




الملفات المرفقة
.zip   ChilkatDotNet2-9.4.1-win32.zip (الحجم : 2.36 م ب / التحميلات : 55)
الرد }}}
تم الشكر بواسطة:
#9
ملاحظة : المكتبة الي فوق لنسخة فريم ورك 3.5 ولن تعمل على اي اصدار اخر

هنا توجد المكتبة لجميع نسخ الفريم ورك

http://www.chilkatsoft.com/downloads_DotNet.asp
الرد }}}
تم الشكر بواسطة:
#10
جزاك الله خير اخى الحبيب
يعلم الله تعالى كم انا سعيد جدا جدا جدا
منذ اكثر من شهرين وانا ابحث عن احد يساعدنى فى هذا الامر وها قد بعثك الله بعد طوال انتظار
الحمد لله رب العالمين
وجزاك الله خيرا

انا ذاكرت الكلاس كويس وفهمت منه حجات كتير جدا

وارجو منك تكرما شرح النقاط الاتيه


الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ارجو التعديل على الدالة المرفقة - الدالة تعيد الرقم -1 new_programer 4 91 20-03-24, 01:18 PM
آخر رد: تركي الحلواني
  التحقق من خلال محتوى خلية عن طريق textbox صالح عبدالله 2 222 24-01-24, 12:54 PM
آخر رد: صالح عبدالله
  [سؤال] كود اظهار رساله في حال وجود الرقم في اكثر من عمود مبرمج صغير 1 6 402 09-01-24, 01:41 AM
آخر رد: Taha Okla
  خطأ عن مقارنه الرقم التفعيل Ashraf Elafify 2 257 31-12-23, 11:49 PM
آخر رد: Ashraf Elafify
  كود لعدم تكرار الرقم في قاعدة البيانات yossefsaad370 1 340 28-10-23, 10:29 AM
آخر رد: atefkhalf2004
  كود لا يكرر الرقم yossefsaad370 1 221 26-10-23, 09:54 AM
آخر رد: قناص المدينة
  تكرار الرقم القومى salah525 1 264 02-10-23, 10:14 PM
آخر رد: سالم العنزي
  الصفر في شمال الرقم Hassan.syria 2 494 30-06-23, 12:14 AM
آخر رد: أبو خالد الشكري
  التحقق من معطيات قبل تشغيل البرنامج ابو محمد محمد محمد 3 510 30-04-23, 11:03 PM
آخر رد: عبدالله الدوسري
  لا استطيع الحصول على الرقم التسلسلي للقرص C ابو محمد محمد محمد 6 737 27-04-23, 01:49 PM
آخر رد: ابو محمد محمد محمد

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


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