2009-09-13 6 views
-1

Utilisation de VB6Comment obtenir seulement un nom de fichier?

Code.

Dim posn As Integer, i As Integer 
    Dim fName As String 
    posn = 0 
    For i = 1 To Len(flname) 
     If (Mid(flname, i, 1) = "\") Then posn = i 
    Next i 
    fName = Right(flname, Len(flname) - posn) 
    posn = InStr(fName, ".") 
     If posn <> 0 Then 
      fName = Left(fName, posn - 1) 
     End If 
    GetFileName = fName 



FileName: Clockings8.mis06042009 120442.fin 

Mais il montre un nom de fichier est "Clockings8". Il devrait montrer "Clockings8.mis06042009 120442"

Comment modifier un code?

besoin code VB6 Aide

Répondre

3

Il est un peu plus propre à utiliser le composant Scripting.FileSystemObject. Essayez:

Dim fso as New Scripting.FileSystemObject 
GetFileName = fso.GetBaseName(fname) 

La raison pour laquelle votre code s'arrête est que InStr fonctionne depuis le début de la chaîne à la fin et arrête chaque fois qu'il trouve une correspondance. Le nom de fichier "Clockings8.mis06042009 120442.fin" contient deux périodes. Pour cette raison, vous devez utiliser InStrRev à la place pour lancer la recherche à partir de la fin de la chaîne.

+1

Il existe également [GetFileName] (https://msdn.microsoft.com/en-us/library/office/gg264499.aspx), qui inclut l'extension (pour éviter que d'autres personnes effectuent une recherche comme moi, qui avaient besoin d'un VB6 équivalent de 'Path.FileName') – dlatikay

2

Aller avec GetBaseName de FileSystemObject comme David suggère est une bonne idée. Si vous ne pouvez pas ou ne voulez pas (et il y a des raisons pour lesquelles vous ne voulez pas) travailler avec le FileSystemObject il existe une solution simple: Supprimer tous les caractères d'une chaîne de nom commençant par le dernier point du nom.

Voici ce que je veux dire:

Dim fn As String 
fn = "Clockings8.mis06042009 120442.fin" 

Dim idx As Integer 
idx = InStrRev(fn, ".") 
GetFileName = Mid(fn, 1, idx - 1) 

Si votre nom de fichier ne dispose pas d'un extenstion mais a un point quelque part dans la chaîne de nom de fichier, cette méthode renvoie les mauvais résultats.

Questions connexes