Les Snippets

Connexion

GetUnique - Génération d'un nom de fichier auto-incrémenté

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 17/01/2008 14:18:10 et initié par Renfield [Liste]
Vue : 1409
Catégorie(s) : Fichier / Disque, Algorithme
Langages dispo pour ce code :
- VB6, VBA



Langage : VB6 , VBA
Date ajout : 17/01/2008
Posté par Renfield [Liste]
Private Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Const INVALID_FILE_ATTRIBUTES As Long = &HFFFFFFFF
Public Type PathType
   Folder As String '# Inclue le '\' final
   FileName As String
   FileExt As String '# Inclue le '.'
End Type
'# Permet de découper un chemin en dossier / nom de fichier / extension
Public Function CrackPath(ByVal vsInput As String) As PathType
Dim nPos As Long
   If LenB(vsInput) Then
       nPos = InStrRev(vsInput, "\")
       If nPos Then
           CrackPath.Folder = Left$(vsInput, nPos)
           vsInput = Mid$(vsInput, nPos + 1)
       End If
       
       nPos = InStrRev(vsInput, ".")
       If nPos Then
           CrackPath.FileExt = Mid$(vsInput, nPos)
           CrackPath.FileName = Left$(vsInput, nPos - 1)
       Else
           CrackPath.FileName = vsInput
       End If
   End If
End Function 
'# Permet de tester l'existence d'un fichier (plus fiable que Dir$ qui se plante sur des chemins réseaux manquants Public Function DoesExists(ByRef vsFilePath As String) As Boolean    '# Cette API permet de savoir si le fichier est ReadOnly, etc    '# Elle renvoie INVALID_FILE_ATTRIBUTES si le fichier n'existe pas    DoesExists = (GetFileAttributes(vsFilePath) <> INVALID_FILE_ATTRIBUTES) End Function
'# Fonction permettant de dupliquer un nom de fichier : '# GetUnique ( C:\a.mp3 ) renverra C:\a(1).mp3 si ledit fichier existe '# Indicators permet d'indiquer les séparateurs utilisés... () [] etc '# FirstIndex permet de spécifier le premier indice utilisé Public Function GetUnique(ByRef vsFileName As String, Optional ByRef vsLeftIndicator As String = "(", Optional ByRef vsRightIndicator As String = ")", Optional ByVal vnFirstIndex As Integer = 1) As String Dim i As Integer Dim tPath As PathType Dim Parts(1 To 2) As String    '# Le fichier existe, on ne se pose pas de question    If DoesExists(vsFileName) Then        '# On sépare les parties du nom de fichier        tPath = CrackPath(vsFileName)                '# Le nom de fichier est séparé en deux parts        '# 'C:\a(' et ').mp3'        Parts(1) = tPath.Folder & tPath.FileName & vsLeftIndicator        Parts(2) = vsRightIndicator & tPath.FileExt                i = vnFirstIndex        Do            '# On reconstruit un nom de fichier            GetUnique = Parts(1) & i & Parts(2)            i = i + 1            '# On boucle tant que le fichier existe, après avoir incrémenté le compteur        Loop While DoesExists(GetUnique)    Else        GetUnique = vsFileName    End If End Function

Snippets en rapport avec : Fichier, Getunique, Getuniquefilename



Codes sources en rapport avec : Fichier, Getunique, Getuniquefilename

{Visual Basic, VB6, VB.NET, VB 2005} COMPARATEUR EXCEL EN MASSE, AMÉLIORATIONS
mabrouklepoux avait proposé un comparateur de fichiers Excel. http://www.vbfrance.com/code.aspx?ID=3...

{Visual Basic, VB6, VB.NET, VB 2005} GETNAMES : RÉCUPÈRE ET ÉCRIT TOUS LES NOMS DE FICHIERS D'UN DOSSIER
J'ai fait ce petit programme tout simple, qui aurait pu être créé par n'importe quel débutant, car j...

{Visual Basic, VB6, VB.NET, VB 2005} COUPEUR DE FICHIERS
Cette sources permet de couper des fichiers, et créer un .bat permettant de la reconstruire. Cette ...

{Visual Basic, VB6, VB.NET, VB 2005} DIRLISTING - LISTER UN DOSSIER ET SES SOUS DOSSIERS TRES RAPIDEMENT
Cette classe vous offre un moyen simple et rapide de lister le contenu d'un repertoire. Elle est in...

{Visual Basic, VB6, VB.NET, VB 2005} SAUVEGARDE AUTOMATIQUE
Ce logiciel sert à programmer des sauvegardes automatiques. Dans la version 2, vous pouvez choisir l...

{C# / C#.NET} SUPPRIMER LES TAG BOM DANS FICHIER UTF-8
Ce programme vous permettra du supprimer les tags au début des fichiers UTF-8 BOM. J’ai rajouté la ...

{C# / C#.NET} PARSER DE NODE XML ALTERNATIF
Ce petit code est capable de parser une ligne XML genre: Ou hello world Il n'effectu...

{Visual Basic, VB6, VB.NET, VB 2005} RECHERCHE EXTRÊME OU 5 FAÇONS DE CHERCHER UN FICHIER
C'est parti de mon envie d'expérimenter avec WMI. J'ai bûché avec un exemple en C# de TechHeadBrothe...

{PHP} LISTER LES DOSSIERS, SOUS-DOSSIERS ET NOMBRE DE FICHIERS
Une petite source sans prétention qui pourrait très bien figurer dans les snippets mais étant une pa...

{Delphi} SYNCHRONISATION-FICHIERS (MODIFICATION DE TIGRIS1)
TIGRIS a écrit: "Il y a encore beaucoup de fonctions qui peuvent être ajoutées et il n'est pas im...