Rabu, 27 Juli 2011

Cara Membuat Aplikasi HJ Split di Delphi 7

Selamat petang agan-agan !! Waktu yang tepat rasanya untuk posting.Setelah sekian abad vacum , akhirnya bisa juga ngasih tutorial mengenai Cara Membuat Aplikasi HJ Split di Delphi 7.Tau kan HJSplit itu apa !?Yuph benar sekali , HJSplit adalah aplikasi untuk memecah file menjadi beberapa file dengan ukuran yang lebih kecil.Fungsinya !? Kalau anda seperti saya (yang suka download film) tentu lebih menyenangkan bila mendownload file dengan ukuran lebih kecil walaupun jumlahnya lebih banyak.Lalu , bisakah kita membuat software tersebut
dengan Delphi 7 !? Tentu saja bisa!Ayo ikutin langkah-langkahnya.
Hal yang krusial dari pembuatan aplikasi ini ialah , proses pemecahan/split dan penyatuan/join.Disini saya akan membuat dua function.Masing-masing untuk proses split dan satu lagi proses join.Ayo simak.Pertama kita akan membuat function splitFile.Yaitu function untuk memecah file.Ketikan kode berikut setelah {$R *.dfm}

//function split
function SplitFile(namaFile : TFileName; ukuranFile : Integer; ProgressBar : TsGauge) : Boolean; //anda bisa mengganti TsGauge dengan TProgressBar
var
  i : Word;
  fs, sStream: TFileStream;   //variabel yang dibutuhkan
  namaFileSplit,ext: String;
begin
  ProgressBar.Progress := 0; //mengeset nilai progress bar  0 , bila menggunakan TProgressBar , gunakan properties posistion
  fs := TFileStream.Create(namaFile, fmOpenRead or fmShareDenyWrite); //membuat fileStream baru lalu di assign ke fs
  try
    for i := 1 to Trunc(fs.Size / ukuranFile) + 1 do
    begin
      ext:=ExtractFileExt(namaFile); //mendapatkan extensi sebelum di split
      namaFileSplit := ChangeFileExt(namaFile+ext,'.'+FormatFloat('000', i)); //mengganti extensi terurut angka
      sStream := TFileStream.Create(namaFileSplit, fmCreate or fmShareExclusive);
      try
        if fs.Size - fs.Position < ukuranFile then
          ukuranFile := fs.Size - fs.Position;
        sStream.CopyFrom(fs, ukuranFile);
        ProgressBar.Progress := Round((fs.Position / fs.Size) * 100);//menggerakan progress bar
      finally
        sStream.Free; //membebaskan stream
      end;
    end;
  finally
    fs.Free;//membebaskan fs/stream
  end;
end;

Untuk memanggil function tersebut misal dengan menekan tombol , ketikan kode berikut

procedure TForm1.Button1Click(Sender: TObject);
begin
  SplitFile(FileYangAkanDiSplit,UkuranSplitPerFile, ProgressBar1);
//untuk ukuranSplitPerFile bertipe integer dan ukurannya bytes,jadi bila di isi 1000000 bytes sama dengan 1 MB
end;

Selanjutnya kita akan membuat function untuk join file yang sudah di split tadi.Ketikan kode berikut di bawah function splitFile

//function join file
function joinFiles(namaFile, joinNamaFile : TFileName) : Boolean;
var
  i: integer;
  fs, sStream: TFileStream;
  filenameOrg: String;
begin
  i := 1;
  fs := TFileStream.Create(joinNamaFile, fmCreate or fmShareExclusive);
  try
    while FileExists(namaFile) do
    begin
      sStream := TFileStream.Create(namaFile, fmOpenRead or fmShareDenyWrite);
      try
        fs.CopyFrom(sStream, 0);
      finally
        sStream.Free;
      end;
      Inc(i);
      namaFile := ChangeFileExt(namaFile, '.'+ FormatFloat('000', i));
    end;
  finally
    fs.Free;
  end;
end;

Untuk memanggil fungsi tersebut misal dengan menekan tombol , ketikan kode berikut

procedure TForm1.Button2Click(Sender: TObject);
begin
joinFiles(fileYangAkanDiJoin,outputFileYangTelahDiJoin);
end;
Yuph , cukup mudah bukan.Atau malah bingung !?lol.Beruntunglah kalau anda bingung , karena saya sudah membuat contoh program tersebut beserta source codenya sehingga mudah digunakan.Dan tentunya membantu  agan-agan untuk memahaminya.Perlu di ketahui , saya membuat program ini dengan tambahan component Alpha Lite.Yaitu sejenis skins serta component pihak ketiga.Jangan khawatir , semua file yang dibutuhkan untuk membuat program tersebut telah saya siapkan dan bisa agan download DISINI.Cukup deh tutorialnya sampai disini.Semoga bermanfaat ya.

Simak Juga Tutorial Lainnya:

3 komentar:

Anonim mengatakan...

gan bagaimana algoritma hjsplit dengan visual basic..
tks

Anonim mengatakan...

mas ada aplikasi cuti karyawan gak...???

selamat belanja.com mengatakan...

sedot lagi gan :D

Posting Komentar