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.
0 komentar:
Post a Comment