BTemplates.com

Diberdayakan oleh Blogger.

Pages

Pages - Menu

Popular Posts

Rabu, 19 Desember 2007

Membuat file EXE dengan Visual Foxpro


Catatan sebelum membaca : 
Jika kita menggunakan SQL, disarankan untuk membaca https://foxproexpert.blogspot.com/2006/12/penggunaan-sql-pada-visual-foxpro.html sebelum melanjutkan. 

Tahap akhir setelah pembuatan program dalam Visual Foxpro adalah menjadikan program tersebut dalam sebuah file EXE yang dapat dijalankan secara mandiri dari Windows Command Prompt sehingga dapat dijalankan dengan sebuah shortcut pada Start Menu Microsoft Windows. Dalam bahasa pemrograman yang lain seperti Visual C, Labview, Visual Basic atau Delphi, pembuatan EXE ini adalah hal yang sangat mudah dan sederhana, karena programmer cukup klik menu Build saja, File EXE akan segera terbentuk dan otomatis bisa dijalankan melalui Shortcut pada Microsoft Windows. Hal ini berbeda dengan Visual Foxpro, meskipun secara sekilas Visual Foxpro telah menyediakan sarana pembuatan file EXE, yaitu command "Build" pada Project Manager.


Pada Visual Foxpro. pembuatan file EXE tak akan berjalan sesuai keinginan kita, tanpa kita melakukan "sesuatu". File EXE yang dihasilkan tidak dapat dijalankan seperti pada umumnya file EXE pada Microsoft Windows.
Masalah yang timbul dalam pembuatan file EXE dalam Visual Foxpro adalah sebagai berikut :
  • File EXE berhasil terbentuk tetapi saat dijalankan file EXE tidak menampilkan "apapun", 
  • Ada tampilan saat File EXE dijalankan tetapi dibelakangnya diikuti dengan tampilan screen Visual Foxpro.
Untuk mendapatkan file EXE yang benar dari kompilasi Visual Foxpro, lakukan hal-hal berikut ini :

Langkah 1:
Tetapkan form yang akan ditampilkan sebagai menu utama dari file EXE yang akan kita buat. Pada Property > Metod > Destroy

dan pada Property > All > ShowWindow pilih : 2 As Top-Level Form


Langkah 2:
Buat file PRG yang baris awalnya berisi _screen.visible=.F. dan dibawahnya tambahkan perintah menjalankan form DO FORM.

Contoh :

_screen.visible=.F
........
........
........
DO FORM TES
READ EVENTS


Langkah 3:
Buat file text bernama CONFIG.FPW yang berisi SCREEN=OFF


Langkah 4:
Buka New Project
Pilih New File


Setalh project diberi nama, buka Code > Program. Klik Add.


Tambahkah file PRG yang telah kita tulis diatas, klik kanan dan beri tanda centrang pada Set Main


Masuk ke Documents, pilih Form dan klik Add


pilih form yang kita buat di atas


Pilih Other

Klik Add dan pilih CONFIG.FPW


Kembali ke Code, Klik Build


Pilih

klik Ok

Selesai, jika file exe dijalankan pada Windows akan muncul sbb :


&& (Eof)

Selasa, 18 Desember 2007

Menentukan Drive Space dengan Visual Foxpro


&& FUNCTION DriveSpace
&& PARAMETERS _cDrive, _Mode,_Mess,_DriveType
&& Untuk Menentukan Sisa Drive Space, Kapasita Drive Space atau Ruang Simpan yang telah terpakai
&& PARAMETERS _cDrive : Drive yang akan diperiksa kapasitasnya
&& _Mode : 0 Disk Capacity
&&  1 Free Space
&&  2 Usage Space
&& _Mess, Character Disk Size : BYTE/KB/MB/GB
&& _DriveType :==> Type Drive :
&& 1 No type
&& 2 Floppy disk, flash disk juga masuk disini
&& 3 Hard disk
&& 4 Removable drive or network drive
&& 5 CD-ROM
&& 6 RAM disk1

FUNCTION DriveSpace
PARAMETERS _cDrive, _Mode,_Mess,_DriveType
IF VARTYPE(_DriveType)="N"
        _DriveType=ALLTRIM(STR(INT(_DriveType)))
        && Dianggap FixedDrive
ENDIF
IF VARTYPE(_DriveType)<>"C"
        _DriveType="3"
        && Dianggap FixedDrive
ENDIF
IF !(_DriveType$"1,2,3,4,5,6")
        _DriveType="3"
ENDIF
IF VARTYPE(_cDrive)<>"C"
        _cDrive=LEFT(SET("DEFAULT"),1)
ENDIF
IF VARTYPE(_Mode)="C"
        _Mode=INT(VAL(_Mode))
ENDIF
IF VARTYPE(_Mode)<>"N"
        _Mode=0
ENDIF
DO CASE
        CASE _Mode=0
                _Mode=0
        CASE _Mode=1
                _Mode=1
        CASE _Mode=2
                _Mode=2
        OTHERWISE
                _Mode=0
ENDCASE
IF VARTYPE(_Mess)<>"C"
        _Mess="GB"
ENDIF
DO CASE
        CASE UPPER(_Mess)="B"
                _Mess="Byte"
                _nDiv=1
        CASE UPPER(_Mess)="KB"
                _Mess="KB"
                _nDiv=1*1024
        CASE UPPER(_Mess)="M"
                _Mess="MB"
                _nDiv=1*1024*1024
        CASE UPPER(_Mess)="GB"
                _Mess="GB"
                _nDiv=1*1024*1024*1024
        OTHERWISE
                _Mess="GB"
                _nDiv=1*1024*1024*1024
ENDCASE
_objWMIService=GetObject("winmgmts:" +;
        "{impersonationLevel=impersonate}!\\" +;
        GETENV("computername")+"\root\cimv2")
_colDisks=_objWMIService.ExecQuery;
        ("Select * from Win32_LogicalDisk Where DriveType = "+_DriveType)
        && 3 disini merujuk pada Fixed Disk
        && Jika ingin yang flash disk, silakan 3 diganti 2 sbb:
        &&_colDisks=_objWMIService.ExecQuery;
        && ("Select * from Win32_LogicalDisk Where DriveType = 2")
_iCek=0
FOR EACH objDisk IN _colDisks
         IF objDisk.DeviceID=UPPER(_cDrive)+":"
                _cFreeSpace=objDisk.FreeSpace
                _cTotalSpace=objDisk.Size
                _iCek=1
        ENDIF
ENDFOR
IF _iCek=0
        *=MESSAGEBOX("Drive "+_cDrive+": "+"not found!",16,"Invalid Drive",1000)
        _cFreeSpace=-1
        _cTotalSpace=-1
        _cTotalUsage=-1
ELSE
        _cFreeSpace=VAL(_cFreeSpace)/_nDiv
        _cTotalSpace=VAL(_cTotalSpace)/_nDiv
        _cTotalUsage=_cTotalSpace-_cFreeSpace
ENDIF
* Untuk Test :
* ? _cFreeSpace
* ? _cTotalSpace
* ? _cTotalUsage
RETURN IIF(_Mode=0,_cTotalSpace,IIF(_Mode=1,_cFreeSpace,_cTotalUsage))

Sabtu, 15 Desember 2007

Membaca isi file TXT dengan Visual Foxpro


&& Fungsi untuk membaca isi file TXT
&& Parameter _NamaFile : Nama File kengkap dengan lokasinya
&& Return : String hasil pembacaan file TXT
&& Jika Nama file tak ditemukan nilai return = ""

FUNCTION BacaIsiFile
PARAMETERS _NamaFile
_Balik=""
IF VARTYPE(_NamaFile)<>"C"
        RETURN _Balik
ENDIF
IF EMPTY(_NamaFile) .or. !FILE(_NamaFile)
        RETURN _Balik
ENDIF
gnFileHandle=FOPEN(_NamaFile)
nSize= FSEEK(gnFileHandle,0,2)
IF nSize <= 0
        RETURN _Balik
ELSE
        =FSEEK(gnFileHandle,0,0)
         _Balik=FREAD(gnFileHandle, nSize)
ENDIF
=FCLOSE(gnFileHandle)
RETURN _Balik

Jumat, 14 Desember 2007

Menulis di file TXT dengan Visual Foxpro


&& Fungsi ini untuk menulis Memo di file
&& PARAMETERS _IsiText : Text yang akan ditulis di file
&& PARAMETERS _NamaFile : Nama file yang akan dibuka untuk ditulisi
&& PARAMETERS _Mode : 0 Jika , 1 jika , 2 Jika
&& Catatan :
&& Untuk menulis file text yang terdiri dari beberapa baris harus diberikan command new line dan 
&&  return, contoh untuk menulis :
&& "Ini Contoh Menulis 3 baris"
&& "Baris pertama Awal"
&& "Baris kedua Akhir"
&& Maka parameter _IsiText harus ditulis sbb "
&& _IsiText=CHR(10)+"Ini Contoh Menulis 3 baris"+;
&& CHR(10)+"Baris pertama Awal"+CHR(13)+;
&& CHR(10)+"Baris kedua Akhir"+CHR(13)

FUNCTION TulisdiFile
PARAMETERS _IsiText,_NamaFile,_Mode
IF VARTYPE(_NamaFile)<>"C"
        _NamaFile=SYS(1)+SYS(2)
ENDIF
IF EMPTY(_NamaFile)
        _NamaFile=SYS(1)+SYS(2)
ENDIF
IF VARTYPE(_IsiText)="N"
        _IsiText=ALLTRIM(STR(_IsiText))
ENDIF
IF VARTYPE(_IsiText)<>"C"
        _IsiText=""
ENDIF
IF VARTYPE(_Mode)<>"N"
        _Mode=0
ENDIF
IF _Mode<0 .or. _Mode>2
        _Mode=0
ENDIF
IF FILE(_NamaFile)
        _CodeErr=FOPEN(_NamaFile,12)     && Buka untuk ditulisi (read/write)
ELSE
        _CodeErr=FCREATE(_NamaFile) && Buat file baru
ENDIF
IF _CodeErr<0
        && Jika Error
        WAIT WINDOW NOWAIT "Can't open or create output file"
ELSE  
        && Jika file bisa akses
        =FWRITE(_CodeErr ,_IsiText)
ENDIF
&& Tutup File
=FCLOSE(_CodeErr)
DO CASE
        CASE _Mode=0
                _balik=_NamaFile
        CASE _Mode=1
                _balik=_CodeErr
        OTHERWISE
                _Balik=_CodeErr
ENDCASE
RETURN _Balik

Kamis, 13 Desember 2007

Menentukan Tanggal Awal Bulan dengan Visual Foxpro


&& Menentukan tanggal 1 dari tanggal yang diberikan
&& Parameter dan nilai return bertype date
&& Misal TanggalAwal(Date()), TanggalAwal()

FUNCTION TanggalAwal
PARAMETERS _xtglnya
IF VARTYPE(_xtglnya)<>"D"
        _xtglnya=DATE()      && Boleh juga diberi nilai return CTOD("")
ENDIF
RETURN _xtglnya-DAY(_xtglnya)+1


Rabu, 12 Desember 2007

Huruf Besar Dari Suatu Kalimat dengan Visual Foxpro


&& FUNCTION HurufBesar
&& PARAMETERS _kalimat , dimana _kalimat adalah kalimat yang diberikan
&& Fungsi untuk mengambil huruf besar dari suatu kalimat
&& HurufBesar("SAhaYa Mau Pergi")
&& Hasil "SAYMP"
&& Untuk kalimat acak, gunakan proper() sebelum menggunakan function huruf besar
&& Contoh : HurufBesar("paulus prometheus kalkulus")
&& Hasil ""
&& Jika pakai xproper :
&& HurufBesar(proper("paulus prometheus kalkulus"))
&& Hasil PPK

FUNCTION HurufBesar
PARAMETERS _kalimat
_balik=""
FOR _kei=1 TO LEN(ALLTRIM(_kalimat))
        _huruf=SUBSTR(_kalimat,_kei,1)
        IF ISUPPER(_huruf)
                _balik=_balik+_huruf
        ENDIF
NEXT
RETURN _balik

Menghapus Folder dengan Visual Foxpro


&& FUNCTION HapusFolder
&& Untuk hapus folder beserta isi-isinya (sikat habis)
&& Return -1 jika folder tak ada
&& Return 0 jika gagal dihapus
&& Return 1 jika berhasil dihapus
&& Function akan error jika folder yang dihapus adalah folder system

FUNCTION HapusFolder
PARAMETERS _fol2del
IF VARTYPE(_fol2del)<>"C"
        _fol2del=""
ENDIF
IF !DIRECTORY(_fol2del)
        RETURN -1
ENDIF
fso=createobject('Scripting.FileSystemObject')
fldr=fso.DeleteFolder(_fol2del)
RETURN IIF(DIRECTORY(_fol2del),0,1)

Selasa, 11 Desember 2007

Membaca dari Kanan dengan Visual Foxpro


&& Function BacaDrKanan
&& Untuk membalik (membaca dari kanan ke kiri) kata/kalimat yang diberikan
&& Parameter :
&& _Kalimat=Kalimat yang akan dibaca dari kanan ke kiri
&& _Mode=0 tak perlu alltrim, 1 dialltrim
&& Contoh :
&& BacaDrKanan("X:\Temp\") ===> "\pmeT\:X"
&& BacaDrKanan("X:\Temp\   ") ===> "\pmeT\:X"
&& BacaDrKanan("X:\Temp\   ",1) ===> "   \pmeT\:X"


FUNCTION BacaDrKanan
PARAMETERS _Kalimat,_Mode
IF VARTYPE(_Mode)="C"
        _Mode=VAL(_Mode)
ENDIF
IF VARTYPE(_Mode)<>"N"
        _Mode=0
ENDIF
IF _Mode<0 .or. _Mode>1
        _Mode=0
ENDIF
IF VARTYPE(_Kalimat)<>"C"
        _Kalimat=""
ENDIF
IF _Mode=0
        _Kalimat=ALLTRIM(_Kalimat)
ENDIF
_Balik=""
_LenKalimat=LEN(_Kalimat)
FOR _Kei=0 TO LEN(_Kalimat)-1
        _Balik=_Balik+SUBSTR(_Kalimat,_LenKalimat-_Kei,1)
NEXT
RETURN _Balik

Kamis, 29 November 2007

Menentukan Nama Hari dengan Visual Foxpro


&& Function NamaHariKe
&& Untuk mentukan nama selain dalam bahasa inggris
&& PARAMETERS _Date,_En   >>>> Tanggal dan Logical .F. Jika dalam bahasa Indonesia
&& RETURN : String >>> Senin, Selasa, Rabu, Kamis, Jum'at, Sabtu atau Minggu

FUNCTION NamaHariKe
PARAMETERS _Date,_En
IF VARTYPE(_Date)<>"D"
        _Date=DATE()
ENDIF
IF VARTYPE(_En)<>"L"
        _En=.f.
ENDIF
_balik=cdow(_Date)
IF !_En
        DO CASE
                CASE UPPER(_balik)="SUN"
                        _balik="Minggu"
                CASE UPPER(_balik)="MON"
                        _balik="Senin"
                CASE UPPER(_balik)="TUE"
                        _balik="Selasa"
                CASE UPPER(_balik)="WED"
                        _balik="Rabu"
                CASE UPPER(_balik)="THU"
                        _balik="Kamis"
                CASE UPPER(_balik)="FRI"
                        _balik="Jumat"
                CASE UPPER(_balik)="SAT"
                        _balik="Sabtu"
                OTHERWISE
                        _balik="Err"
        ENDCASE
ENDIF
RETURN _balik

Rabu, 28 November 2007

Konversi Hexadesimal ke Desimal dengan Visual Foxpro


&& FUNCTION Hex2Dec untuk mengubah Hexadesimal menjadi desimal
&& Parameter :
&& _HexNum
&& Contoh :
&& Hex2Dec("FF") ==> 255
&& Hex2Dec("F1") ==> 241
&& Hex2Dec("10") ==> 16

FUNCTION Hex2Dec
PARAMETERS _HexNum
IF VARTYPE(_HexNum)="N"
        _HexNum=ALLTRIM((STR(_HexNum)))
ENDIF 
IF VARTYPE(_HexNum)<>"C"
        _HexNum=""
ENDIF
_Balik=0 
FOR kei=LEN(_HexNum) TO 1 STEP -1
        _Balik=_Balik+(Hex2DecTbl(SUBSTR(_HexNum,kei,1)))*16^(LEN(_HexNum)-kei)
NEXT 
RETURN _Balik

FUNCTION Hex2DecTbl
PARAMETERS __HexNum
IF VARTYPE(__HexNum)="N"
        __HexNum=ALLTRIM(STR(__HexNum))
ENDIF 
IF VARTYPE(__HexNum)<>"C"
        __HexNum=""
ENDIF 
__HexNum=UPPER(LEFT(__HexNum,1))
DO CASE 
        CASE __HexNum="0"
                __Balik=0
        CASE __HexNum="1"
                __Balik=1
        CASE __HexNum="2"
                __Balik=2
        CASE __HexNum="3"
                __Balik=3
        CASE __HexNum="4"
                __Balik=4
        CASE __HexNum="5"
                __Balik=5
        CASE __HexNum="6"
                __Balik=6
        CASE __HexNum="7"
                __Balik=7
        CASE __HexNum="8"
                __Balik=8
        CASE __HexNum="9"
                __Balik=9
        CASE __HexNum="A"
                __Balik=10
        CASE __HexNum="B"
                __Balik=11
        CASE __HexNum="C"
                __Balik=12
        CASE __HexNum="D"
                __Balik=13
        CASE __HexNum="E"
                __Balik=14
        CASE __HexNum="F"
                __Balik=15
ENDCASE 
RETURN __Balik