Newsgroup: it.comp.lang.visual-basic
Titolo: Domanda banale, Path di un file

Esiste una funzione precotta per ottenere il path di un file
c:\mydir\myfile.ext --> c:\mydir
Grazie
Kirys
--------------------------------------------------
Brayan Fix Kirys Solfory
E-Mail: 
Ki...@technologist.com
 
For Free Software go to: 
http://Kiryssoft.cjb.net

c:\mydir\myfile.ext --> c:\mydir
Ciao,
non sono mai riuscito a trovarla, perciò uso funzioni del tipo:
public function GetFilePath(byval path as string) as string
dim startpos as integer
startpos = 1
do while instr(startpos, path, "\") > 0
 startpos = instr(startpos, path, "\") + 1
loop
if startpos > 1 then
    GetFilePath = left$(path, startpos - 2) ' 2 per non restituire il "\"
finale
 else
    GetFilePath = ""
end if
end function
Dovrebbe funzionare, controlla eventualmente il tipo di input (se uno ti
passa una directory, cosa devi restituire? La stessa dir, o la dir parent?)
(Naturalmente da qualche parte una funzione di libreria che fa' questo ci
sarà senz'altro... :o))
Ciao e buon lavoro
Sig
_________________________________________________________
Luca Sigfrido Percich              
sigf...@tiscalinet.it
_________________________________________________________
non avere stile è il mio stile

Grazie
Niente di precotto, questa è surgelata:
Public Function GetPath(nomefile As String) As String
    Dim path As String
 
    path = Left(nomefile, InStrRev(nomefile, "\"))
 
    GetPath = path
End Function
L'ho prelevata dal mio freezer.
---
Vorrei vedere le piramidi di Cheope,
ma sono miope, ma sono miope.
---

Ciao,
potrebbe andare anche
Function TrovaPercorso(Percorso As String) As String
Dim Posizione As Integer
Posizione = Len(Percorso)
Do While Mid(Percorso, Posizione, 1) <> "\"
 DoEvents
 Posizione = Posizione - 1
Loop
TrovaPercorso = Mid(Percorso, 1, Posizione)
'se non vuoi lo "\" finale sarà Posizione -1
End Function
beppe
--
-----------------------------------------------------------
Togliere <antispam> dall'indirizzo
-----------------------------------------------------------
E-mail : mg<antispam>@
comune.cento.fe.it
Visita 
http://comune.cento.fe.it/wwfaf

    path = Left(nomefile, InStrRev(nomefile, "\"))
Eh? InStrRev??? azzzz....non si finisce mai di imparare...
ma perché Right$() non si chiama LeftRev$() ???? :)
Sig

Sig


For Free Software go to: 
http://Kiryssoft.cjb.net
Grazie a tutti :D


 c:\mydir\myfile.ext --> c:\mydir
Per chi non ha VB6, ma anche per chi ce l'ha, se vuole:
    Dim strPathName$
    Dim strPath$
    Let strPathName = "c:\mydir\myfile.ext"
    Let strPath _
      = Left$( _
        strPathName _
      , Len(strPathName) - Len(Dir$(strPathName)) - 1)
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

 End Function
Public Function GetPath(strNomeFile As String) As String
    If Len(strNomeFile) = 2 And Right$(strNomeFile, 1) = ":" Then
        GetPath = strNomeFile
    Else
        Dim DoveBarra As Integer
        DoveBarra = InStrRev(strNomeFile, "\")
        If DoveBarra <> 0 Then _
            GetPath = Left$(strNomeFile, DoveBarra - 1)
    End If
End Function
(cosě funziona anche se uso "c:" o "s:")
Ciao
Faber

...
questo ti ritorna il strPathName meno l'ultimo carattere.
beppe
-----------------------------------------------------------
Togliere <antispam> dall'indirizzo
-----------------------------------------------------------
E-mail : mg<antispam>@
comune.cento.fe.it
-----------------------------------------------------------
Visita il sito del WWF AltoFerrarese
http://comune.cento.fe.it/wwfaf
-----------------------------------------------------------

 questo ti ritorna il strPathName meno l'ultimo carattere.
Non esattamente. La faccenda e` piu` delicata. Usando "Dir",
questo metodo funziona solo se il file esiste. Forse l'hai
provato cosi` come sta e probabilmente nel tuo pc non esiste
una cartella di nome "mydir" contenente un file di nome
"myfile.ext"...;-)
A rigore, bisognerebbe anche aggiungere:
    If Len(strPath) = 2 _
    Then _
      Let strPath = strPath & "\"
Quindi...
Option Explicit
Public Sub Main( _
)
  Dim strPathName$
  Dim strPath$
  Dim strFileName$
  Let strPathName = "c:\mydir\myfile.ext"
  Call GetPathAndFileName( _
    strPathName, strPath, strFileName)
  Debug.Print "Il file '";
  If Len(strFileName) Then
    Debug.Print _
        strFileName; "' si trova nella cartella '" _
      ; strPath;"'";
  Else
    Debug.Print strPathName; "' non esiste";
  End If
  Debug.Print "."
End Sub
Public Sub GetPathAndFileName( _
  ByVal PathName$ _
, ByRef Path$ _
, ByRef FileName$ _
)
  Dim intLenFileName%
  Let FileName = Dir$(PathName)
  Let intLenFileName = Len(FileName)
  If intLenFileName Then
    Let Path _
      = Left$( _
        PathName _
      , Len(PathName) - intLenFileName - 1)
    If Len(Path) = 2 _
    Then _
      Let Path = Path & "\"
  End If
End Sub


End Function
ops :D instrrev in vb5 non c'e' :D


 (così funziona anche se uso "c:" o "s:")
ehmmmmm.......
in verità non serve a niente eheheh si vede che l'ora era abbastanza tarda
:)
Faber