Senin, 29 April 2013

Gambas 3 Bab 9 : Bekerja dengan File (Bagian 2)

IsDir


Fungsi IsDir mengembalikan TRUE jika path menunjuk ke sebuah direktori. Jika path tidak ada atau bukan sebuah direktori, fungsi ini mengembalikan FALSE. Konvensi pemanggilan adalah:

Boolean = IsDir ( Path )

Beberapa contoh bagaimana menggunakan IsDir, sebagaimana diatur pada Wiki Gambas berikut:

PRINT IsDir("/etc/password")
False
PRINT IsDir(Application.Home &/ ".gambas")
True
PRINT IsDir("/windows")
False

Stat


Fungsi Stat mengembalikan informasi tentang file atau direktori. File informasi objek dikembalikan meliputi jenis, ukuran, tanggal modifikasi terakhir / waktu, perizinan, dll properti file berikut dapat diperoleh dengan menggunakan fungsi ini:



 
.Group                        .Hidden                 .LastAccess                 .LastChange                .LastModified         .Link .Mode           
.Path                          .Perm                   .SetGID                 
.SetUID .Size                       .Sticky                 .Time                       .Type .User 


Standar konvensi pemanggilan untuk Stat adalah:

File info = Stat (Path)

Berikut adalah contoh bagaimana menggunakan Stat dan apa yang akan kembali dari konsol:

WITH Stat("/home")
PRINT .Type = gb.Directory
PRINT Round(.Size / 1024); "K"
END WITH

konsol akan merespon dengan :


True
4K

Mari kita mengalihkan perhatian kita sejenak untuk memeriksa sintaks di atas. Sebagaimana yang anda ingat dari Bab 2, "WITH .. END WITH" Pernyataan ini terutama digunakan untuk menetapkan nilai properti. Ekspresi Sebuah awal dengan titik (".") Terletak antara WITH dan END WITH mengacu pada objek dinamai WITH - dalam hal ini, "/ home" subdirektori. "Gb" adalah kelas statis yang mencakup semua konstanta Gambas dasar yang digunakan oleh banyak fungsi. "Gb.Directory" adalah konstanta flag yang digunakan oleh properti Stat.Type untuk menunjuk direktori. Ketika fungsi Stat itu dipanggil dengan argumen path file, nilai Stat.Type disediakan dibandingkan dengan flag gb.Directory. Karena Stat.Type tidak dapat diberi nilai yang berbeda dari apa yang laporan sistem, kesetaraan dalam hal ini bukanlah hasil suatu tugas. Gambas memperlakukan sebagai ujian Boolean dari apakah atau tidak ini path khusus, seperti yang dilaporkan oleh sistem, memiliki flag gb.Directory diatur ke TRUE. Stat.Size mengembalikan ukuran file atau direktori. Untuk PRINT ukuran direktori dalam bentuk kilobyte, nilai (dalam bytes) dikembalikan oleh Stat.Size dibagi dengan 1024 byte / kilobyte, maka dibulatkan ke integer terdekat dengan fungsi Round, yang akan kita jumpai dalam Bab 10.

Temp / Temp$


Temp $ mengembalikan nama file yang unik yang berguna untuk membuat file-file sementara. Nama file dibuat akan berada di direktori / tmp. Konvensi pemanggilnya adalah:

File name = Temp$([Name])

Path yang dikembalikan dalam bentuk berikut:

/tmp/gambas.[User ID]/[Process ID]/[Name].tmp

Jika tidak ada nama file prefiks opsional disertakan, maka Gambas akan menetapkan integer sebaliknya, dan bilangan bulat berurutan untuk menambahkan file sementara.

Contoh :

PRINT Temp$()

kembali:

/tmp/gambas.0/12555/1.tmp
PRINT Temp$(another)

kembali:

/tmp/gambas.0/12555/another.tmp

 

OPEN and CLOSE



OPEN dan CLOSE bekerja sebagai sebuah tim. OPEN membuka file untuk membaca, menulis, membuat atau menambahkan data. Kecuali kata kunci CREATE ditentukan, file tersebut harus ada. Jika kata kunci CREATE yang ditentukan, maka file dibuat, atau dihapus jika sudah ada. Jika file yang dibuka untuk menulis, path untuk itu harus mutlak karena path relatif adalah, secara default, diasumsikan untuk merujuk ke file yang ada di dalam proyek Gambas saat ini atau folder arsip. Memanggil konvensi untuk OPEN adalah:

file = OPEN path/filename FOR [ READ|INPUT ] [ WRITE|OUTPUT ] [ CREATE | APPEND ] [ WATCH ]

Jika kata kunci APPEND yang ditentukan, maka pointer file akan dipindahkan ke akhir file setelah file dibuka. Jika Anda menggunakan INPUT atau OUTPUT, maka input-output adalah buffer. Jika Anda menggunakan kata kunci READ or WRITE, input-output bukan buffer. Jika kata kunci WATCH ditentukan, file tersebut dilihat oleh interpreter menggunakan pedoman kondisional berikut:

  1. Jika setidaknya satu byte dapat dibaca dari file tersebut, maka handler File_Read event () dipanggil.
  2. Jika setidaknya satu byte dapat ditulis ke dalam file, maka handler File_Write event () dipanggil.
Catatan tentang "Endianness" dan "Streaming": Untuk tujuan kami, "Endianness" mengacu pada urutan byte byte disimpan dalam file data. Jika byte paling signifikan disimpan dalam posisi pertama, diikuti oleh byte decreasingly signifikan, maka format adalah "big-endian". Sebuah contoh dari konsep big-endian akan menjadi nomor "dua puluh empat". Dalam "little-endian" format, byte paling signifikan yang dihadapi terlebih dahulu. Jumlah yang sama, diungkapkan dalam format little-endian, akan menjadi "dua puluh empat". Endianness penting ketika Anda ingin membaca data dari "stream" sebagai data biner. "Stream" mengacu untuk mengakses setiap file dari sebuah proses, apakah itu aliran terbatas seperti file pada disk, atau aliran tak terbatas seperti data dari videocam atau data yang dikirimkan melalui internet melalui TCP (Transmission Control Protocol).


Contoh-contoh berikut menunjukkan bagaimana untuk membaca data dari file BMP, dikenal menggunakan format little-endian:

DIM hFile AS File
DIM iData AS Integer
hFile = OPEN "image.bmp" FOR INPUT
hFile.ByteOrder = gb.LittleEndian
...
READ #hFile, iData

CLOSE adalah fungsi timbal balik dan hanya menutup sebuah file yang dibuka. Sintaks untuk menggunakan CLOSE adalah:

CLOSE # File

Disini sebuah contoh tentang membuka dan menutup file :

' Gambas Class File
sCurrentFileName AS String
sCurrentFileLength AS Integer
PUBLIC SUB Form_Open()
DIM sInputLine AS String
DIM hFileIn AS File
sCurrentFileName = "The Raven.txt"
IF Exist(sCurrentFileName) THEN
hFioleIn = OPEN sCurrentFileName FOR READ
sCurrentFileLength = Lof(hFileIn)
WHILE NOT Eof(hFileIn)
LINE INPUT #hFileIn, sInputLine 'explained below
TextArea1.Text= TextArea1.Text & Chr(13) & Chr(10) & sInputLine
WEND
CLOSE hFileIn
ELSE
Message.Info("File " & sCurrentFileName & " does not exist.")
ENDIF
END
 

4 komentar:

  1. Kang mau tanya tentang script
    tau gak script yang bikin button buka terminal,
    button mengetik perintah di terminal dan menampilkan proses di terminal pada gambas.
    juga button untuk menutup terminal

    BalasHapus
    Balasan
    1. Maaf untuk Saudara Teuku, Saya tidak bisa menjawab pertanyaan Saudara, karena saya sendiri sedang mempelajari Gambas, Saya rekomendasikan masuk ke Group Gambas di FB. Mohon maaf sekali lagi.

      Hapus
  2. Akang, kenapa berhenti mentranslate ?

    tolong diselesaikan dong pentrenslate tanya. Sangat bermanfaat kang :)

    BalasHapus
  3. Wah maaf Kang Azrul, jika anda menunggu translate berikutnya, dua tahun saya disibukkan oleh pekerjaan sebagai guru. Mudah2an dalam waktu bisa meneruskan terjemahannya.

    BalasHapus