أية وظائف لإنشاء ملف مضغوط من الدليل / الملف على ويندوز فيستا مع دلفي 2009

StackOverflow https://stackoverflow.com/questions/1634258

سؤال

وأنا أبحث عن طريقة بسيطة لفتح سوستة وضغط مع دلفي. لقد بدا بالفعل في المكونات في دلفي توري: http://www.torry.net /pages.php؟s=99 . ويبدو انهم جميعا كما لو أنهم لن يحقق ما أريد إلا عدد قليل من العيوب لاستخدامها هو أن أيا منها لا يعمل في دلفي 2009 و معقدة جدا مما يجعل من الصعب بالنسبة لي أن ميناء لهم دلفي عام 2009. وعلاوة على ذلك، وثائق حول منها نادرة، وأيضا على الأقل بالنسبة لي. أحتاج وظيفة فتح سوستة الأساسية دون النفقات العامة من استخدام مجموعة من دلس. سعيي يؤدي بي إلى FSCTL_SET_COMPRESSION التي أرى أنها قد حسمت مسألة ولكن للأسف هذا أيضا لم ينجح. بدا CREATEFILE واعدة، حتى حاولت انها اسفرت عن نفس النتيجة كما FSCTL_SET ... وأنا أعلم أن هناك بعض محدودة القدرة على فتح سوستة الأم على النوافذ. على سبيل المثال إذا كان أحد النقرات الحق ملف أو مجلد ويختار -> إرسال إلى -> مجلد مضغوط، يتم إنشاء أرشيف مضغوط بذكاء. اعتقد انه اذا كنت قادرا على الوصول إلى تلك القدرة من دلفي سيكون حلا. على قضية جانبية، هل لينكس لديها الخاصة وظائفها فتح سوستة الأم التي يمكن استخدامها مشابهة لهذه؟

هل كانت مفيدة؟

المحلول

Abbrevia ممتازة

وTurboPower ويمكن تحميلها D2009 هنا ، هو دعم D2010 جارية والمتاحة بالفعل في إس وفقا لمنتداهم .

وAbbrevia تستخدم ليكون التجاري (لل$$$) المنتج، وهو ما يعني أن وثائق كاملة تماما.

نصائح أخرى

وأنا استخدم Zipforge. لماذا هناك مشاكل ترقية هذه إلى D2009؟ هل لأن من 64BIT ؟؟

وهنا بعض التعليمات البرمجية

procedure ZipIt;
var
  Archiver: TZipForge;
  FileName: String;
begin
    try
      Archiver:= TZipForge.create(self);
      with Archiver do begin
        FileName := 'c:\temp\myzip.zip';

        // Create a new archive file
        OpenArchive(fmCreate);

        // Set path to folder with some text files to BaseDir
        BaseDir := 'c:\temp\';

        // Add all files and directories from 'C:\SOURCE_FOLDER' to the archive
        AddFiles('myfiletozip.txt');


        // Close the archive
        CloseArchive;
      end;
    finally
      Archiver.Free;
    end;
end;

إذا كنت يمكن أن "تفعل" COM من دلفي، ثم يمكنك الاستفادة من القدرة البريدي المدمج في قذيفة ويندوز. فهو يوفر لك القدرة الأساسية جيدة.

في VBScript يبدو مثل هذا:

Sub CreateZip(pathToZipFile, dirToZip)

    WScript.Echo "Creating zip  (" & pathToZipFile & ") from folder (" & dirToZip & ")"

    Dim fso
    Set fso= Wscript.CreateObject("Scripting.FileSystemObject")

    If fso.FileExists(pathToZipFile) Then
        WScript.Echo "That zip file already exists - deleting it."
        fso.DeleteFile pathToZipFile
    End If

    If Not fso.FolderExists(dirToZip) Then
        WScript.Echo "The directory to zip does not exist."
        Exit Sub
    End If

    NewZip pathToZipFile

    dim sa
    set sa = CreateObject("Shell.Application")

    Dim zip
    Set zip = sa.NameSpace(pathToZipFile)

    WScript.Echo "opening dir  (" & dirToZip & ")"

    Dim d
    Set d = sa.NameSpace(dirToZip)


    For Each s In d.items
        WScript.Echo  s
    Next

    ' http://msdn.microsoft.com/en-us/library/bb787866(VS.85).aspx
    ' ===============================================================
    ' 4 = do not display a progress box
    ' 16 = Respond with "Yes to All" for any dialog box that is displayed.
    ' 128 = Perform the operation on files only if a wildcard file name (*.*) is specified. 
    ' 256 = Display a progress dialog box but do not show the file names.
    ' 2048 = Version 4.71. Do not copy the security attributes of the file.
    ' 4096 = Only operate in the local directory. Don't operate recursively into subdirectories.

    WScript.Echo "copying files..."

    zip.CopyHere d.items, 4

    ' wait until finished
    sLoop = 0
    Do Until d.Items.Count <= zip.Items.Count
        Wscript.Sleep(1000)
    Loop

End Sub

وCOM allws لك أيضا استخدام DotNetZip ، الذي هو تنزيل مجانا، التي لا الكود البريدية تشفير كلمة المرور، امتدت ZIP64 والمحفوظات استخراج الذاتي، يونيكود، الكود البريدية، وغيرها من الأمور.

وأنا شخصيا استخدام VCL الرمز الذي يمتد مع D2009 D2010 وعلى ما يرام تماما. يكلف $ 120 في وقت هذا المنصب ولكن بسيط جدا ومرنة والأهم من ذلك كله FAST.

وإلقاء نظرة على VCLZIP و تحميل درب إذا كنت مهتما

ورمز الحكمة:

VCLZip1.ZipName := ‘myfiles.zip’;
VCLZip1.FilesList.add(‘c:\mydirectory\*.*’);
VCLZip1.Zip;

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

وهذا الأمل هو بعض المساعدة.

وRE

ونلقي نظرة على هذه مفتوحة المصدر SynZip حدة . انها أسرع لإزالة الضغط من الوحدة الافتراضية التي يتم شحنها مع دلفي، وأنه سيتم إنشاء إكس أصغر (يتم إنشاء الجداول CRC عند بدء التشغيل).

وليس هناك حاجة إلى دلل الخارجي. يعمل من دلفي 6 حتى XE. لا مشكلة مع إصدار Unicode من دلفي. كل ما في وحدة واحدة.

ولقد قدمت بعض التغييرات للتعامل مع أسماء الملفات يونيكود داخل محتوى البريدي، وليس فقط محارف فوز العنسي ولكن أي حرف يونيكود. ردود الفعل هو موضع ترحيب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top