Minggu, Juni 01, 2008

Default Path Direktory.

Tiba tiba saya tergelitik untuk membahas perbedaan antara command Sys(5)+Sys(2003) dengan Sys(16) untuk menentukan Direktori dimana Program kita berada.

Banyak rekan-rekan sesama Foxers menyarankan untuk menggunakan yang pertama . Alasannya paling simple, cukup dengan membuat command tersebut, maka default Path Direktory dimana Program kita berada sudah Ok. Praktis dan mudah.

Tapi tahukan anda jika tidak hati2 maka penggunaan command pertama tsb bisa bermasalah.

Berdasarkan Help VFP sendiri:
Sys(5) = Default drive or volume.
Sys(2003) = Current directory.
Jadi dengan menjalan command tsb, system akan menempatkan default direktori secara otomatis ketempat mana dia diexecutin. Ketika kita menjalankan program dari direktori asal program tsb, maka secara otomatis default direktory juga terset ketempat itu.

Tapi apa jadinya jika kita tidak meng executing program dari tempat tersebut ?

Misal, pertama kali membuka program Microsfoft Visual Foxpro 9 yang mana defaultnya adalah HOME()="C:\Program Files\Microsoft Visual Foxpro 9\". Nah, tentu saja Perintah Sys(5)+Sys(2003) justru akan mengacaukan alamat default direktori program yang sudah kita rancang. Karena default tidak berada ditempat semestinya tapi justru di HOME() dari VFP itu sendiri.

Bagaimana dengan command Sys(16) yang menurut Help Vfp sendiri berarti 'Executing program file name'.

Justru menurut saya ini adalah langkah paling aman yang mesti gunakan. Walau dalam penggunaan command ini sedikit lebih ribet dan panjang dari langkah pertama , tapi default program kita lebih terjamin berada ditempat yang seharusnya.

Berikut adalah modifikasi prosedur yang selama ini saya mamfaatkan selama ini untuk membuat sebuah program awal (main procedur), barangkali bisa bermamfaat bagi rekan2 sesama fox mania.

Public PbPath
cCurr= Sys(16,1)
nPath= At(":",cCurr)-1
If nPath<1 npath="1">&&& Fungsi ini boleh diabaikan karena hanya bermamfaat untuk menghilangkan error yang tidak perlu, jika Program kita executing dari jaringan Network.
Endif
lPath = Rat("\", cCurr) -
(nPath)
PbPath=Alltrim(Substr(cCurr, nPath, lPath))
* Publis Global Variable bermamfaat saat suatu ketika kita memindahkan default ke tempat lain
dan untuk mereset ke Direktory awal cukup dengan merecallnya kembali. Anda Boleh juga mengabaikan untuk mempublis fungsi ini untuk memperpendek pengetikan prosedure.
Set Default To (PbPath)
Jauh lebih panjang dari cuma membuat command Sys(5)+Sys(2003), akan tetapi kita lebih terjamin berada di default direktory yang sebenarnya.

1 komentar:

Anonim mengatakan...

Informasi yang saya cari. Terima kasih seribu kali seribu Pak.

tanto