Selamat datang di blog pribadi anak-anak MA Darul Ma'arif Payaman

Jumat, 04 Maret 2011

MEMBUAT FUNGSI MID, RIGHT, LEFT PADA PB MENGGUNAKAN COPYMEMORY


 
            Hallo teman-teman codenesia, dihari yang sepecial ini, bertepatan dengan hari Ultal CN yang ke 2 ini mari kita bersama-sama membuat hal yang special juga. :-P. Kali ini kita akan belajar bersama untuk membuat fungsi tiruan Mid$, Left$, Right$ dengan PB ( Power Basic ). Sebelum menginjak pada pembahasan yang lebih dalam, sudahkah anda mengenal apa itu fungsi Left$, Mid$ dan Right$, sepertinya fungsi-fungsi pengolahan string tersebut bukanlah hal yang baru bagi para pemakai bahasa Basic. Ya, fungsi-fungsi bawaan basic tersebut merupakan fungsi yang vital untuk anda yang ingin membuat suatu program pengolahan string. Mungkin pernah muncul dibenak anda bagaimanakah cara kerja fungsi-fungsi tersebut, nah mari kita mulai pembahasan mulai dari alur kerja fungsi tersebut untuk lebih jelasnya simak penjelasan dibawah ini.
1.      Fungsi MID$
Semisal di alamat 0x1 terdapat data string “codenesia”
c
o
d
e
n
e
s
i
a
0x1
0x2
0x3
0x4
0x5
0x6
0x7
0x8
0x9
           
            Y = “codenesia”
Perhatian Y disini bukan berisi data “codenesia” tapi menunjukkan alamat tempat data “codenesia” berada
            Nah contoh :
X =  mid$(Y , 4, 3)
Maka variabel X akan terisi dengan data “nes” karena fungsi mid$() mencopy data yang ditunjukkan variabel Y yang berisi alamat tempat data “codenesia”, jadi fungsi Mid$() tadi membaca di alamat  (Y – 1 + 4)  pada kondisi di atas y berniali 0x1 jadi : 1 – 1 + 4 = 0x4,  dengan panjang 3 byte jadi proses pencopian dimulai pada alamat 0x4 sampai 0x6 dan ditampung pada variabel X. Gimana sudah mengerti kan cara kerja fungsi mid$() tersebut. Contoh pembuatan fungsi Mid$() seperti code berikut ini.


    FUNCTION MyMid$(BYVAL Src AS STRING, _
        BYVAL Start AS DWORD,BYVAL Panjang AS DWORD)
        DIM a&, y&, s$
       
        a = STRPTR(Src) ' dapatkan alamat data Src berada
        '// a = a - 1
        ! mov eax, a
        ! dec eax
        ! mov a, eax

        s = SPACE$(panjang) ' alokasikan ruang untuk menampung data
        CopyMem STRPTR(s), a + Start, Panjang
        FUNCTION = s
    END FUNCTION  
 
 

















2.      Fungsi Right$
Cara kerja fungsi Right$ sebenarnya tidak jauh beda dengan fungsi Mid$(), hanya saja untuk fungsi Right$() untuk awal pengcopian dimulai dari kanan serta panjang data yang dicopy sudah diset secara otomatis sesuai dengan panjang data yang tersisa, untruk lebih jelasnya lihat contoh dibawah ini.
            Y = “codenesia”
Perhatian Y disini bukan berisi data “codenesia” tapi menunjukkan alamat tempat data “codenesia” berada
X =  Right$(Y , 4)
Maka variabel X akan terisi dengan data “esia” karena fungsi Right$() mencopy data
yang ditunjukkan variabel Y yang berisi alamat tempat data “codenesia”, jadi fungsi Right$() tadi membaca di alamat  (y +  PanjangData - 4)  pada kondisi di atas anggap saja y berniali 0x1 jadi : 1 + 9 - 4 = 0x6,  dengan panjang 4, jadi proses pencopian dimulai pada alamat 0x6 sampai 0x9 dan ditampung pada variabel X. Gimana sudah mengerti kan cara kerja fungsi Right$() tersebut. Contoh pembuatan fungsi Right$() seperti code berikut ini.



    FUNCTION MyRight$(BYVAL Src AS STRING _
        ,BYVAL Panjang AS DWORD)
        DIM a&, y&, s$

        a = STRPTR(Src) ' dapatkan alamat data Src berada
        y = MyLen(Src)  ' dapatkan panjang data
        s = SPACE$(Panjang) ' alokasikan ruang untuk menampung data
        CopyMem STRPTR(s), a + y - panjang , panjang
        FUNCTION = s
    END FUNCTION 
 
 












Gimana ternyata sangat mudah bukan membuat fungsi-fungsi tiruan diatas, sekarang kita pelajari fungsi yang terakhir yaitu fungsi Left$() ini merupakan fungsi paling sederhana pembuatanya dibandingkan dengan fungsi-fungsi diatas.
3.      Fungsi Left$
Cara kerja fungsi Left$ sangatlah sederhana sama halnya dengan fungsi Right$(), keduanya sama dengan fungsi Mid$() . secara otomatis proses pengcopyan data dimulai dari pertama untuk lebih jelasnya simak penjelasan contoh dibawah ini.
            Y = “codenesia”
Perhatian Y disini bukan berisi data “codenesia” tapi menunjukkan alamat tempat data “codenesia” berada
X =  Left$(Y , 4)
Maka variabel X akan terisi dengan data “code” karena fungsi Left$() mencopy data
yang ditunjukkan variabel Y yang berisi alamat tempat data “codenesia”, jadi fungsi Left$() tadi membaca di alamat  y  pada kondisi di atas anggap saja y berniali 0x1,  dengan panjang 4, jadi proses pencopian dimulai pada alamat 0x1 sampai 0x4 dan ditampung pada variabel X. Gimana sudah mengerti kan cara kerja fungsi Left$() tersebut. Dibawah ini contoh code sederhananya.







    FUNCTION MyLeft$(BYVAL Src AS STRING,BYVAL Panjang AS DWORD)
        DIM a&, y&, s$

        a = STRPTR(Src) ' dapatkan alamat data Src berada
        s = SPACE$(Panjang) ' alokasikan ruang untuk menampung data
        CopyMem STRPTR(s), a , panjang
        FUNCTION = s

    END FUNCTION
 
 






Sekarang sudah tuntas penjelasan mengenai fungsi Mid$(), Right$() dan Left$(), sekarang mari kita buat contoh pembuatan code secara lengkap. Pertama buat project exe baru pada PB dan tuliskan code ini pada module tersebut.



#COMPILE EXE
#DIM ALL

    FUNCTION PBMAIN () AS LONG
         DIM x$,a$,b$,c$,d$,e$,f$

         X = "I LOVE CODENESIA"
          a = LEFT$(x,6)
          b = MyLeft$(x,6)
          c = RIGHT$(x,9)
          d = MyRight$(x,9)
          e = MID$(x,3,4)
          f = MyMid$(x,3,4)

         MSGBOX "Hasil fungsi Left$ internal  = " & a & $CRLF & _
                "Hasil fungsi Left$ buatan    = " & b & $CRLF & _
                "Hasil fungsi Right$ internal = " & c & $CRLF & _
                "Hasil fungsi Right$ buatan   = " & d & $CRLF & _
                "Hasil fungsi Mid$ internal   = " & e & $CRLF & _
                "Hasil fungsi Mid$ buatan     = " & f,0, "I LOVE CODENESIA"

    END FUNCTION

' Optimasi Fungsi CopyMemory
     SUB CopyMem(BYVAL Dest AS DWORD, _
         BYVAL Src AS DWORD, BYVAL LenD AS DWORD)
        ! mov esi, Src
        ! mov edi, Dest
        ! mov ecx, LenD
        ! cld
        ! rep movsb
    END SUB

    ' // Optimasi Fungsi Len
    FUNCTION MyLen&(BYVAL Datanya AS STRING)
        ! mov esi, datanya
        ! mov eax, [esi-4]
        ! mov function, eax
    END FUNCTION


    
 
 
























Dan tambahkan code ini dibawah module tersebut.



    FUNCTION MyMid$(BYVAL Src AS STRING, _
        BYVAL Start AS DWORD,BYVAL Panjang AS DWORD)
        DIM a&, s$

        ! mov eax, Src
        '// a = a - 1
        ! dec eax
        '// a = a + Start
        ! add eax, Start
        ! mov a, eax

        s = SPACE$(Panjang) ' alokasikan ruang untuk menampung data
        CopyMem STRPTR(s), a , Panjang
        FUNCTION = s

    END FUNCTION

    FUNCTION MyRight$(BYVAL Src AS STRING _
        ,BYVAL Panjang AS DWORD)

        DIM a&, y&, s$
        a = STRPTR(Src) ' dapatkan alamat data Src berada
        y = MyLen(Src)  ' dapatkan panjang data
        s = SPACE$(Panjang) ' alokasikan ruang untuk menampung data
        CopyMem STRPTR(s), a + y - panjang , panjang
        FUNCTION = s

    END FUNCTION

    FUNCTION MyLeft$(BYVAL Src AS STRING,BYVAL Panjang AS DWORD)

        DIM a&, y&, s$
        a = STRPTR(Src) ' dapatkan alamat data Src berada
        s = SPACE$(Panjang) ' alokasikan ruang untuk menampung data
        CopyMem STRPTR(s), a , panjang
        FUNCTION = s

    END FUNCTION      

 
 





















Gimana sederhana bukan ?, teknik diatas masih sederhana dan harapan saya adalah code-code diatas dapat diperbaharui bersama untuk dioptimalkan dan dapat dimanfaatkan kita bersama, karena teknik-teknik diatas masih teknik dasar dan masih banyak kemungkinan untuk dioptimalkan oke, semoga bermafaat untuk kita bersama, ini hasil compilan codenya.








Thanks To Codenesia and All Member



Salam Maniez
Agus a.k.a ManiaX Code Darma

Senin, 14 Februari 2011

Source Anti Virus

Ma'af untuk sekarang masih belum tersedia

MENGEMBALIKAN DATA YANG DISEMBUNYIKAN VIRUS


            Sudah bukan menjadi rahasia umum lagi bahwa dunia programming dan sejenisnya telah dicap sebagai sesuatu yang sulit dan membosankan, sudah barang tentu momok semacam ini akan semakin menjerumuskan kita kedalam jurang kebodohan. Tapi disini kita akan membuktikanya bersama bahwa hal semacam itu tidak benar adanya.
            Berangkat dari pengalaman pribadi, banyak teman saya yang mengeluhkan tentang Data yang berada di Flask Disk mereka yang hilang, padahal yang sebenarnya terjadi adalah Data tersebut disembunyikan (Di set attributnya menjadi super Hidden) jadi bukan hilang atau dihapus oleh virus. Nah disini kita akan belajar bersama tentang bagaimana cara mengembalikan data yang berattribut Hidden menjadi normal kembali berikut langkah-langkahnya.

Pengikut