Senin, 01 Agustus 2011

Cara Membuat Aplikasi WinRar di Delphi 7

Selamat siang agan-agan.Pada puasa gak !? Hehe.Untungnya siang ini cuaca agak mendung , jadinya tidak terlalu kehausan.Biarpun puasa , aktifitas coding , blogging dan learning tetep harus jalan.Pada postingan kali ini , saya akan memberikan tutorial Cara Membuat Aplikasi WinRar di Delphi 7.Udah tau dong WinRar itu apa !? Yups , aplikasi yang berfungsi untuk mengkompres beberapa file menjadi satu , dan tentu mendekompresnya lagi.Berguna banget kalau kita mau mengkopi file yang berjumlah banyak , agar lebih ringkas dan terlihat rapi.Lalu tunggu apa lagi !? Buka borland Delphi 7 anda dan mari kita berguling (maksudnya rolling !! haha)
Yang paling esensial dari program yang akan kita buat ini , adalah 2 buah procedure.Masing-masing untuk kompres dan dekompres file.Pertama , kita akan membuat procedure untuk kompres terlebih dahulu.Ketikan kode berikut setelah {$R *.dfm}

procedure kompresFile(Files : TStrings; const namaFile : String);
var
  fileMasuk, fileKeluar, tmpFile : TFileStream;
  kompres : TCompressionStream;
  i,l : Integer;
  s : String;

begin
  if Files.Count > 0 then
  begin
    fileKeluar := TFileStream.Create(namaFile,fmCreate);
    try
      { jumlah file yang akan di kompres }
      l := Files.Count;
      fileKeluar.Write(l,SizeOf(l));
      for i := 0 to Files.Count-1 do
      begin
        fileMasuk := TFileStream.Create(Files[i],fmOpenRead);
        try
          { nama asli file }
          s := ExtractFilename(Files[i]);
          l := Length(s);
          fileKeluar.Write(l,SizeOf(l));
          fileKeluar.Write(s[1],l);
          { ukuran asli file }
          l := fileMasuk.Size;
          fileKeluar.Write(l,SizeOf(l));
          { kompress dan simpan file temporari}
          tmpFile := TFileStream.Create('tmp',fmCreate);
          kompres := TCompressionStream.Create(clMax,tmpfile);
          try
            kompres.CopyFrom(fileMasuk,l);
          finally
            kompres.Free;
            tmpFile.Free;
          end;
          { menambahkan file terkompresi ke file tujuan }
          tmpFile := TFileStream.Create('tmp',fmOpenRead);
          try
            fileKeluar.CopyFrom(tmpFile,0);
          finally
            tmpFile.Free;
          end;
        finally
          fileMasuk.Free;
        end;
      end;
    finally
      fileKeluar.Free;
    end;
    DeleteFile('tmp');
  end;
end;

Perhatikan bahwa variabel files bertipe TString.Artinya , kita bisa menambahkan beberapa file sekaligus dan menjadikannya satu file terkompresi.Untuk memanggil procedure diatas misal dengan menekan tombol , gunakan kode berikut

procedure TForm1.button1Click(Sender: TObject);
begin
  kompresFile(namaBeberapaFileYangAkanDiKompres , namaOutputFileTerkompres);
end;

Selanjutnya adalah , kita akan membuat procedure untuk dekompres file yang terkompres sebelumnya.Ketikan procedure di bawah ini setelah procedure kompresFile

procedure dekompresFile(const namaFile, folderTujuan : String);
var
  tujuan,s : String;
  dekompres : TDecompressionStream;
  fileMasuk, fileKeluar : TFilestream;
  i,l,c : Integer;
begin

  tujuan := IncludeTrailingPathDelimiter(folderTujuan);

  fileMasuk := TFileStream.Create(namaFile,fmOpenRead);
  try
    { number of files }
    fileMasuk.Read(c,SizeOf(c));
    for i := 1 to c do
    begin
      { membaca nama file }
      fileMasuk.Read(l,SizeOf(l));
      SetLength(s,l);
      fileMasuk.Read(s[1],l);
      { membaca ukuran file }
      fileMasuk.Read(l,SizeOf(l));
      { dekompres file dan menyimpannya }
      s := tujuan+s; //memasukan tujuan pathnya
      fileKeluar := TFileStream.Create(s,fmCreate);
      dekompres := TDecompressionStream.Create(fileMasuk);
      try
        fileKeluar.CopyFrom(dekompres,l);
      finally
        fileKeluar.Free;
        dekompres.Free;
      end;
    end;
  finally
    fileMasuk.Free;
  end;
end;

Dan untuk memanggil procedure diatas misal dengan menekan tombol , ketikan kode berikut

procedure TForm1.button1Click(Sender: TObject);
begin
  dekompresFile(fileYangAkanDiDekompres,folderTujuan);
end;

Teettooooott !! Beres deh.Apanya yang beres yu !? Dari tadi kan ente gak nyuruh masukin component apapun !! Emang sih , hehe .. Tapi tenang , saya sudah membuat contoh program berikut source codenya yang bisa agan-agan download DISINI.Silahkan agan modifikasi sesuka hati , yang terpenting dari program tersebut ya 2 procedure di atas tadi.Implementasinya dalam program , tergantung selera anda dong !? hehe..Sekian postingan kali ini , semoga bermanfaat.

Simak Juga Tutorial Lainnya:

4 komentar:

Anonim mengatakan...

algoritma yang digunakan .... algoritmanya apa gan ????

Anonim mengatakan...

mohon balasannya gan.......

selamat belanja.com mengatakan...

sedot langsung

Anonim mengatakan...

Kalau ambil folder gmn gan?

Posting Komentar