Tips-trick|Software|

Download Software Gratis

Translate

Jumat, 04 Mei 2012

Membuat Tool Kompresi File Pake Delphi + ZLIB


Dari laporan WordPress, beberapa pengunjung blog saya melakukan pencarian ‘source code kompresi file dengan Delphi’. Kelanjutannya, kini saya menulis sebuah tutorial tentang kompresi file dengan Delphi. Tutorial ini menggunakan Delphi 6 dan sebuah library open source ZLIB untuk implementasi kompresi menggunakan metode ZLIB.
Instalasi ZLIB Compression Library
Langkah pertama, silahkan Anda download ZLIB Compression Library bersama source code aplikasi yang saya demokan ini di akhir tulisan ini. Kemudian ekstraklah ke sebuah folder, misalnya di C:\ZlibEx. Selanjutnya tambahkan folder C:\ZlibEx ke Library Path Delphi melalui menu Tools>Environment Options. Pada dialog yang muncul, klik tab Library, dan klik tombol elipsis di samping kanan combobox Library path. Dialog Directories akan muncul.
Klik tombol elipsis yang dilingkari, pilih folder C:\ZlibEx di mana Anda meletakkan ZLIB Compression Library hasil ekstraksi. Tombol Add akan menjadi aktif. Klik Tombol Add, kemudian klik OK. Kembali ke dialog Environment Options. Klik OK lagi.
Mengimplementasikan ZLIB dalam kode
Kita lanjut dengan pembuatan aplikasi kompresi file.
1.    Buat sebuah aplikasi baru. Simpanlah file-file aplikasi dalam satu folder.
2.    Pada form utama, tambahkan dua buah editbox, dua buah label dan 3 buah button. Tambahkan juga sebuah OpenDialog dan sebuah SaveDialog.
Sebagai perbandingan, berikut rancangan form saya.
3.    Pindah ke kode (F12). Untuk menggunakan ZLIB, Anda harus menambahkan unit ZlibEx.pas ke klausa uses.
implementation
{$R *.dfm}

uses ZlibEX;
4.    Kini kita masukkan kode untuk memilih file yang akan dikompres dan memasukkannya ke Edit1. Demikian juga dengan file target di mana hasil kompresi akan disimpan.
procedure TFMain.BitBtn1Click(Sender: TObject);
begin
if opendialog1.Execute then
Edit1.Text:=opendialog1.FileName;
end;

procedure TFMain.BitBtn2Click(Sender: TObject);
begin
if Savedialog1.Execute then
Edit2.Text:=SaveDialog1.FileName;
end;
5.    Terakhir, kita buat kode untuk mengompres file sumber dan menyimpan hasilnya ke file target.
procedure TFMain.SpeedButton1Click(Sender: TObject);
var
F1: TFileStream;
sz1, sz2: Integer;
p1, p2: Pointer;
ratio: real;
begin
//baca file sumber ke memori
f1:=TFileStream.Create(edit1.Text, fmOpenRead);
sz1:=f1.Size;
Getmem(p1,sz1);
f1.Seek(0, soFromBeginning);
f1.Read(p1^, sz1);
f1.Free;
//mulai dengan kompresi
p2:=nil;
ZCompress(p1, sz1, p2, sz2, zcMax);
Freemem(P1, sz1);
//Simpan hasil kompresi ke File target
F1:=TFileStream.Create(Edit2.Text, fmCreate);
f1.Write(p2^, sz2);
f1.Free;
FreeMem(p2, sz2);
//hitung perbandingan ukuran file
ratio:= ((sz1 - sz2)/sz1) * 100;
lblResult.Caption:=
'Ukuran File Sumber:'#13+IntToStr(sz1)+'Bytes.'#13+
'Ukuran File Target (hasil kompresi):'#13+IntToStr(sz2)+'Bytes.'#13+
'Rasio Kompresi:'#13+FormatFloat('0.00', ratio)+'%.'#13#13+
'Kompresi selesai.';
end;
6.    Save projek Anda dan jalankan dengan menekan F9. Jika semuanya beres, tampilan aplikasi Anda akan seperti ini:
Dan berikut, snapshot ketika kompresi telah selesai.
Kode Selengkapnya
unit umain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;

type
TFMain = class(TForm)
Shape1: TShape;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
SpeedButton1: TSpeedButton;
GroupBox1: TGroupBox;
lblResult: TLabel;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Label5: TLabel;
Label6: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure Label6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FMain: TFMain;

implementation

{$R *.dfm}

uses ZlibEX, ShellAPI;

procedure TFMain.BitBtn1Click(Sender: TObject);
begin
if opendialog1.Execute then
Edit1.Text:=opendialog1.FileName;
end;

procedure TFMain.BitBtn2Click(Sender: TObject);
begin
if Savedialog1.Execute then
Edit2.Text:=SaveDialog1.FileName;
end;

procedure TFMain.Edit1Change(Sender: TObject);
begin
SpeedButton1.Enabled:=FileExists(edit1.Text);
if SpeedButton1.Enabled then
Edit2.Text:=ChangeFileExt(edit1.Text, '.zlib')
else
Edit2.Text:='Pilih Target File Hasil kompresi...';
end;

procedure TFMain.FormCreate(Sender: TObject);
begin
Edit1.Text:='Pilih File Yang Akan Dikompress...';
end;

procedure TFMain.SpeedButton1Click(Sender: TObject);
var
F1: TFileStream;
sz1, sz2: Integer;
p1, p2: Pointer;
ratio: real;
begin
//baca file sumber ke memori
f1:=TFileStream.Create(edit1.Text, fmOpenRead);
sz1:=f1.Size;
Getmem(p1,sz1);
f1.Seek(0, soFromBeginning);
f1.Read(p1^, sz1);
f1.Free;
//mulai dengan kompresi
p2:=nil;
ZCompress(p1, sz1, p2, sz2, zcMax);
Freemem(P1, sz1);
//Simpan hasil kompresi ke File target
F1:=TFileStream.Create(Edit2.Text, fmCreate);
f1.Write(p2^, sz2);
f1.Free;
FreeMem(p2, sz2);
//hitung perbandingan ukuran file
ratio:= ((sz1 - sz2)/sz1) * 100;
lblResult.Caption:=
'Ukuran File Sumber:'#13+IntToStr(sz1)+'Bytes.'#13+
'Ukuran File Target (hasil kompresi):'#13+IntToStr(sz2)+'Bytes.'#13+
'Rasio Kompresi:'#13+FormatFloat('0.00', ratio)+'%.'#13#13+
'Kompresi selesai.';
end;

procedure TFMain.Label6Click(Sender: TObject);
begin
ShellExecute(handle, 'open', PChar(TLabel(Sender).caption),nil, nil, SW_SHOW)
end;

end.

Download
Download contoh aplikasi 332KB [ sudah menyertakan ZLIB Compression Library]
Download Binary – 230KB
Download Source – 60KB
Download Binary – 230KB
Download Source – 60KB
Dan seperti biasa, Anda harus mengubah ekstensi file hasil download dari .PPT ke .ZIP. Pastikan Anda terhindar dari ancaman virus, trojan dan sebagainya. Silahkan pindai dulu file-file hasil download dengan antivirus sebelum dijalankan.

Tidak ada komentar:

Posting Komentar

DLL yang disiapkan Jika Cheat tidak tampil

d3dx43.dll (Folder PB)
msvcp100.dll (Folder PB)
msvcr100.dll (Folder PB)
d3dx9_42.dll (system32)
msvcp100d.dll (system32)
msvcr100d.dll (system32)
Atau kalian ingin yang sudah dipaketkan,
[-] DLL Folder PB <<< Jadi simpan dll yang ada di .rar ke dalam Folder PB mu.
[-] DLL System32 <<< Jadi simpan dll yang ada di .rar ke
  • C:\Windows\System (Windows 95/98/Me)
  • C:\WINNT\System32 (Windows NT/2000)
  • C:\Windows\System32 (Windows XP, Vista, 7)
Jika kamu menggunakan Windows versi 64-bit , kamu harus tempatkan .dll nya di C:\Windows\SysWOW64\
Apabila kalian masih tidak mengerti silahkan tinggal komentar kalian di bawah ini.
Terima Kasih ^_^
Download Multy Injector KLik Disini (untuk lost saga)
Download Multy Injector + processes KLik disini (untuk Geme Ofline)

Daftar isi Blog

Widget By: [Akhmad Andryan]

Update status FB Via BB - I-pade

http://hadi.web.id/fb.html http://hadi.web.id/facebook.html