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]
Date de mise à jour : 05/07/2008 15:24:32
Vue : 1943
Catégorie(s) : Fichier / Disque, Algorithme
Langages dispo pour ce code :
- VB6, VBA
- Delphi 5
- Voir tous les langages pour ce code snippet



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

{C / C++ / C++.NET} LES ENSEMBLE C++
ptite source realisé lors d'un tp en class ,permet une mini gestion des ensemble en C++, operatio...

{PHP} UPLOAD MULTIPLE OU SIMPLE DES FICHIERS
il n'a jamais été aussi facile de transferer des fichiers sur votre serveur. /* EXPLICATION ET REG...

{Visual Basic, VB6, VB.NET, VB 2005} [VB6] YMXPLORER : DOUBLE EXPLORATEUR DE FICHIERS
Double explorateur de fichiers, DragDrop dans les MSHFlexGrid, Fonctions de remplacement (voir ma ...

{PHP} BASH: TABLEAUX EN FICHIER
Peut etre vous etes vous deja retrouvé dans la situation ou vous devez enregistrer dans un tableaux ...

{C / C++ / C++.NET} REPRESENTATION GRAPHIQUE DE DONNEES
ce programme a pour but de lire des données d'un fichier .txt et de les représenter sous forme de gr...

{Visual Basic, VB6, VB.NET, VB 2005} TRANSFERT DE FICHIERS ENTRE 2 PC DISTANTS
Bonjour, Cette source permet, pour commencer en quelques mots, d'échanger des fichiers à travers ...

{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...