Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

INI files - lista svih kljuceva za dati odeljak

[es] :: Visual Basic 6 :: INI files - lista svih kljuceva za dati odeljak

[ Pregleda: 1946 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

unisoft
Uzice

Član broj: 124050
Poruke: 346
*.adsl.verat.net.



+1 Profil

icon INI files - lista svih kljuceva za dati odeljak15.09.2011. u 09:29 - pre 152 meseci
Na primer imamo sledecu strukturu jednog INI fajla:

Code:

C:\MyFirstIni.inf 'nalazi se na ovoj lokaciji

[KLJUCEVI]
   odstana=3
   odkola=2
   odvikendice=5

[AUTI]
   alfa=17
   bmw=8
   mercedes=31



Odeljak: KLJUCEVI i AUTI
Kljuc: odstana, odkola, odvikendice, alfa, bmw, mercedes

Potrebno mi je da kada se izvrsi load dogadjaj forme da u jedan ComboBox ucita sve odeljke, a posto izaberem neki od odeljaka u drugi ComoboBox treba da se ucitaju liste kljuceva za dati odeljak. Kada izberem kljuc iz liste u TextBox na formi se ucitava vrednos od tog kljuca.

Ovo moze da se resi sto ja zelim i preko BASIC coda za rad sa fajlovima ali zanima me postoji li neka API funkcija koja ovaj problem reseva? Trebalo bi previse redova koda da bi se to odradilo. Prvo da procita dati INI fajl red po red i da trazu u tom redu postoje li sledeci znakovi [ i ] ako postoje preko Mdi$ funkcije procitam string odeljka itd... mnogo komplikovano, ne tesko samo previse redova koda.

Ako neko od vas zna za neko elegantno resenje za ovaj problem zamolio bih ga da postavi u postu.

Hvala unapred...
 
Odgovor na temu

Shon3i
Beograd

Član broj: 85406
Poruke: 1173
*.dynamic.sbb.rs.



+56 Profil

icon Re: INI files - lista svih kljuceva za dati odeljak19.09.2011. u 17:41 - pre 152 meseci
Resava se preko API-a GetPrivateProfileString i veoma je prosto recimo konkretno u tvom primeru napravis recim funkciju

Code:

Public Function ReadINILine(ByVal Section as string, ByVal Key As String, ByVal Defvalue As String, byval Inifile as string) As String

Dim lnRet As Long
Dim stBuffer As String

stBuffer = String(MAX_PATH, Chr(0))
lnRet = GetPrivateProfileString(Section, ByVal Key, Defvalue, stBuffer, MAX_PATH, Inifile )

If lnRet > 0 Then
    ReadINILine= Trim(StringFromBuffer(stBuffer))
Else
    ReadINILine= ""
End If

End Function


i pomocna f-ja koja detektuje i cisti nullchar koji ostavlja api kad iscita polje.

Code:

Public Function StringFromBuffer(ByVal Buffer As String) As String
Dim i As Integer
i = InStr(Buffer, Chr$(0))
If i > 0 Then
    StringFromBuffer = Left$(Buffer, i - 1)
Else
    StringFromBuffer = Buffer
End If
End Function


Ti jedino sto treba da pozoves:

Code:

nekapromenjiva = ReadINILine ("KLJUCEVI","odstana","", "c:\zzz.ini")


i kao rezultat funkicije dobices 3

E sad sve ovo moze da se skrati jos dodatno na manje koda

 
Odgovor na temu

unisoft
Uzice

Član broj: 124050
Poruke: 346
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: INI files - lista svih kljuceva za dati odeljak20.09.2011. u 09:00 - pre 152 meseci
Pazi ovako, nisi me ti razumeo. Ja znam da procitam vrednosti kljuca za dati odeljak. Meni treba da za dati odeljak procitam sve KLJUCEVE, a ne njihove vrednosti.

Code:

C:\MyFirstIni.inf 'nalazi se na ovoj lokaciji

 [KLJUCEVI]
    odstana=3
    odkola=2
    odvikendice=5

 [AUTI]
    alfa=17
    bmw=8
    mercedes=31


Za dati ini fajl meni funkcija treba da vrati nazive svih odeljaka. U ovom slucaju *.ini fajl ima 2 odeljka i to su: kljucevi i auti. Kada funkciji prosledim naziv odeljka treba da mi vrati sve kljuceve za dati odeljak, a to su: odstana, odkola, odvikendice (nazive, a ne vrednosti).


Za formu sa slike kada se pokrene dogadjaj LOAD forme u ComboBox Odeljak potrebno je da se ucitaju svi odeljci iz datog ini fajla. Kada u ComoboBox listi izaberem neki odeljak potrebno je da se u drugi ComobBox Kljucevi ucitaju nazivi svih Kljuceva, a posto izaberem kljuc iz liste da se prikaze njegova vrednost.

[Ovu poruku je menjao unisoft dana 20.09.2011. u 10:12 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Shon3i
Beograd

Član broj: 85406
Poruke: 1173
*.adsl.absolutok.net.



+56 Profil

icon Re: INI files - lista svih kljuceva za dati odeljak20.09.2011. u 10:44 - pre 152 meseci
Moze i tako samo moraces da primenis i funkciju GetPrivateProfileSection http://msdn.microsoft.com/en-u...ary/ms724348%28v=VS.85%29.aspx. Kombinacijom tih funkcija dobices bas ono sto trazis. E sad verujem da vec mislis da ti je ipak da sam ispitujes i trimujes, veruj mi nije, ovo je puno elegantnije resenje.
 
Odgovor na temu

[es] :: Visual Basic 6 :: INI files - lista svih kljuceva za dati odeljak

[ Pregleda: 1946 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.