Di sini saya tempatkan berbagai contoh program yang pernah saya buat dengan Delphi. Setelah didownload, gantlah nama file *.ppt ke *.zip.

NetSend v2

NetSend adalah implementasi fungsi API “NetMessageBufferSend” dari NETAPI32.DLL, untuk mengirim pesan antar Windows (2000 ke atas). Implementasi dengan pure API dan Multithread.
Ukuran : 14KB
EXE : included
Source : included
Versi Delphi : 3-7, BDS 2006

Encryptor

Sebuah contoh enkripsi file dengan Wizard.
Ukuran : 608KB
EXE : included
Source : included
Versi Delphi : 3-7, BDS 2006

Requires uilib.dll, this library has been included in download package.

Kamus 1.0

Contoh kamus Indonesia-Inggris [ vice-versa ]
Ukuran : 2.14MB
EXE : included
Source : N/A
Versi Delphi : 8, 7, BDS 2006
Dictionary is translation from TransTool.

uidll

Uilib DLL, sebuah library yang dibuat dengan delphi untuk menampilkan dialog yang lebih menarik dari standar Windows.
Ukuran : 553KB
EXE : included
Source : included
Versi Delphi : 3-7, BDS 2006

Required TXiButton Included, this library has been included in download package.
Download it from this blog’s archieves. Use search tool up-righted there, with keyword XiButton, to shortcatch this library.

85 thoughts on “Contoh Kode

  1. mas mo nanya nehh…boleh ya.heeee
    gni mas..saya kan mo buat program multi user dengan delphi.
    nha disini saya ngunain koneksi ado. setiap saya mo ngedit record yg sama secara bersamaan program eror. gmn cara nanganinya ya? mhon bantuannya….

    • Kalau setahu saya sih, koneksi ado digunakan untuk mengakses Ms.Access, dan biasanya Ms.Access tidak mendukung program multiuser kalaupun bisa, Ms.Access jadi kurang stabil, kenapa anda tidak menggunakan MySQL Server aja, disamping gratis, koneksinya mudah sekali, misalnya menggunakan Zeos, Scibit, DirectMySQL, dbExpress, dan semua komponen tersebut mendukung program multi user.

  2. program yang mas buat menjadi inspirasi buat saya untuk bereksperimen labih dalam untuk mengenal delphi, thank’s
    buat ilmunya. semoga menjadi ilmu yang bisa bermanfaat dan dimanfaatkan orang lain

  3. sample nya ok punya
    tapi mas saya mohon conto cara pemanggilan file html kedalam form tanpa load dan open file seperti menu awal turbo delphi and saya menggunakan turbo delphi.

    • A. Menggunakan TWebBrowser:
      Tetap harus diload.
      Misalnya dengan cara memasukkannya sebagai resource saat compile time (dengan directive {$R }), tetap saja harus diekstrak ke harddisk dan diload.
      B. Menggunakan mekanisme lain:
      Tergantung dari komponen yang digunakan. Contoh pada D6 & D7, untuk aplikasi CLX-based tersedia komponen untuk memparsing HTML dan menampilkannya seperti browser.

  4. Assalamu’alaikum.wr.wb.
    Selamat pagi dan salam kenal buat semuanya….
    saya sedang ngerjain TA tentang aplikasi belajar ILMU TAJWID + PENGENAL SUARA….
    saya kesulitan dalam beberapa hal :
    1. Bagaimana cara menginputkan suara kita ke dalam program (pake delphi) lewat microphone (catatan : saya sudah pernah nyoba yang di artikel http://delphi-id.org/dpr/module-News-display-sid-155.pas tapi tidak berhasil)
    2. bagaimana cara menampilkan histogramnya seperti program ROSETTASTONE / TELLME MORE
    3. bagaimana cara mencocokkan / membandingkan tingkat kesamaan dari suara yang diinputkan tadi dengan suara yang sudah ada di database.
    4. terima kasih sebelumnya kepada temen-temen delphier yang mo ngebantu….
    5. email saya di addin2digit@gmail.com

    • Anda bisa menggunakan unit printers.
      Tambahkan unit printers ke klausa uses.

      uses ..., printers;
      //......................
      procedure TForm1.Button1Click(Sender: TObject);
      begin
        Printer.BeginDoc;
        Printer.Canvas.TextOut(10, 10, 'Baris 1');
        Printer.Canvas.TextOut(10, 20, 'Baris 2');
        //.................
        Printer.NewPage;
        //halaman 2.
        Printer.Canvas.TextOut(10, 10,'Baris 1 - Hal. 2');
        Printer.EndDoc;
      end;
      
  5. permisi… mau nanya nich… bagaimana ya caranya membuat pencocokan pola suara dengan menggunakan delphi…,,,, {source code, please)…

    biasanya dapat dibuat menggunakan matlab, tapi saya disuruh membuatnya menggunakan delphi kira2 bisa tidak ya???
    dan apakah matlab bisa digabungkan dengan delphi???

  6. Mas, mau nanya nich sekarang saya lg buat program pake delphi tentang matrik pakai komponen stringgrid. Yang jadi permasalahan ketika saya mau mindah data dari stringgrid ke variabel arraynya pasti error dan dikatakan kalau nilai integernya tidak valid. Gmn ya seharusnya?

  7. Kalo arraynya bertipe integer, nilai dari stringgrid musti diubah ke integer juga: array[1][3] = StrToInt(Stringgrid1.Cells[1,3]);

    Bila masih tidak jalan, berarti ada faktor lain. Anda bisa mengirimkan source codenya via e-mail saya (jokorb[at]yahoo[dot]co[dot]uk) biar bisa kita diskusikan lebih jelas.

  8. mas, mau nanya2 nich…
    begini mas, bagaimana sich cara uji aplikasi client-server (ada ga softwarenya)
    kan aq buat aplikasi client-server pakai komponen zeos, cuma ga tau cara ujinya..
    itupun buat aplikasinya dibantu.. hehehehe
    maklum mas, kagak mudeng banyak soal coding..
    trims.. maaf kal pertanyaannya kurang jelas..

  9. Assalamualaikum wr.wb,pak dosen.saya mau nanya,sya buat program Toko Baju.. Tapi Atahan Form Dpr dsbg.Kehapus Coz windowsnya baru aja diformat di pc saya.Tpi Program Jadinya saya udah ada.untungnya di laptop.buat tugas akhir kuliah.permasalahannya saya,sewaktu saya msuk form barang,dan pilih cetak laporan di ujung atas kiri tidak tercantum nama misal (UNIKOM …alamat Jl. ????) maksudnya keterangan identitas.Pertanyyan sya bagaimana cara merubahnya pak?.. klo buat lagi memakan waktu lama.mhon pencerahannya

  10. Ktinggalan pak File nya Berformat Shanny acces,terdiri dari Format (PX,XGO,YGO)trus Shanny menu A & B(PX,FAM,TV),ShannyUser (MB.PX,XGO) Nuhun Pak.Basok Lusa Dikumpulin .. mohon pencerahanya pak

  11. gini pak maksudnya ,, sewaktu cetak faktur / cetak laporan, di laporan dan fakturnya,, tidak ada keterangan nama perusahaan dan alamatnya… nah pertanyyan saya pak,gimana cara merubah laporan itu agar tercantum nama perusahaan dan alamat perusahaan ,sedangkan program sudah terbentuk instaler

  12. Maksudnya gini pak,aku pengen ganti skin tampilan formnya.+misal nama exenya regard,dibuka tampilan di atas kiri form ya regard.. pertanyaanya gmna cara merubah nama form itu,MIsal regard jadi sanny,aku pakai resource tunner,tp ulik2 ga ktmu pak.. gmn caranya ya pak?

  13. pak nuhun aatas penjelasanya.tapi belum berhasil pak.. msh tetep aja Regard,,TForm Utama nya uda dganti captionnya.. di dalam
    RC DATA Ada : TForm Utama,Tform Lokasi Data,TForm Login Dialog dll
    Di TFORM Utama ADa : BsSkinPanel2,BsSkinPanel1,BsSkinData1 & 2,BsCompresedStoredSkin1&2,,
    jadi opini sya ga ngaruh pak walau di TFORM UTAMA Pada captionnya diganti..tetep aja Regard .. Mohon Solusinya Pak,atau sya kirim via email File Exe nya

    • Kemungkinan Captionnya bukan caption form, tapi caption komponen skin (BussinesSkinForm) yang ada di form tersebut. Atau, caption diatur saat runtime dengan perintah:

      FormUtama.Caption :='Regard';
      

      Bila ragu-ragu, coba kirimkan file EXE (beserta file-file pendukungnya agar bisa jalan), kami coba bantu. Soal berhasil atau tidak, kami gak bisa jamin. Tapi soal softwarenya kami jamin gak bakal disebarkan…🙂

  14. Ass.. Gini mas. Sy kan dah beli fingerprint uareu dan udh donlod one touch sdknya. Tapi mslhnya gimana nampilin gmbr hasil scannya ke Timage. Dstu ada event onComplete tpi sample hsil scnnya brtipe Idispatch. Mhon bntuannya ni mas Atw mas punya conth dasar capture n verify figrprin. Makasih sblmnya mas..

    • @Amir:
      DigitalPersona memang bisa dibilang kikir. Apalagi bila fingerprintnya yang berbasis USB dan bentuknya seperti mouse. SDK yang dibawa, UareU, menyimpan hasil scan langsung dalam gambar, dan hasil encoding dalam bentuk nomor seri fingerprint sajalah yang dikasih ke programmer. Sebagain info, UareU menggunakan database Microsoft Access dengan password adalah nomor seri UareU Installation CD. Di dalam database ini, ada tabel yang berisi gambar, tapi tampaknya dienkripsi.

      Di panduan mereka, memang disebutkan bahwa data yang disimpan adalah data serial fingerprint (fingerprint template), dan tidak dapat diubah lagi ke gambar aslinya.

      http://www.digitalpersona.com/uploadedFiles/Collateral/White_papers/DP-wp-appbestpractices2009-08-21.pdf

      Di atas Library yang dibuat dengan C++, ada COM Object yang (tampaknya) dibuat dengan Visual Basic dengan database MS Access, sehingga sangat lambat. Apalagi bila jumlah data yang disimpan sudah lumayan banyak.

      Menurut saya, satu-satunya cara adalah mengcapture gambar fingerprint saat di-register (biasanya ada 4 gambar). Dicapture semuanya dan disimpan sendiri ke database.

  15. Ass…. mas langsung aja ya, bagaimana cara membuat program multi user dengan delphi 6 menggunakan database access 2007. step by step ya mas. kalau berkenan via e-mail. please help me…

    • @saiful anwar:Sulit mas. Database MS. Access memang tidak mendukung multi user. Kalaupun dipaksakan, di tengah jalan akan banyak kendala..

  16. procedure TForm1.Button1Click(Sender: TObject);
    type
    TRGBTripleArray = ARRAY[Word] of TRGBTriple;
    pRGBTripleArray = ^TRGBTripleArray; // Use a PByteArray for pf8bit color.
    var
    x,y : Integer;
    bx, by : Integer;
    BitMap, BigBitMap : TBitMap;
    P, bigP : pRGBTripleArray;
    pixForm, bigpixForm : TPixelFormat;
    begin
    BitMap := TBitMap.create;
    BigBitMap := TBitMap.create;
    try
    BitMap.LoadFromFile(‘littlefac.bmp’);
    pixForm := BitMap.PixelFormat;
    bigpixForm := BigBitMap.PixelFormat;
    BitMap.PixelFormat := pf24bit;
    BigBitMap.PixelFormat := pf24bit;
    BigBitMap.Height := BitMap.Height * 2;
    BigBitMap.Width := BitMap.Width * 2;
    for y := 0 to BitMap.Height – 1 do
    begin
    P := BitMap.ScanLine[y];
    for x := 0 to BitMap.Width – 1 do
    begin
    bx := x * 2;
    by := y * 2;
    bigP := BigBitMap.ScanLine[by];
    bigP[bx] := P[x];
    bigP[bx + 1] := P[x];
    bigP := BigBitMap.ScanLine[by + 1];
    bigP[bx] := P[x];
    bigP[bx + 1] := P[x];
    end;
    end;
    Canvas.Draw(0, 0, BitMap);
    Canvas.Draw(200, 200, BigBitMap);
    finally
    BitMap.Free;
    BigBitMap.Free;
    end;
    end;

    bisa minta tolong bagaman caranya menyisipkan”saveDialog dan open dialog”
    karna ini program skripsi ku yaitu buat program memperbesar gambar atau pixel…
    mohon bantuannya….

  17. OpenDialog dan SaveDialog dapat dipanggil pada baris ini:

    ..................................................
    pixForm, bigpixForm : TPixelFormat;
    begin
    //
    //--------------------------->SETELAH BEGIN
    OpenDialog1.Filter := 'Bitmap (*.bmp)|*.bmp';
    SaveDialog1.Filter := 'Bitmap (*.bmp)|*.bmp';
    SaveDialog1.DefaultExt := 'bmp';
    if not OpenDialog1.Execute then exit;  //
    if not SaveDialog1.Execute then exit;  //
    //
    BitMap := TBitMap.create;
    BigBitMap := TBitMap.create;
    try
    ..................................................
    

    Kemudian, baris LoadFromFile dapat diganti ke:

    ..................................................
    BitMap.LoadFromFile(OpenDialog1.FileName);
    ..................................................
    

    Untuk menyimpan hasil zoom, kode SaveToFile dapat ditambahkan tepat sebelum keyword finally:

    ..................................................
    Canvas.Draw(0, 0, BitMap);
    Canvas.Draw(200, 200, BigBitMap);
    //----------------------TAMBAHKAN BARIS BERIKUT:
    BigBitMap.SaveToFile(SaveDialog1.FileName);
    //----------------------SELESAI
    finally
    BitMap.Free;
    ..................................................
    

    Semoga potongan kode di atas bermanfaat buat Anda🙂

  18. sudah saya coba Mas tapi muncul Errornya ini pesannya…

    Project project1.exe raise Exception class EAccessViolation with Message ‘Access Violation at Address 000000000. Read of Address 000000000’. Process Stop …..dst

    … apa nya itu Mas?? :

  19. oh saya dapat mi mas….. kesalahannya…

    ada lagi pertanyaanku……….mas maaf kalo merepotkan sekali….,

    itu program yang kita buat compress pake zlib,,
    yang mau saya tanyakan knp tdk bisa dibuka……??

    terimah kasi banyak Mas…..

    • 1. Pesan error AV (Access Violation) dengan kode 00000000 disebabkan karena pemanggilan objek yang tidak ada di memory. Apakah Anda menjalankan kode di atas tanpa menambahkan komponen TOpenDialog dan TSaveDialog ke form? Bila belum, keduanya berada di page Dialog pada Component Palette.

      2. Berarti ada yang keliru. ZLib sudah saya gunakan tahun 2004 untuk membuat file setup (installer) seperti InstallShield. Saya sudah coba membuat setup untuk game Stronghold Crussader dan tidak ada error sedikitpun. Silahkan kirim kode kompres dan dekompres yang Anda buat ke sini agar bisa kita diskusikan.

      Sukses buat Anda🙂

  20. salam kenal.

    begini mas ada yang saya mau tanyakan, bagaimana membuat report di delphi untuk menampilkan gambar format jpg yang sudah disimpan dalam database. Database yang saya gunakan Mysql dengan koneksi Zeos..

    Terima kasih banyak

  21. mas joko Mau nanya 2 aja?
    1.giaman caranya membuat CPU temperatur pada delphi7.kalo bisa minta codingya mas?
    2.gimana caranya perintah riley di port COM5 menjadi ON dan OF..klo bisa minta codinnya mas..

    kiranya dapat membantu? by email ya mass klo bisa..di tunggu ya ?

  22. mas saya ada kendala saat edit data, proses lancar tapi data tidak berubah… listingnya seperti ini:
    with DM1.ZTempOSB do
    begin
    SQL.Clear;
    SQL.Text:=’update osberobat set status_layanan=:parstatuslayanan where
    no_reg=:parnoreg’;
    Params.ParamByName(‘parstatuslayanan’).AsString:=Edit20.Text;
    Params.ParamByName(‘parnoreg’).AsString:=label24.Caption;
    end;
    ExecSQL;
    tolong pencerahannya dong….

    • Ada yang kelewat…
      Beberapa kemungkinan:
      1. Data dalam osberobat dengan no_reg yang dimaksud tidak ada (tidak valid/salah ketik).
      2. Bila data ditampilkan lewat dataset lain, misalnya ZTable1, pastikan dataset ZTable1.Refresh dipanggil untuk merefresh data, setelah update lewat DM1.ZTempOSB dilakukan.
      3. Dari kode di atas, ExecSQL harus berada di antara [Begin] dan [End]. Jangan lupa tambahkan Close(); sebelum [End].
      4. Pastikan dan biasakan, penulisan parameter setelah tanda “=” dipisahkan dengan spasi. Contoh:
      update osberobat set status_layanan=:parstatuslayanan where no_reg=:parnoreg
      seharusnya menjadi:
      update osberobat set status_layanan=:parstatuslayanan where no_reg=:parnoreg

      Konvensi ini untuk mencegah kesalahan interpretasi oleh database server.
      “update tabel set jumlah = jumlah-:angka”
      di mana ParamByName(‘angka’).Asinteger := -1;

      query di atas akan menjadi
      “update tabel set jumlah = jumlah – -1”
      dan dibaca oleh server:
      “update tabel set jumlah = jumlah + 1”

      Celaka duabelas!

      Semoga ke-empat poin di atas dapat menjadi solusi. Thanks kunjungannya😉

  23. private
    { Private declarations }
    procedure ExceptionHandler(Sender: TObject; e: Exception);
    public
    { Public declarations }
    function Folder:String;
    end;

    var
    FMain: TFMain;

    implementation

    uses SysConst, zLibEx;

    {$R *.dfm}

    const
    FORMAT_FLOAT = ‘#,#0.00 ;(#,#0.00) ;- ‘;

    var
    ListV : TListView;

    /////////////////////////////////
    /// KOMPRESSION FUNCTIONS ///
    /////////////////////////////////

    function CompressStreamToStream(const InStream, OutStream: TStream; const Level:TZCompressionLevel; var OutSize: Int64):Boolean;
    begin
    Result := False;
    OutSize := 0;
    try
    ZCompressStream(InStream, OutStream, Level);
    OutSize := OutStream.Size;
    Result := True;
    finally

    end;
    end;

    function CompressFileToFile(const InputFile, OutFile:String; const Level:TZCompressionLevel; var OutSize: Int64):Boolean;
    var
    SS, TS: TFileStream;
    begin
    Result := False;
    SS := TFileStream.Create(InputFile, fmOpenRead + fmShareDenyNone);
    TS := TFileStream.Create(OutFile, fmCreate);
    OutSize := 0;
    try
    ZCompressStream(SS, TS, Level);
    OutSize := TS.Size;
    Result := True;
    finally
    TS.Free;
    SS.Free;
    end;
    end;

    function CompressFileToStream(const InputFile: String; const Level:TZCompressionLevel; var OutStream:TStream; var OutSize: Int64):Boolean;
    var
    SS: TFileStream;
    begin
    Result := False;
    OutStream.Size := 0;
    SS := TFileStream.Create(InputFile, fmOpenRead + fmShareDenyNone);
    OutSize := 0;
    try
    ZCompressStream(SS, OutStream, Level);
    OutSize := OutStream.Size;
    Result := True;
    finally
    SS.Free;
    end;
    end;

    function CompressStreamToFile(InStream: TStream; const Level:TZCompressionLevel; const OutFile:String; var OutSize: Int64):Boolean;
    var
    TS: TFileStream;
    begin
    Result := False;
    TS := TFileStream.Create(OutFile, fmCreate);
    OutSize := 0;
    try
    ZCompressStream(InStream, TS, Level);
    OutSize := TS.Size;
    Result := True;
    finally
    TS.Free;
    end;
    end;

    /////////////////////////////////
    /// DEKOMPRESSION FUNCTIONS ///
    /////////////////////////////////

    function DeCompressStreamToStream(const InStream, OutStream: TStream; var OutSize: Int64):Boolean;
    begin
    Result := False;
    OutSize := 0;
    try
    ZDecompressStream(InStream, OutStream);
    OutSize := OutStream.Size;
    Result := True;
    finally

    end;
    end;

    function DeCompressFileToFile(const InputFile, OutFile:String; var OutSize: Int64):Boolean;
    var
    SS, TS: TFileStream;
    begin
    Result := False;
    SS := TFileStream.Create(InputFile, fmOpenRead + fmShareDenyNone);
    TS := TFileStream.Create(OutFile, fmCreate);
    OutSize := 0;
    try
    ZDecompressStream(SS, TS);
    OutSize := TS.Size;
    Result := True;
    finally
    TS.Free;
    SS.Free;
    end;
    end;

    function DeCompressFileToStream(const InputFile: String; var OutStream:TStream; var OutSize: Int64):Boolean;
    var
    SS: TFileStream;
    begin
    Result := False;
    OutStream.Size := 0;
    SS := TFileStream.Create(InputFile, fmOpenRead + fmShareDenyNone);
    OutSize := 0;
    try
    ZDecompressStream(SS, OutStream);
    OutSize := OutStream.Size;
    Result := True;
    finally
    SS.Free;
    end;
    end;

    function DeCompressStreamToFile(InStream: TStream; const OutFile:String; var OutSize: Int64):Boolean;
    var
    TS: TFileStream;
    begin
    Result := False;
    TS := TFileStream.Create(OutFile, fmCreate);
    OutSize := 0;
    try
    ZDecompressStream(InStream, TS);
    OutSize := TS.Size;
    Result := True;
    finally
    TS.Free;
    end;
    end;

    /////////////////////////////////

    function FileSize(const AFile:String):int64;
    begin
    Result := 0;
    with TFileStream.Create(AFile, fmOpenRead or fmShareDenyNone) do
    begin
    Result := Size;
    Free;
    end;
    end;

    function TFMain.Folder: String;
    begin
    Result := ”;
    SelectDirectory(‘Select Target Folder’, ”, Result);
    end;

    function ItemExists(List: TListView; const AItem:String):Boolean;
    var
    i:integer;
    begin
    Result := False;
    if List.Items.Count = 0 then exit;
    for i := 0 to List.Items.Count -1 do
    begin
    if lowercase(list.Items[i].Caption) = lowercase(Aitem) then
    begin
    Result := True;
    List.ItemIndex := i;
    List.Refresh;
    Break;
    end;
    end;
    end;

    procedure TFMain.FormCreate(Sender: TObject);
    begin
    Application.OnException := ExceptionHandler;
    PageControl1.ActivePageIndex := 0;
    Icon.Handle := Application.Icon.Handle;
    Caption := Application.Title;
    lvComp.Clear;
    lvDecomp.Clear;
    PageControl1Change(PageControl1);
    end;

    procedure TFMain.Button1Click(Sender: TObject);
    var
    OutDir: String;
    AFileSrc, AFileTrg:String;
    i:integer;
    sz,x: int64;
    begin
    if ListV.Items.Count = 0 then
    begin
    ExceptionHandler(Self, Exception.Create(‘Tidak ada file yang akan dikompress.’));
    exit;
    end;

    OutDir := Folder();
    if trim(OutDir) = ” then exit;
    OutDir := ExcludeTrailingPathDelimiter(OutDir);
    if not DirectoryExists(OutDir) then
    begin
    raise Exception.Create(‘Direktori tidak ditemukan!’);
    exit;
    end;
    for i:= 0 to ListV.Items.Count -1 do
    begin
    AFileSrc := ListV.Items[i].Caption;
    AFileTrg := OutDir +’\’+ ExtractFileName(AFileSrc)+’.zlib’;
    ListV.Items[i].ImageIndex := 1;
    Application.ProcessMessages;
    x := FileSize(AFileSrc);
    if CompressFileToFile(AFileSrc, AFileTrg, zcMax, Sz) then
    begin
    ListV.Items[i].SubItems[1] := FormatFloat(FORMAT_FLOAT, sz/1024)+’KB’;
    ListV.Items[i].SubItems[2] := FormatFloat(FORMAT_FLOAT, sz / x) +’%’;
    ListV.Items[i].ImageIndex := 2;
    end
    else
    begin
    ListV.Items[i].SubItems[2] := ‘Error’;
    ListV.Items[i].ImageIndex := 6;
    end;
    Application.ProcessMessages;
    end;
    end;

    procedure TFMain.ExceptionHandler(Sender: TObject; e: Exception);
    begin
    MessageBox(handle,PChar(‘Following error has occured: ‘#13 + e.Message), ‘Error’, MB_ICONHAND);
    end;

    procedure TFMain.Add1Click(Sender: TObject);
    var
    i:integer;
    begin
    if PageControl1.ActivePageIndex = 1 then
    begin
    OpenDialog1.Filter := ‘Zlib Compressed Files (*.zlib)|*.zlib’;
    end
    else
    begin
    OpenDialog1.Filter := ‘All Files (*.*)|*.*’;
    end;
    if not OpenDialog1.Execute then exit;
    ListV.Items.BeginUpdate;
    try
    for i:=0 to OpenDialog1.Files.Count -1 do
    begin
    if ItemExists(ListV, OpenDialog1.Files[i]) then
    ExceptionHandler(Self, Exception.Create(‘File ini telah ada di daftar:’#13#13+OpenDialog1.Files[i]))
    else
    begin
    with ListV.Items.Add do
    begin
    Caption := OpenDialog1.Files[i];
    ImageIndex := 0;
    with SubItems do
    begin
    Add(FormatFloat(FORMAT_FLOAT, FileSize(OpenDialog1.Files[i])/1024)+’KB’);
    Add(FormatFloat(FORMAT_FLOAT, 0)+’KB’);
    add(FormatFloat(‘0.00′,0)+’%’);
    end;
    end;
    end;
    end;
    finally
    ListV.Items.EndUpdate;
    end;
    end;

    procedure TFMain.PageControl1Change(Sender: TObject);
    begin
    if PageControl1.ActivePageIndex = 0 then
    ListV := lvComp
    else
    ListV := lvDecomp;
    end;

    procedure TFMain.RemoveSelected1Click(Sender: TObject);
    begin
    ListV.DeleteSelected;
    end;

    procedure TFMain.RemoveAll1Click(Sender: TObject);
    begin
    ListV.Items.Clear;
    end;

    procedure TFMain.SelectAll1Click(Sender: TObject);
    begin
    ListV.SelectAll;
    end;

    procedure TFMain.InvertSelection1Click(Sender: TObject);
    var
    i:integer;
    begin
    ListV.Items.BeginUpdate;
    try
    for i:= 0 to ListV.Items.Count -1 do
    begin
    ListV.Items[i].Selected := not ListV.Items[i].Selected;
    end;
    finally
    ListV.Items.EndUpdate;
    end;
    end;

    procedure TFMain.Button2Click(Sender: TObject);
    var
    OutDir: String;
    AFileSrc, AFileTrg:String;
    i:integer;
    sz,x: int64;
    begin
    if ListV.Items.Count = 0 then
    begin
    ExceptionHandler(Self, Exception.Create(‘Tidak ada file yang akan dikompress.’));
    exit;
    end;

    OutDir := Folder();
    if trim(OutDir) = ” then exit;
    OutDir := ExcludeTrailingPathDelimiter(OutDir);
    if not DirectoryExists(OutDir) then
    begin
    raise Exception.Create(‘Direktori tidak ditemukan!’);
    exit;
    end;
    for i:= 0 to ListV.Items.Count -1 do
    begin
    AFileSrc := ListV.Items[i].Caption;
    AFileTrg := OutDir +’\’+ ExtractFileName(AFileSrc);
    Delete(AFileTrg, length(AFileTrg)-4,5);
    ListV.Items[i].ImageIndex := 1;
    Application.ProcessMessages;
    x := FileSize(AFileSrc);
    if DeCompressFileToFile(AFileSrc, AFileTrg, sz) then
    begin
    ListV.Items[i].SubItems[1] := FormatFloat(FORMAT_FLOAT, sz/1024)+’KB’;
    ListV.Items[i].SubItems[2] := FormatFloat(FORMAT_FLOAT, sz / x) +’%’;
    ListV.Items[i].ImageIndex := 2;
    end
    else
    begin
    ListV.Items[i].SubItems[2] := ‘Error’;
    ListV.Items[i].ImageIndex := 6;
    end;
    Application.ProcessMessages;
    end;
    end;

    end.

    mas maaf baru masuk lagi…!
    itu diatas Listing yang ingin saya pisahkah form karna Compress dan Dekompres itu dalam 1 form. jadi bgaimana cara pisahkannya….. untuk 1form untuk Compres dan 1 form buat Decompress. terim kasih…

  24. Mas ada programku mau saya ubah tampilannya menjadi ” :ebih User Frendly”
    bisa minta tolong terimah kasi””” saya kirimkan lewat E-mail saja…

  25. mas sya mau tanya.
    bagaimana cara load file jpeg dari dB Access untuk di tampilkan ke quick repot.
    saya sudah berhasil menyimpan file jpeg ke Access tapi saya tidak bisa menampilkan file tersebut ke dalam quick report delphi 7.
    mohon bantuannya..
    terima kasih

  26. Mas saya mau tanya nih
    Saya buat laporan di delphi dengan menggunakan komponen Quick Report
    Gmn caranya supaya laporan yang sudah di buat itu bisa diakses melalui Internet
    Mohon pencerahannya
    Thanks

  27. mau tanya nih… tentang matriks Tstringgrid..

    misalnya : matriks 5×5
    O/D 1 2 3 4 5
    1 0 5 10 5 5
    2 5 0 2 5 10
    3 10 2 0 10 12
    4 5 5 10 0 10
    5 5 10 12 10 0

    cara kosongkan baris dan kolom, misalnya 3,1,5, jadi baris 3 dikosongkan, baris dan kolom 1 dikosongkan, dan 5 hanya kolomnya saja..
    dalam delphi gmn caranya?

  28. Salam.
    Bgini saya kan buat aplikasi pake delpi mysql dengan Zeos. Saya mau delete data. Ktika tekan Button Del malah muncul pesan ini ” Acces violation at addres 005FAAE8 ini module Administrasi.exe”
    Kira – kira Q salah codenya ato apa ya?
    Tolong kasih bantuan tmen2.
    Makasih
    Rubiman
    satia_firdausi@yahoo.com
    FB : Mas Rubiman

  29. mas… tolongin saya…ada nggak program delphi enskripsi dan deskripsi file dan gambar dengan menggunakan metode circulant matrik…butuh banget mas…
    tolong ya mas….
    makacih….

  30. Haloo..Mas
    tolong dong sy ada kasus nih, sy pakai delphi 3 (digunakan soalnya masih ada kaitan dengan tools v d 3 nya)
    database yg digunakan MS SqL Server 2005.
    komponen yg digunakan TDatabase
    klu dipasang di windows yg ada aktif domainnya harus pakai user administrator baru bisa runing programnya..tetapi klu pakai user biasa aplikasi tidak bisa di buka sama sekali.
    mohon penjelasannya ?
    terimakasih.

  31. wuiiih….
    hebat bos, sharing ilmu delphi beserta source nya, yang lain pada dijual, anda ngasih gratis plus tutorial..saya akan sering2 mampir kesini, nyari inspirasi..sekarang saya masih jualan program, next time saya pingin seperti anda..
    salut buat anda..semoga anda banyak rejeki, diberi kemudahan, suksesselalu dunia akhirat..

  32. Mas Tolongin Nih, Pada saat running program di komputer lain database dilain komputer, pada saat koneksi Ip dll jalan, Namun pada saat masuk ke form open menjalankan data error access violatin address000000, Jadi harus gimana yah ?

  33. asm,, perkenalkan saya jibruth. saya pemula delphi, saya mau tanya bagaimana dan apa saja yang dilakukan atau digunakan dalam membuat aplikasi untuk multi user(server-client).
    mohon bantuannya dan penjelasanaya.
    mohon kirim ke email saya nasutian@gmail.com

  34. dearr…
    mass saya mw tanya ni mass..???
    gomana cara mengkoneksikan alat finger print ke program delphi7 ya mass..
    maff saya baru belajar pakai program delphi ni mas..??
    tahnkks

  35. salam hormat mas joko, sy mohon bantuannya untuk buat qreport delphi 7,

    misalnya ada data :
    Nama : Barang A:
    tgl 1. jns_ transaksi : Keluar =4,Keluar=8 ,Masuk=24, ,, dst
    tgl 2. jns_transaksi : Keluar=10, Masuk=12, masuk=67, Keluar=7,,dst dng proses yg sama.
    s/d tgl 30.

    Nama : Barang B:
    tgl 1. jns_ transaksi : Keluar =4,Keluar=8 ,Masuk=5,, dst
    tgl 2. jns_transaksi : Keluar=10, Masuk=12, masuk=67, Keluar=7,,dst dng proses yg sama.
    s/d tgl 30.

    Bagaimana caranya supaya di laporannya menjadi:

    Barang A
    tgl1, Keluar , 4
    Keluar, 8
    Masuk, 24

    tgl2. Keluar, 10
    Masuk, 12
    Masuk, 67
    Keluar. 7

    summarynya ,Total K=Sum(K), M=Sum(M), saldo =Sum(M)-Sum(K)

    Barang B
    tgl1, Keluar , 4
    Keluar, 8
    Masuk, 5

    tgl2. Keluar, 10
    Masuk, 12
    Masuk, 67
    Keluar. 7

    summarynya ,Total K=Sum(K), M=Sum(M), saldo =Sum(M)-Sum(K)

    dst.

    Mohon bantuannya mas, terimakasih atas pencerahannya

  36. Assalamualaikum bg buyut..

    Mau nanya neh….
    gmana caranya buat file suara yg bsa kita set besar dan kecil serta effectnya bg…
    Maap neh ngerepotin..

  37. ass wr wb: slam knl Gan
    Gni Ane Mhon bntuan ya nhi, ane pya kendala di program ane,
    gmn cra ya file teks/excel to bsa tersimpan di dbgrid dan menggunakan opendialog
    w pke database ya Access 2007.
    1 ge cara bikin Setup.EXE yg database ya ngikut trus jd di instal dismua kmputer.

    Mhon Pencerahan ya Gan
    Thaks

  38. Salam Knl Mas. Lgs Ajha Ya Mas. gini aku ada tugas mau buat data absen siswa dgn M Aceess with Delphi . yang sy ingin tnykn Mas?? gmn caranya buat login untuk satu record saja, mksdx’ jika siswa A login nah yang muncul yah cuma Informasi Data Siswa A tersebut D Db Gridnya. thanks atas Responnya.

  39. Salam kenal mas. Help dong. Saya pemakai delphi7. ketika runing showmodal muncul error project project1.exe raised exception class eaccessviolation with message access violation…………….. ketika form lain saya remove dari project baru bisa . Yang mau saya tanya. apakah jumlah form/parameter/variabel ada batasnya dalam 1 aplikasi. Bagaimanakah cara settingnya. ASAP ya mas. Trimakasih.

  40. mas mau tanya kalo bikin installer project delphi yang pake database sql server caranya gimana mas??
    kalo di komputer lainnya ga di instal sql server biar projectnya bisa jalan di gimanain mas mohon pencerahannya.,

  41. if imgArr[j].Tag = 1 then
    begin
    with dmData.qry2 do /// datasource.query2
    begin
    parambyname(‘Pasd’).AsString:=’15’;
    Open;
    First;
    cno := FieldByName(‘notransaksi’).AsString;
    ShowMessage(cno);
    end;

    saya menggunakan zeos , phpmyadmin, datasource delphi 7. program erorr pada saat pemanggilan parameter parambyname(‘Pasd’).AsString:=’15’;

    access eviolation 006322c8, nama parameternya smua sudah sy cek, tapi tetap masil bermasalah, mohon bantuannya

    isi qry2 :

    SELECT
    notransaksi
    FROM
    transaksi
    WHERE
    nomeja = :Pasd
    ORDER BY
    tgltransaksi DESC

    • Sudah dipastikan bahwa dataset dalam keadaan tidak aktif saat parameter diinput?
      Contoh:

      with dmData.qry2 do /// datasource.query2
      begin
      if active then close;
      parambyname(‘Pasd’).AsString:=’15′;
      Open;
      First;
      cno := FieldByName(‘notransaksi’).AsString;
      ShowMessage(cno);
      end;
      
  42. mas admin,,,saya minta tolong donk..koding untuk perkalian matrik :ordo 3×3 pada stringgrid1 dikalikan matrik ordo 3×1 pada stringrid2.
    dan hasilnya pada stringgrid3.plisss admin..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s