Olen tekemässä VB:llä yhtä ohjelmaa, mutta en onnistu millään tekemään hyvin yksinkertaista juttua jossa tiedostonimi erotetaan hakemistopolusta jos tiedostonimen perässä on komentoparametri esim.
"C:\Program Files\Internet Explorer\iexplore.exe" -123
Tällöin ohjelmani kyllä erottaa polun tuosta pois, mutta se tunnistaa samalla tuon kyseisen ohjelman tiedostonimeksi iexplore.exe" -123
Eli siihen jää tuo sitaatti merkki ja perään parametri -123 eli kuinka saisin ohjelmani poistamaan tiedostonimen jälkeen mahdollisesti olevat parametrit ja nuo sitaatti merkit alusta ja lopusta?
Ohjelmani osaa siis jo hakea tiedostonimen koko tiedoston polusta.
"C:\Program Files\Internet Explorer\iexplore.exe" -123
Tällöin ohjelmani kyllä erottaa polun tuosta pois, mutta se tunnistaa samalla tuon kyseisen ohjelman tiedostonimeksi iexplore.exe" -123
Eli siihen jää tuo sitaatti merkki ja perään parametri -123 eli kuinka saisin ohjelmani poistamaan tiedostonimen jälkeen mahdollisesti olevat parametrit ja nuo sitaatti merkit alusta ja lopusta?
Ohjelmani osaa siis jo hakea tiedostonimen koko tiedoston polusta.
Vastaukset 6
Vanhimmat
... siis tätä?
sText arvo siis on iexplore.exe" -123.
lPos = InStr(1, sText, Chr(34))
sResult = Mid$(sText, 1, lPos - 1)
Selostin hieman hankalasti yksinkertaisen asian mutta yritän uudelleen :)
Muuten kirjoittamasi koodi toimi kylläkin mutta jos otan tuosta tuon sitaatti merkin pois niin ei toimikaan enää.
esim. iexplore.exe -123
"C:\Program Files\Internet Explorer\iexplore.exe" -123
Koodini hakee koko tiedostopolusta vain tiedostonimen eli erottaa sen polusta:
iexplore.exe" -123
Jos käytäjä on syöttänyt tiedostonimen perään joitain komentoparametreja niin niistä pitäisi päästä eroon eli tässä tapauksessa -123.
Tämän jälkeen koodini tulisi poistaa kaikki komentoparametrit tiedostonimen perästä eli ohjelmani palauttaisi arvoksi vain pelkästään exe tiedoston nimen (joka voi myöskin olla eri joka kerta):
iexplore.exe
--------------------
"C:\Program Files\Internet Explorer\iexplore.exe" -123
Kaikissa tapauksissa näitä sitaatti merkkejä ei ole tiedostopolun alussa ja lopussa esim. välillä se voi olla vaikkapa:
C:\Program Files\Internet Explorer\iexplore.exe /blaahblaah /12345
tai:
"C:\Program Files\Internet Explorer\iexplore.exe" /blaahblaah /12345
Jolloin toinen koodini joka erottaa taas polun tuosta eikä tiedostonimeä niin siinä polun edessä ei taas saisi olla tuota sitaatti merkkiä eli se koodi taas palauttaisi arvon:
C:\Program Files\Internet Explorer\
Eikä näin:
"C:\Program Files\Internet Explorer\
------
Vielä jotta edes joku tajuaisi niin ohjelmani erottaa koko tiedostopolusta sen tiedostonimen ja polun erilleen.
Välillä tiedostopolun alussa ja lopussa on sitatti merkit jotka pitäisi saada pois jos ne ovat siellä.
Sitten taas välillä jos käyttäjä on syöttänyt komentoparametrejä niin ne pitäisi saada tiedostonimen lopusta pois ja tietysti se sitatti merkki siitä kanssa.
argh! alankin kirjoittamaan kirjaa tästä samantien... puuh...
oletetaan ,että teksti on koodisi palauttama merkkijono
Dim i As Integer
Dim Paikka As Integer
Dim Jälkeen As String
dim Teksti as string
For i = Len(Tteksti) To 1 Step -1
If Mid(Teksti, 1) = "\" Then
Jälkeen = Mid(Teksti 1, 256)
Paikka = InStr(1, Jälkeen, ".")
Jälkeen = Mid(Jälkeen, 1, Paikka 3)
Exit Sub
End If
Next i
...vieläkään :(
Mikset poista "-merkkiä? Tuossa on kaksi esim. muuttujaa... Toisessa on ympärillä "-merkki toisessa ei. Koodin pätkän pitäisi palauttaa kummallakin kerralla sama lopputulos. Replace-funktiota ei muistaakseni ole vielä VB5:ssa, joten toivon, että käytät VB6:sta...
MS1 = "C:\Program Files\Internet Explorer\iexplore.exe /blaahblaah /12345"
MS2 = Chr(34) & "C:\Program Files\Internet Explorer\iexplore.exe" & Chr(34) & " /blaahblaah /12345"
Dim sTmp As String
Dim lPos As Long
lPos = InStrRev(MS1, "\")
sTmp = Mid$(MS1, lPos 1)
sTmp = Replace(sTmp, Chr(34), vbNullString)
lPos = InStr(1, sTmp, Space(1))
sTmp = Mid$(sTmp, 1, lPos - 1)
Kyllä käytän VB6:sta ja koodisi toimi erinomaisesti, kiitos paljon kaikille avuista!