Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: tiedoston luku (almost noobie question) *QB*

Sivun loppuun

juhaz [05.06.2005 16:30:38]

#

Eli kuvitellaan, että minulla on tiedosto ownership.ini jossain hakemistossa (liittyy fake os:iin :D), jossa on lista tiedostoista ja käyttäjien oikeuksista tiedoston suorituksessa.

Tiedosto näyttää tältä

[Readme.txt]
Owner=root
root=rw
juhaz=rw
jokumuu=rw

[Readme2.txt]
Owner=root
root=rw
juhaz=r
jokumuu=

Eli se osaisi erottaa nuo []-merkkien välissä olevat eri tiedostoiksi tai jotain...

juhaz [05.06.2005 19:11:50]

#

Siis osaako kukaan sanoa kuinka tuo oikein tehdään? Itse olen yrittänyt jo varmaan 100 eri kertaan, mutta en mä saa sitä toimimaan :(

hunajavohveli [05.06.2005 19:27:13]

#

Siis koodin pitäisi pätkiä eri tiedostoihin:

Owner=root
root=rw
juhaz=rw
jokumuu=rw

ja

Owner=root
root=rw
juhaz=r
jokumuu=

vai miten?

T.M. [05.06.2005 19:39:04]

#

Miksi se pitää tallentaa juuri tuolla tyylillä?

Koita keksiä helpompi tallennustapa, jos tallennustavalla ei ole väliä.

juhaz [05.06.2005 23:54:20]

#

Niin no mä vaan ajattelin, että tuolla tavalla saisi ohjelman tunnistamaan tiedostot ja samalla tunnistamaan, että onko käyttäjällä oikeuksia kyseisen tiedoston suorittamiseen vaiko ei.

BadSource [06.06.2005 08:35:13]

#

Ini-tiedostojen käsittelyyn on omat api-funktionsa VB:ssä, eli GetPrivateProfileString ja WritePrivateProfileString. Katso nämä...

juhaz [06.06.2005 08:36:59]

#

Ongelma vain on se, että tuo pitäisi olla quickbasicille :D

EDIT: Tuosta tulikin heti ongelma, kun aloin testailemaan visual basicilla tuota.

Private Sub File1_DblClick()
Dim x As Long, arvo As String
    arvo = String(255, " ")
    x = GetPrivateProfileString(File1.FileName, user$, "", arvo, 255, "c:\testi.ini")
    MsgBox arvo

    If arvo = "rw" Then Shell file1.path & "\" & File1.FileName, vbNormalFocus
    MsgBox arvo
End Sub

Myöskään select casella tuo ei toiminut, ei vain käynnisty käyttäjän klikkaama ohjelma vaikka sen arvo on rw, mutta jos jätän noi iffit ja select caset pois, että on pelkkä shell niin sitten toimii. Jotain keinoa saada ohjelma käyntiin iffit tai select casen kanssa?

hunajavohveli [06.06.2005 09:55:30]

#

En nyt ihan vieläkään käsittänyt, mitä haet takaa tässä, mutta kai voit lukea tiedostoa rivi kerrallaan ja sitten, kun joltain riviltä löytyy hakasulkuja, muutat käsittelytapaa eri tiedoston mukaiseksi.

eraggo [06.06.2005 13:22:54]

#

kannattaa erottaa oikeudet ja käyttäjät eri tiedostoihin.. eli siis on olemassa 2 tiedostoa jotka ovat esim. user.ini ja vaikka right.ini (tohon en keksinyt parempaa kutta muuta sitä :)).
ja sitten luet ne rivi kerrallaan.. esim "user.ini" on vaikka #1 ja "right.ini" on #2
loput osaat(?)

jos haluat niin yksi "esimerrki", jonka mä tein joskus niin ois täällä: www.pox.fi/~eraggo
ja sieltä sitten hsp.bas

huom! huonosti kommentointi

eraggo [06.06.2005 16:07:52]

#

jos tulee ton yllä olevan osoitteen kanssa ongelmia sopii ottaa yhteyttä...

juhaz [07.06.2005 15:05:51]

#

Tietääkö joku miksi tuo exen suorittaminen ei onnistu tuon koko pätkän kanssa, mutta sitten yksin ollessaan shell toimii?

tesmu [07.06.2005 17:57:30]

#

juhaz kirjoitti:

Ongelma vain on se, että tuo pitäisi olla quickbasicille :D

EDIT: Tuosta tulikin heti ongelma, kun aloin testailemaan visual basicilla tuota.

Private Sub File1_DblClick()
Dim x As Long, arvo As String
    arvo = String(255, " ")
    x = GetPrivateProfileString(File1.FileName, user$, "", arvo, 255, "c:\testi.ini")
    MsgBox arvo

    If arvo = "rw" Then Shell file1.path & "\" & File1.FileName, vbNormalFocus
    MsgBox arvo
End Sub

Myöskään select casella tuo ei toiminut, ei vain käynnisty käyttäjän klikkaama ohjelma vaikka sen arvo on rw, mutta jos jätän noi iffit ja select caset pois, että on pelkkä shell niin sitten toimii. Jotain keinoa saada ohjelma käyntiin iffit tai select casen kanssa?

koitappa if ucase(replace(trim(arvo),vbcrlf,"")) = "RW" then shell jne

tuo arvo pitää trimmata koska muuten se ottaa koko rivin ja siihen kuuluu välilyöntejä ja joskus tuonne eksyy enttereitä ja sitten ucasella varmistetaan että kirjaimet vastaa


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta