Senin, 22 November 2010

Pemrograman Qbasic 10

         Modul 10
        PENGOLAHAN FILE BINARY

        Selain pengolahan data Sequential dan Random, QBasic juga
        menyediakan pengolahan yang bersifat Binary. Pada pengolahan yang
        bersifat Binary, file dapat dibaca/ditulis secara per-Byte pada
        posisi yang diinginkan, sehingga tidak terikat kepada urutan
        maupun struktur data.

        Pengolahan yang bersifat Binary banyak digunakan untuk keperluan-
        keperluan khusus yang membutuhkan akses langsung ke satuan data
        di tingkat Byte. Misalnya membuat program Enkripsi dan Dekripsi
        file, pada proses Enkripsi, isi suatu file disandikan byte-per-
        byte sehingga tidak dapat dikenali lagi secara normal oleh sistem
        yang membuatnya. Agar isi file tersebut dapat dikenali kembali,
        maka diperlukan proses Dekripsi yang mengembalikannya ke keadaan
        semula.

        Pengolahan yang bersifat Binary juga banyak digunakan pada
        pembuatan program AntiVirus, Crack, Game Cheat yang membutuhkan
        akses ke byte level.


        1. Perintah membuka file Binary

        Seperti pada pengolahan file umumnya, sebelum digunakan file
        binary harus dibuka dengan perintah sebagai berikut :

        OPEN namafile FOR BINARY AS [#]filenum

        Contoh :

        OPEN "Sandi.bin" FOR BINARY AS #1

        Membuka file "Sandi.bin" untuk diolah secara binary sebagai file
        nomor 1.


        2. Mendapatkan jumlah byte pada file binary yang telah terbuka.

        JlhByte = LOF(1)

        Fungsi LOF (Length Of File) akan mengembalikan ukuran file binary
        dalam ukuran byte.

        Catatan : 1 KB = 1024 Byte, 1 MB = 1024*1024


        3. Perintah input/output pada file Binary

        Perintah menulis data

        PUT [#]filenum[,posisi][,variable]

        Contoh :

        MyData = 10
        PUT #1, 101, MyData

        Menulis karakter ASCII 10 (line feed) pada posisi byte ke 101
        dalam file nomor 1.

        Contoh Lain :

        Dim MyChar As String*1
        MyChar = Chr$(10)
        Put #1, 101, MyChar


        Perintah membaca data

        GET [#]filenum[,posisi][,variabel]

        Contoh :

        Dim MyChar As String*1
        GET #1, 101, MyChar

        Membaca data byte posisi ke dari file nomor 1 ke variabel
        MyChar.


        4. Perintah menutup file Binary

        Setelah selesai digunakan, file Binary perlu ditutup untuk
        memastikan semua data ditulis ke media penyimpanan, dan
        memberikan indikator EOF.

        Nb. Untuk mempercepat proses I/O, sistem operasi menyediakan
        memory buffer sebagai tempat pembacaan dan penulisan sementara.
        Perintah Close untuk memastikan semua data dari buffer benar-
        benar ditulis ke media penyimpanan.

        Contoh :

        CLOSE #1

        Menutup file binary nomor 1.

        Contoh :

        'Program Enkripsi dan Dekripsi dengan kunci NOT

        DIM Source AS STRING
        DIM Target AS STRING
        DIM FSize AS LONG
        DIM MyChar AS STRING * 1
        CLS
        PRINT "Program Enkripsi/Dekripsi Data"
        PRINT "Menggunakan operator NOT"
        PRINT "------------------------"
        INPUT "Masukkan Source :", Source
        INPUT "Masukkan Target :", Target

        IF Source = Target THEN
           PRINT "Nama file source tidak boleh sama dengan target"
        ELSE
           OPEN Source FOR BINARY AS #1         'Buka source sebagai 1
           OPEN Target FOR BINARY AS #2         'Buka target sebagai 2

           FSize = LOF(1)                       'Mendapatkan ukuran file 1

           FOR I = 1 TO FSize
               GET #1, I, MyChar                'Baca byte posisi ke i
                                                'dari source
               MyChar = CHR$(255 - ASC(MyChar)) 'Enkripsi dengan NOT

               PUT #2, I, MyChar                'Tulis ke posisi ke i
                                                'Pada Target
           NEXT I
           CLOSE #1
           CLOSE #2
           PRINT
           PRINT "Proses Selesai"
        END IF
        END

   
    'Program Menghilangkan Password file *.Mdb Microsoft Access 97

    Dim nama As String
        Dim huruf As String*1

    INPUT "Masukkan nama file :",nama

    IF Dir$(nama) = "" THEN

       PRINT "File ";nama;" tidak ada !"

    ELSE
       OPEN nama FOR BINARY AS #1

           huruf = Chr$(134)
       PUT #1, 66, huruf

       CLOSE #1

       PRINT "Password ";nama;" telah dihilangkan !"

    END IF
    END