Herhangi dolu bir klasörü Zipleme nasıl oluyor?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphiibo
Üye
Mesajlar: 72
Kayıt: 27 Eki 2005 04:55
Konum: istanbul
İletişim:

Herhangi dolu bir klasörü Zipleme nasıl oluyor?

Mesaj gönderen delphiibo »

:roll: İyi günler ve iyi çalışmalar. Ben herhangi bir klasörü .ziplemek istiyorum. Ama bir türlü yapamadım. Normal dosyaları .zipleyebiliyorum. Aşağıdaki kodla. Ama klasörü zipleyemiyorum. Klasör içinde alt klasörlerde olacak. Şimdiden yardım eden arkadaşlara bol bol teşekkürler. :roll:

Kod: Tümünü seç

Function TAyarunit.CompressFile(FileName,CompressedFileName:String): Byte;

Var
  InFile,OutFile:TFileStream;
  Comp:TCompressionStream;

Begin
  Try
    InFile:=TFileStream.Create(FileName,fmOpenRead);

  Except

    Result:=01;
    Exit;

  End;
  Try
    OutFile:=TFileStream.Create(CompressedFileName,
    fmCreate);

  Except

    Result:=02;
    InFile.Free;

    Exit;
  End;

  Try
    Comp:=TCompressionStream.Create(clMax,OutFile);


  Except

    Result:=03;
    InFile.Free;
    OutFile.Free;

    Exit;
  End;
  Result:=00;
  Try

    Comp.CopyFrom(InFile,0);
  Except
    Result:=04;
  End;
  Comp.Free;
  InFile.Free;

  OutFile.Free;
End;



Function TAyarunit.DecompressFile(FileName,DeCompressedFileName:String):Byte;


Var
  InFile,OutFile:TFileStream;
  DeComp:TDeCompressionStream;
  Buffer:Array[0..4095] Of Byte;
  Count:Integer;

Begin
  Try
    InFile:=TFileStream.Create(FileName,fmOpenRead);

  Except
    Result:=01;
    Exit;

  End;
  Try
    OutFile:=TFileStream.Create(DeCompressedFileName,
    fmCreate);
  Except
    Result:=02;
    InFile.Free;
    Exit;
  End;

  Try
    DeComp:=TDeCompressionStream.Create(InFile);
  Except
    Result:=03;
    InFile.Free;

    OutFile.Free;

    Exit;
  End;
  Result:=00;

  Repeat
    Try
      Count:= DeComp.Read(Buffer,SizeOf(Buffer));
      If Count<>
    0 Then OutFile.WriteBuffer(Buffer,
    Count);
    Except
      Result:=04;
      Count:=0;
    End;

  Until Count=0;
  DeComp.Free;
  InFile.Free;
  OutFile.Free;

End;
Onun tek dostu Allah
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@delphiibo yazdı:Ben herhangi bir klasörü .ziplemek istiyorum.
- Bu methodun bu hali ile WinZIP uyumlu bir sıkıştırma yapmış olmazsın. Öncelikle bunu bilmen gerekir. :idea:

- Bir dosyayı sıkıştırmak için Uses ZLIB deyip bu yazdığın tekniği kullanabilirsin ama kendi paket dosya biçimini tasarlaman gerekir. Şöyle ifade edeyim.

- Bir dosya kuru kuruya sıkıştırıp kaydetmek istersen bu yazmış olduğun procedure yeterlidir. Birden fazla dosya sıkıştırıp tek dosya haline getirmek istersen her dosya için ön hazırlık yaparak, geri dönüşüm (açma) işlemi için dosya ile ilgili derlediğin en az iki bilgiyi (DosyaAdı ve Yolu ile Uzunluğu) paket içerisinde barındırman gerekir.

- Bunu yapmak istiyorsan söyle anlatalım. Diğer türlü Abbrevia bileşen paketini (opensource ve freeware'dir) kullanarak bunu kısa yoldan yaptırabilirsin. Forumda bununla ilgili açıklama vardı.

Ref : http://www.delphiturkiye.com/index.php? ... m#Abbrevia

Not : Normalde üçündü parti bileşen reklamı yapmam. Freeware ve açık kaynak kodlu olduğundan bu seferlik biraz esneklik gösterdim. Bu pakette kodlar kontrolün altında. İşin görülsün.
Resim
Resim ....Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Bir başka ücretsiz bileşen de ben önereyim.

ZipMaster bileşen paketi.

indirmek için = http://v179.delphizip.org/files/zm179setup0802.exe
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla