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:
algoritma yang digunakan .... algoritmanya apa gan ????
mohon balasannya gan.......
sedot langsung
Kalau ambil folder gmn gan?
Posting Komentar