المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : ضغط الملفات بصيغة zip في الدلفي


kachwahed
01-06-2009, 11:16 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله

خوازمية الضغط الشهيرة ZIP هي أحد أشهر أنواع الملفات المتواجدة في النت ذلك لأنها سريعة الإنتاج وسهلة الاستخدام وفك الضغط، ظهرت هذه الخوارزمية سنة 1989 على يد Phil Katz، واستمرت في التطور إلى يومنا هذا...
طالعوا المزيد حول خوارزمية الضغط ZIP من خلال الرابط (خاصة تركيبة الملفات):
http://en.wikipedia.org/wiki/File:ZIPformat.jpg
تركيبة ملفات ZIP (http://en.wikipedia.org/wiki/ZIP_(file_format))

هناك مجموعة كبيرة من المصادر المفتوحة والتجارية من مكونات أو لمكتبات للدلفي تساعدتك لتجعل من برنامج يدعم ZIP و UNZIP ضغط وفك ضغط الملفات، وهناك مصادر أخرى لصيغ معروفة مثل RAR ...

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

نذكر منها على سبيل المثال لا الحصر:
FlexCompress (http://www.componentace.com/compression_component_compression_delphi_encryptio n_delphi_flexcompress.htm)

FlexCompress هو مكون ضغط للدلفي يهدف لإنشاء ملفات تشفير قوية وأفضل من ضغط WinZip وRAR ، ويدعم الملفات كبيرة الحجم > 4 جيجابايت مع استهلاك ذاكرة منخفضة وغيرها الكثير من الميزات المفيدة...

ZipForge (http://www.componentace.com/zip_component_zip_delphi_zipforge.htm)

مكون متقدم يدعم PKZip بشكل التام ، والصيغة unzip ، سريع ويدعم تقسيم الملفات الناتجة وأيضا Zip64 ، SFX ، وإصلاحها والحماية بكلمة السر ، وغيرها من الخصائص المفيدة. ZipForge لا يتطلب DLLs ، تجمع مباشرة في ملف تنفيذي، ZipForge مجاني للاستخدام الشخصي والآن مع الدعم الكامل يونيكود!


Abbrevia (http://sourceforge.net/projects/tpabbrevia/)
Abbrevia هي أدوات مفتوحة المصدر للضغط بالدلفي و سي + + بيولدر ، و Kylix أيضا. وهو يدعم PKZIP 4 و Microsoft CAB ، و gzip وملفات التثبيت الذاتي (Self-Extractor) ، مكونات مرئي يبسط التلاعب مع الملفات المضغوطة.

ZipTV (http://www.ziptv.com/index.html)
أحد أشهر مكونات الضغط ZipTV يدعم حاليا أكثر من 46 خوارزميات ضغط وفك الضغط. يمكنك مع ZipTV إنشاء قائمة للملفات،ويدعم ملفات متعددة الأقراص، الحماية بكلمة سر ، والتشفير ، والعثور على ملفات أو ASCII / ثنائية / ستعشري / عشري / ثمانية في البيانات المضغوطة ، التعديل على الملفات المضغوطة، إضافة تعليق، التشفير / فك شفرة الملفات، وتحويل بين صيغ الأرشيف ، واختبار الأرشيف، وإنشاء SFX ملفات فك الضغط الذاتي وUnSFX ، استرجاع كلمة السر المفقودة الخ...
ويدعم الصيغ التالية:
SPLIT / Enhanced Deflate / Deflate64 ZIP, JAR, CAB, LHA, LZH, TAR, GZIP, GZipTar, BH BlakHole, UUE / XXE / ENC, RAR, ARJ, ARC, ...

TZipMaster (http://www.delphizip.org/)
TZipMaster مكون مفتوح المصدر، غير مرئي، لصاحبيه: ChrisVleghert وEricW.Engler مجاني يسمح بضغط وفك الضغط عن صيغ ZIP باستعمال مكتبة DLLs.

تتفاوت هذه المكونات فيما بينها في الخصائص والمميزات وتشترك في الخوارزمية الشهير لملفات ZIP مع اختلافات بسيطة.

بالنسبة لي أفضل استعمال مكتبات DLL عوضا عن المكونات حتى يبقى البرنامج قابل للتعديل بسهولة لاحقا...

اليوم اخترت مكون مجاني صغير لصاحبه Angus Johnson ، يمكن استعماله بشكل مكتبة DLL...
يدعم ضغط وفك الضغط للصيغية ZIP، يدعم SFX، تقسيم الملفات، مع إدراج: تعليق، كلمة سر، تعديل حذف ملفات من الأرشيف الناتج، نافذة تقدم عملية الضغط وغير ذلك.

TZip - Version 1.3 (http://angusj.com/delphi/)
للتحميل من هنا. (http://angusj.com/delphi/tzip.zip)
مرفق مع المكون مثال وملف H e l p
لاستعمال هذا المكون (المكتبة) أضف الوحدتين: ZIP و ZipDlls إلى حقل Uses
ثم أدرج كود إنشاء غرض من النوع TZIP بمثل هذا الكود:
//إنشاء الغرض
Zip := TZip.Create(Self);
try
//مسار ملف المكتبة
Zip.DllPath := ExtractFilePath(Application.ExeName);
//قائمة الملفات التي ستضغط
Zip.FileSpecList.Clear;
//المسار الكامل للملف الناتج
Zip.Filename := FileTarget;
//مسار الملف الناتج
Zip.AddPath := ExtractFilePath(copy(FileTarget,3,length(FileTarge t)));
//خيارات الضغط
Zip.AddOptions := [aoUpdate];
// تعليق يضاف إلى الملف الناتج
Zip.ZipComment := MemoComment.Text;
//كلمة السر
Zip.Password := Password;
for I := 0 to ListBoxFiles.Items.Count - 1 do
Zip.FileSpecList.Add(ListBoxFiles.Items[i]);
//بهذا الأمر يتم إنشاء الملف
Zip.Add;
finally
Zip.FileSpecList.Clear;
//مهم جدا تحرير الغرض عند النهاية
Zip.Free;
end;

أعددت مثال صغير (بريمج) يبين طريقة ضغط الملفات بهذه المكتبة...
http://img188.imageshack.us/img188/7140/litezipcompressor.jpg
تجدونه في المرفقات مع الكود المصدري ومكتبة المكون في المجد UnitZIP ومعها ملف التعريب الذي أضفته للمكتبة ;)

في انتظار اقتراحاتكم وتعليقاتكم إثراء للموضوع...
تقبلوا تحياتي...

I_Tiger
01-06-2009, 11:49 AM
بارك الله فيك على المجهود الطيب و اسال الله ان يجعله في ميزان حسناتك ، واصل

B.M.AbdelAziZ
01-06-2009, 03:14 PM
ZIP يستخدم خواريزمية Deflate التي هي خواريزمية LZ77 + Huffman coding
بالحديث عن المكونات هناك SevenZipVCL للتعامل مع 7-Zip (http://www.7-zip.org/) او 7z حيث نسبة الضغط الاحسن حاليا باستخدام خواريزمية LZMA
http://www.rg-software.de/files/SevenZipVCL_074a.zip
الموقع http://www.rg-software.de/rg/

والسلام عليكم

علي
01-06-2009, 04:27 PM
شكرا لك أخي شيء رائع وفقك الله

MjIrIm
01-06-2009, 10:52 PM
في البداية السلام عليكم


واصل العمل عليه أخي kachwahed
عمل و مجهود طيب

كملاحظة اضافة لقول الأخ الفاضل DeltaAziz
اخر التحديثات هي خوارزمية LZMA2
وهي فعالة جدا باعتماد بعض الاحصائيات الأخيرة

على فكرة أخي العزيز DeltaAziz
أين وصل معك mPack
هل هناك من جديد في تحديثاته
امل ذلك
:D

بارك الله فيكم
و السلام.

mohamed-maint
05-04-2010, 05:04 PM
السلام عليكم ورحمة الله وبركاته
شكرا لك اخ kachwahed على المعلومات الرائعة

ابن فلسطين
17-06-2010, 04:01 PM
السلام عليكم ورحمة الله وبركاته
موضوع رائع وثري بالمعلومات المهمة بخصوص خوارزمية الضغط zip وشرح مفصل جميل جدا..متمنيا المزيد من الشرح عن خوارزميات اخرى بمثل هذا التفصيل الجميل في مواضيع مقبلة.
لك مني كل ود واحترام يا عزيزي.

اخوكم ابن فلسطين.

ابومهند
26-06-2010, 11:22 PM
بارك الله فيك وجزاك الله خير.

abdelmalek
07-08-2010, 07:53 AM
السلام عليكم ورحمة الله وبركاته

جميل انت يا kachwahed

بارك الله فيك وفي والديك

رايت الحب و التقدير اهديها اليك

واصل الى الامام

بتوفيق الى اعضاء منتدنا الاكرام

mohmd
20-08-2010, 04:03 AM
بارك الله فيك

kachwahed
17-03-2011, 08:10 PM
من المكتبة Synopse تجميع خوارزميات الضغط في مكتبة وحيدة pascal خام!
مرفق SynLZ و SynZip دون استخدام ملحقات (obj, dll) خارجية، للاستخدام:
http://synopse.info/forum/viewtopic.php?pid=163

saozar ameen
01-11-2011, 11:14 PM
مشكور أخي والله يعطيك الف عافية