Support http://amicus.ba with small donation

Za čitanje i upis sadržaja u neku datoteku na lokalnom disku, prvo je potrebno, na odgovarajući način pristupiti toj datoteci.

Postoji više načina otvaranja datoteke. Sintaksa u opštem slučaju je sljedeća:

Open Putanja/Ime For način As BrojDatoteke

OUTPUT način otvaranja datoteke

OUTPUT način otvaranja datoteke, ako ona ne postoji kreira novu i upisuje podatke u datoteku. Ako datoteka već postoji, biće prebrisana novim podacima. Stavke se upisuju sekvencijalno i to svaka stavka u novi red datoteke. Sintaksa otvaranja datoteke (sa željenom extenzijom) je sljedeća:

Open CurDir & "\setup.ini" For Output As 1

   Write #1, podatak1

   Write #1, podatak2

Close #1

Gdje su podatak1 i podatak2 neke varijable inicijalizirane prije u programu. Ne zaboraviti zatvoriti datoteku, sa Close nakon završenih operacija jer će se javiti greška ako se ponovo pokuša otvoriti ista datoteka.

INPUT način otvaranja datoteke

INPUT način otvaranja vrši čitanje iz postojeće datoteke. Ako ona ne postoji javlja se greška broj 53. Sintaksa otvaranja datoteke je sljedeća:

Open CurDir & "\setup.ini" For Input As 1

   Input #1, podatak1

   Input #1, podatak2

Close #1

Naredba Line Input #1, linija  učitava čitavu liniju iz otvorene datoteke.

APPEND način otvaranja datoteke

APPEND način otvaranja datoteke omogućava čitanje i pisanje u datoteku. Ako datoteka koja se otvara ne postoji biće kreirana nova sa navedenim imenom. Ako datoteka postoji, ona se otvara i priprema za upis dok će stari podaci biti sačuvani. Sintaksa otvaranja datoteke je sljedeća:

Open CurDir & "\setup.ini" For Append As 1

Upis podataka vrši se na sljedeči način:

Open CurDir & "\setup.ini" For Append As 1

Write #1, podatak1, podatak2

Close #1

Na ovaj način se u datoteci, svakim upisom, stvara red zapisa u kome su stavke odvojene zarezom. Na osnovu poznavanja strukture jednog upisanog reda zapisa vrši se čitanje iz datoteke. Podaci se u postojeću datoteku uvijek dodaju na kraj datoteke, iza zadnjeg zapisa.

Sintaksa za čitanje podataka iz datoteke:

Open CurDir & "\setup.ini" For Append As 1

   Input #1, podatak1, podatak2

Close #1

RANDOM način otvaranja datoteke

Ako, prilikom otvaranja datoteke, datoteka nije postojala otvara se nova sa zadanim imenom. Ako je datoteka postojala, ona se otvara i spremna je za upis i čitanje. Karakteristika ovog načina otvaranja datoteke je da se čitanje i upis vrši na tačno određenu poziciju u datoteci.

Prvo otvoriti datoteku sa:

Open CurDir & "\setup.ini" For Random As 1 Len = Len(podatak1)

Gdje Len(podatak1) predstavlja dužinu podataka koji se upisuju.

Upisivanje podataka se vrši na tačno određenu poziciju u datoteci:

Sintaksa za upis podataka je Put #nd, np, podatak1 gdje nd predstavlja broj datoteke, a np broj pozicije na koju se podatak upisuje.

Open CurDir & "\setup.ini" For Random As 1 Len = Len(podatak1)

   Put #1, 1, podatak1

   Put #1, 2, podatak2

Close #1

Stavka Len = Len(podatak1) određuje dužinu podatka koji se upisuje. Na osnovu toga se vrši upis na tačno određenu poziciju. Važno je da svi podaci koji se upisuju budu iste deklarisane dužine.

Čitanje podataka se vrši sa tačno određene pozicije u datoteci:

Open CurDir & "\setup.ini" For Random As 1 Len = Len(podatak1)

   Get #1, 1, podatak1

   Get #1, 2, podatak2

Close #1

Broj zapisa u datoteci možemo dobiti korištenjem funkcija LOF(nd) – daje dužinu datoteke čiji je broj nd i LEN(podatak) – daje dužinu podatka na sljedeći način:

BrojZapisa= LOF(nd)/LEN(podatak)

Funkcija LOF(nd) daje dužinu datoteke u bajtima.

Upis i čitanje u INI datoteke

Konfiguracijske .ini datoteke se mogu koristiti za upis postavki za više aplikacija ili segmenata aplikacije. Datoteka je organizovana u vidu sekcija koje su označene uglastim zagradama [sekcija]. Upis i čitanje se vrši pomoću API funkcija.

Potrebno je prvo izvršiti sljedeće deklaracije:

Dim x As String

Dim sSection As String, sEntry As String, sDefault As String

Dim sRetBuf As String, iLenBuf As Integer, sFileName As String

Dim sValue As String, sString As String

Private Declare Function GetPrivateProfileString Lib "kernel32" _

       Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _

       lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, _

       ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" _

       Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _

       lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Prije upisa ili čitanja je potrebno definisati sljedeće:

sDefault$ = ""

sRetBuf$ = String$(256, 0) '256 praznih mjesta

iLenBuf% = Len(sRetBuf$)

sFileName$ = CurDir & "\setup.ini" 'Ime ini datoteke sa putanjom

Upis dvije stavke u sekciju STAMPA ide pomoću:

sSection$ = "STAMPA" 'Sekcija

sEntry$ = "IMEIPREZIME" 'Stavka

sString$ = txtprvi1.Text

x = WritePrivateProfileString(sSection$, sEntry$, sString$, sFileName$)

sEntry$ = "TEXTTOP" 'Stavka

sString$ = txtprvi2.Text

x = WritePrivateProfileString(sSection$, sEntry$, sString$, sFileName$)

Upis dvije stavke u sekciju FILTER ide pomoću:

sSection$ = "FILTER"

sEntry$ = "NAZIV"

sString$ = txtdrugi1.Text

x = WritePrivateProfileString(sSection$, sEntry$, sString$, sFileName$)

sEntry$ = "IMEIPREZIME"

sString$ = txtdrugi2.Text

x = WritePrivateProfileString(sSection$, sEntry$, sString$, sFileName$)

Čitanje stavke iz sekcije ide pomoću:

sSection$ = "STAMPA"

sEntry$ = "IMEIPREZIME"

sRetBuf$ = String$(256, 0)

x = GetPrivateProfileString(sSection$, sEntry$, sDefault$, sRetBuf$, iLenBuf%, sFileName$)

txtprvi1.Text = sRetBuf$

Slijedi primjer ini datoteke u koju dva dijela aplikaciji upisuju i iz koje čitaju svoje konfiguracijske postavke:

[STAMPA]

IMEIPREZIME="Ime i Prezime1"

TEXTTOP=6824

[FILTER]

NAZIV="Drugi segment2"

IMEIPREZIME="Ime i Prezime2"

Brisanje datoteke sa diska

Nekada je potrebno, npr. privremeno kreirani file, izbrisati sa diska. Brisanje nekog filea sa diska se vrši pomoću funkcije Kill Putanja/ImeDat

Kill "d:\Temp\brisi.txt"

Ako datoteka koja se briše ne postoji, javlja se greska 53 – file not found. Pomoću metoda za lovljenje greške spriječiti 'pucanje' programa u takvom slučaju.

Brisanje direktorija sa diska

Ako je potrebno izbrisati direktorij sa diska koristiti sljedeći kod:

Set delDIR = New FileSystemObject

delDIR.DeleteFolder "putanja\DirZaBrisanje", True

Set delDIR = Nothing

Napomena: Obratite posebnu pažnju prilikom brisanja bilo koje vrste i korisniku uvijek prikazatu poruku za potvrdu akcije brisanja.