stephanechabeau
Messages postés9Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention 1 mai 2007
-
31 mai 2006 à 08:08
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
2 août 2007 à 17:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
simples modifs a al base, j'ai fais de grands changement, ce qui explique que j'ai posté une toute nouvelle.
J'ai mentionné partout ton nom, Jack
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 2 août 2007 à 07:18
Asimengo> pas pigé ta remarque, dans le fond...
EOF fait plus que de tester la longueur de la chaine, elle appelle la propriete Item.
ce faisant, elle tente de se caler sur un élément valide.
le fait que dans l'initialize on ne se positionne pas directement sur un élement valide n'est pas, je pense, un soucis, puisque lorsque l'utilisateur appellera Item, ca se callera tout seul.
a noter qu'il faudrait mieux faire d'ailleurs :
Public Function Item() As String
Dim nLength As Long
If mHandle Then
Do
nLength = InStr(aFileStructure.cFileName, vbNullChar)
If nLength Then
Item = Left$(aFileStructure.cFileName, nLength - 1)
If Item ".." Or Item "." Or CBool(aFileStructure.dwFileAttributes And mRechercheQuoi) = False Then
MoveNext
Else
Exit Do
End If
End If
Loop
End If
End Function
comme ça, on supprime la recursivité, la chose est accelerée
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 1 août 2007 à 19:30
(ouh, on est studieux, ici)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 août 2007 à 19:03
le premier item est ramené dans le Initialize
on ne peux pas faire de MoveNext ici.
pour ce qui est de la coherence, ca me semble ok
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 1 août 2007 à 11:41
@Renfield: j'ai parcouru le code qui est toujours très lisible comme dab, sauf quand c'est pas trop API car je m'interesse toujours plus à l'analyse.
Partant de ton principe je garderai les mêmes fonctions mais je changerai l'algorithme des méthodes des fonctions Initialize, MoveNext, Item et EOF.
A mon avis pour un sequencement de processus cohérent, du fait que tout commence par Initialize, avec passage du paramètre de base veAttributes, Initialize et MoveNext devrait conduire à pointer directement sur le Item vérifiant veAttributes. Conséquence la Méthode Item devrait renvoyer directement le resultat.
Public Function Item() As String
Dim nLength As Long
If mHandle Then
nLength = InStr(aFileStructure.cFileName, vbNullChar)
If nLength Then Item = Left$(aFileStructure.cFileName, nLength - 1)
End If
End Function
Je supprimerai la propriété EOF, puisque EOF=cbool(Item=VbNullString). On pourrait également ajouter une propriéte state pour savoir s'il existe vraiment une session Dir, exemple de definition State=iif(mHandle=0,0,1) comme pour les recordsets. Cette classe Dir a plus le comportement d'un recordset que d'un Dir usuel.
Espérant avoir été cohérent. Je conviens avec toi que pour le principe c'est très bien, je l'adopte.
A+
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 août 2007 à 10:38
ce qui me génait surtout dans le code d'origine, c'est qu'on ne pouvais pas rechercher en meme temps les fichiers et les dossiers (par exemple).
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 1 août 2007 à 10:32
@Renfield: En lisant ta definition de typeRecherche, je pense que le Dir2 de Jack devient plus commode. Je l'avais déjà rectifier dans mon utilisation où je travaille uniquement avec VbFileAttribute, mais ayant gérer la libre combinaison des attributs. Le seul avantage de typeRecherche est qu'il compose déjà certains attributs couramment utilisés et une meilleure lisibilité du code dans le passage du parametre veAttributes.
Je vais copier le code et pouvoir apprecier les differences ce soir à la maison. Ca fait du bien d'avoir des references de comparaison pour des bouts de codes comme ca avec ceux des "bao" comme Renf, lol.
A+
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 août 2007 à 09:55
en tous les cas, c'est pratique est très rapide ^^
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 août 2007 à 09:46
donc là, la facon de s'en servir est un peu différente...
voici un exemple d'utilisation :
Set oItems = New clsDir2
oItems.Initialize vsRoot
Do Until oItems.EOF
sBuffer = vsRoot & oItems.Item
If CBool(oItems.Attributes And vbDirectory) Then
FillList sBuffer & ""
Else
AddFile sBuffer
End If
oItems.MoveNext
Loop
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 août 2007 à 09:44
j'ai mis le nez dedans, j'ai amélioré un peu la chose...
Option Explicit
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
' Attributs (additionnables) d'un fichier/répertoire renvoyés par les APIs
Private Const mNormal = 128 ' Fichier sans attribut
Private Const mCompressionDisque = 2048 ' Compressé au sens Windows/disque (pas Zip, RAR ...)
' Liste des types de recherche proposés optionnellement dans la fonction 'Dir2'
Public Enum typeRecherche
[Fichier standard] = mNormal Or Not VbFileAttribute.vbDirectory ' Option par défaut
[Fichier caché] = [Fichier standard] Or VbFileAttribute.vbHidden
[Fichier système] = [Fichier standard] Or VbFileAttribute.vbSystem
[Fichier lecture seule] = [Fichier standard] Or VbFileAttribute.vbReadOnly
[Fichier compressé (sur disque)] = [Fichier standard] Or mCompressionDisque
[Répertoire standard] = mNormal Or VbFileAttribute.vbDirectory
[Répertoire caché] = [Répertoire standard] Or VbFileAttribute.vbHidden
[Répertoire système] = [Répertoire standard] Or VbFileAttribute.vbSystem
[Répertoire lecture seule] = [Répertoire standard] Or VbFileAttribute.vbReadOnly
[Répertoire compressé (sur disque)] = [Répertoire standard] Or mCompressionDisque
End Enum
' Les variables
Private mHandle As Long ' Mémo de handle de la recherche en cours
Private mRechercheQuoi As Long ' Type de recherche à effectuer
Private aFileStructure As WIN32_FIND_DATA ' Elément récupéré par les APIs
Public Sub Initialize(ByVal vsPath As String, Optional veAttributes As typeRecherche = &HFFFFFFFF)
If mHandle > 0 Then
Call FindClose(mHandle)
End If
If Right$(vsPath, 1) = "" Then
vsPath = vsPath & "*"
End If
mHandle = FindFirstFile(vsPath, aFileStructure)
If mHandle <= 0 Then
mHandle = 0
Else
mRechercheQuoi = veAttributes
End If
End Sub
Public Function Item() As String
Dim nLength As Long
If mHandle Then
nLength = InStr(aFileStructure.cFileName, vbNullChar)
If nLength Then
Item = Left$(aFileStructure.cFileName, nLength - 1)
If Item ".." Or Item "." Or CBool(aFileStructure.dwFileAttributes And mRechercheQuoi) = False Then
MoveNext
Item = Item()
End If
End If
End If
End Function
Public Property Get Attributes() As VbFileAttribute
Attributes = aFileStructure.dwFileAttributes
End Property
Public Sub MoveNext()
If mHandle Then
If FindNextFile(mHandle, aFileStructure) = 0 Then
aFileStructure.cFileName = vbNullString
End If
End If
End Sub
Public Property Get EOF() As Boolean
EOF = True
If mHandle Then
Call Item
EOF (InStr(aFileStructure.cFileName, vbNullChar) 0)
End If
End Property
Private Sub Class_Terminate()
' Cloture la recherche proprement
If mHandle Then
FindClose mHandle
End If
End Sub
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 30 juin 2006 à 13:02
ok avec la plupart des enumerations, bien sur....
je parle justement de mauvaise habitude, à ne pas prendre.
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 30 juin 2006 à 12:44
Je dois préciser pour ne pas dérouter certains que comme l'a di renfield il est recommandé d'utiliser "OR". Mais à moins de savoir ce qu'on fait il y'a plus de lisibilité du code à utiliser "+" qui se comprendrait mieux que l'utilisation de "OR".
En effet dire vbDirectory + vbHidden sous-entend mieux une combinaison que de dire vbdirectory or vbhidden qui sous-entend lus soit l'un soit l'autre.
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 30 juin 2006 à 12:36
@Renfield: je me suis aligné à l'expression de Jack. Mais dans le cas present VBFileAttribute, combiner et additionner peuvent très bien s'employer correctement. En effet les valeurs de l'énumération VbFileAttribute sont de la forme 2^n en dehors de vbnormal=0 et pour n1 et n2 2 deux entiers naturels différents on a 2^n1+2^n2 = 2^n1 or 2^n2. A mon avis et très logiquement le terme additionner peut correctement s'employer si les valeurs de l'énumération sont de la a^n.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 30 juin 2006 à 10:03
ADDITIONNER :o
quel mot mal choisit...
il ne faut absolument pas additionner les flags, c'est une très mauvaise habitude a ne pas prendre ! Il faut les Combiner (Or)...
Jack, utilise les valeur de l'enumération VbFileAttribute, c'est bien moins déroutant...
fais par exemple:
[Répertoire caché] = vbDirectory OR vbHidden
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 29 juin 2006 à 10:31
Je pense qu'avec le DIR de VB on devrait pouvoir additionner les attributs pourquoi pas l'avoir avec ton DIR2.
En fait j'utilisais ta classe pour effectuer une liste de fichiers mails à partir du dossier des comptes (Chaque compte est un dossier qui a des sous-dossiers spams, files) et ainsi je peux les lister avec info genre nom compte, sous-dossier, emetteur, destinataire, sujet, ...
A partir d'une fonction récursive je voudrais utiliser ta méthode DIR2 pour avoir soit un fichier mail soit un dossier, si dossier je rappelle la procédure et ainsi de suite. C'est la raison pour laquelle je veux additionner les attributs. Bon en éliminant ta fonction TestTypeDossier et en contrôlant les résultats avec GetAttr j'y arrive mais seulement je pense que ce doit être possible directement avec les APIS alors as tu une mise à jour?.
A+
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 juin 2006 à 20:29
Salut
Tu mets ce que tu veux (n'importe quelle valeurs) dans cet Enum du moment que tu le traites correctement dans la classe.
Par contre, quand tu feras des essais, tu verras que ces types ne peuvent pas s'additionner. Certains types découlant automatiquement d'un autre et les APIs ne répondent pas comme on le souhaite.
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 28 juin 2006 à 14:43
j'ai écrit trop vite on ne doit pas avoir [Fichier standard]=0, ils doivent tous être de la forme 2^n
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 28 juin 2006 à 14:37
J'ai l'impression que tu n'as pas prévu de faire une combinaison d'attribut genre [Fichier standard]+[Dossier standard]. Dans ce cas ta function TestTypeFichier ne serait pas correcte.
De ce fait tu devrais réécrire ta définition de TypeRecherche de la façon suivante:
Public Enum typeRecherche
[Fichier standard] = 0 ' Option par défaut
[Fichier caché] = 1
[Fichier système] = 2
[Fichier lecture seule] = 4
[Fichier compressé (sur disque)] = 8
[Répertoire standard] = 16
[Répertoire caché] = 32
[Répertoire système] = 64
[Répertoire lecture seule] = 128
[Répertoire compressé (sur disque)] = 256
End Enum
ils doivent être de la forme 2^n
Mais je pense que tu aurais gardé le même type de VB VBfileAttribute.
Au lieu d'avoir Select Case mRechercheQuoi dans ta fonction TestTypeFichier,tu serais obligé de faire une serie test pour se rassurer qu'un bit d'attribut est activé ou pas.
Bonne prog
cs_PaTaTe
Messages postés2126Date d'inscriptionmercredi 21 août 2002StatutContributeurDernière intervention19 février 20212 31 mai 2006 à 12:07
Excellent !
J'avais pensé à faire la même chose sans jamais trouver le temps pour.
Cela dit j'essayerais de poster une version personnalisée si j'ai le temps. Je ne vous dit que ca :)
stephanechabeau
Messages postés9Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention 1 mai 2007 31 mai 2006 à 08:08
Bravo Jack,
Utile et très bien commenté.
Et de plus, enfin quelqu'un qui sait écrire sans faire 10 fautes d'orthographe à chaque phrase...
2 août 2007 à 17:53
2 août 2007 à 12:28
http://www.vbfrance.com/code.aspx?ID=43640
simples modifs a al base, j'ai fais de grands changement, ce qui explique que j'ai posté une toute nouvelle.
J'ai mentionné partout ton nom, Jack
2 août 2007 à 07:18
EOF fait plus que de tester la longueur de la chaine, elle appelle la propriete Item.
ce faisant, elle tente de se caler sur un élément valide.
le fait que dans l'initialize on ne se positionne pas directement sur un élement valide n'est pas, je pense, un soucis, puisque lorsque l'utilisateur appellera Item, ca se callera tout seul.
a noter qu'il faudrait mieux faire d'ailleurs :
Public Function Item() As String
Dim nLength As Long
If mHandle Then
Do
nLength = InStr(aFileStructure.cFileName, vbNullChar)
If nLength Then
Item = Left$(aFileStructure.cFileName, nLength - 1)
If Item ".." Or Item "." Or CBool(aFileStructure.dwFileAttributes And mRechercheQuoi) = False Then
MoveNext
Else
Exit Do
End If
End If
Loop
End If
End Function
comme ça, on supprime la recursivité, la chose est accelerée
1 août 2007 à 19:30
1 août 2007 à 19:03
on ne peux pas faire de MoveNext ici.
pour ce qui est de la coherence, ca me semble ok
1 août 2007 à 11:41
Partant de ton principe je garderai les mêmes fonctions mais je changerai l'algorithme des méthodes des fonctions Initialize, MoveNext, Item et EOF.
A mon avis pour un sequencement de processus cohérent, du fait que tout commence par Initialize, avec passage du paramètre de base veAttributes, Initialize et MoveNext devrait conduire à pointer directement sur le Item vérifiant veAttributes. Conséquence la Méthode Item devrait renvoyer directement le resultat.
Public Function Item() As String
Dim nLength As Long
If mHandle Then
nLength = InStr(aFileStructure.cFileName, vbNullChar)
If nLength Then Item = Left$(aFileStructure.cFileName, nLength - 1)
End If
End Function
Je supprimerai la propriété EOF, puisque EOF=cbool(Item=VbNullString). On pourrait également ajouter une propriéte state pour savoir s'il existe vraiment une session Dir, exemple de definition State=iif(mHandle=0,0,1) comme pour les recordsets. Cette classe Dir a plus le comportement d'un recordset que d'un Dir usuel.
Espérant avoir été cohérent. Je conviens avec toi que pour le principe c'est très bien, je l'adopte.
A+
1 août 2007 à 10:38
1 août 2007 à 10:32
Je vais copier le code et pouvoir apprecier les differences ce soir à la maison. Ca fait du bien d'avoir des references de comparaison pour des bouts de codes comme ca avec ceux des "bao" comme Renf, lol.
A+
1 août 2007 à 09:55
1 août 2007 à 09:46
voici un exemple d'utilisation :
Set oItems = New clsDir2
oItems.Initialize vsRoot
Do Until oItems.EOF
sBuffer = vsRoot & oItems.Item
If CBool(oItems.Attributes And vbDirectory) Then
FillList sBuffer & ""
Else
AddFile sBuffer
End If
oItems.MoveNext
Loop
1 août 2007 à 09:44
Option Explicit
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
' Attributs (additionnables) d'un fichier/répertoire renvoyés par les APIs
Private Const mNormal = 128 ' Fichier sans attribut
Private Const mCompressionDisque = 2048 ' Compressé au sens Windows/disque (pas Zip, RAR ...)
' Liste des types de recherche proposés optionnellement dans la fonction 'Dir2'
Public Enum typeRecherche
[Fichier standard] = mNormal Or Not VbFileAttribute.vbDirectory ' Option par défaut
[Fichier caché] = [Fichier standard] Or VbFileAttribute.vbHidden
[Fichier système] = [Fichier standard] Or VbFileAttribute.vbSystem
[Fichier lecture seule] = [Fichier standard] Or VbFileAttribute.vbReadOnly
[Fichier compressé (sur disque)] = [Fichier standard] Or mCompressionDisque
[Répertoire standard] = mNormal Or VbFileAttribute.vbDirectory
[Répertoire caché] = [Répertoire standard] Or VbFileAttribute.vbHidden
[Répertoire système] = [Répertoire standard] Or VbFileAttribute.vbSystem
[Répertoire lecture seule] = [Répertoire standard] Or VbFileAttribute.vbReadOnly
[Répertoire compressé (sur disque)] = [Répertoire standard] Or mCompressionDisque
End Enum
' Les variables
Private mHandle As Long ' Mémo de handle de la recherche en cours
Private mRechercheQuoi As Long ' Type de recherche à effectuer
Private aFileStructure As WIN32_FIND_DATA ' Elément récupéré par les APIs
Public Sub Initialize(ByVal vsPath As String, Optional veAttributes As typeRecherche = &HFFFFFFFF)
If mHandle > 0 Then
Call FindClose(mHandle)
End If
If Right$(vsPath, 1) = "" Then
vsPath = vsPath & "*"
End If
mHandle = FindFirstFile(vsPath, aFileStructure)
If mHandle <= 0 Then
mHandle = 0
Else
mRechercheQuoi = veAttributes
End If
End Sub
Public Function Item() As String
Dim nLength As Long
If mHandle Then
nLength = InStr(aFileStructure.cFileName, vbNullChar)
If nLength Then
Item = Left$(aFileStructure.cFileName, nLength - 1)
If Item ".." Or Item "." Or CBool(aFileStructure.dwFileAttributes And mRechercheQuoi) = False Then
MoveNext
Item = Item()
End If
End If
End If
End Function
Public Property Get Attributes() As VbFileAttribute
Attributes = aFileStructure.dwFileAttributes
End Property
Public Sub MoveNext()
If mHandle Then
If FindNextFile(mHandle, aFileStructure) = 0 Then
aFileStructure.cFileName = vbNullString
End If
End If
End Sub
Public Property Get EOF() As Boolean
EOF = True
If mHandle Then
Call Item
EOF (InStr(aFileStructure.cFileName, vbNullChar) 0)
End If
End Property
Private Sub Class_Terminate()
' Cloture la recherche proprement
If mHandle Then
FindClose mHandle
End If
End Sub
30 juin 2006 à 13:02
je parle justement de mauvaise habitude, à ne pas prendre.
30 juin 2006 à 12:44
En effet dire vbDirectory + vbHidden sous-entend mieux une combinaison que de dire vbdirectory or vbhidden qui sous-entend lus soit l'un soit l'autre.
30 juin 2006 à 12:36
30 juin 2006 à 10:03
quel mot mal choisit...
il ne faut absolument pas additionner les flags, c'est une très mauvaise habitude a ne pas prendre ! Il faut les Combiner (Or)...
Jack, utilise les valeur de l'enumération VbFileAttribute, c'est bien moins déroutant...
fais par exemple:
[Répertoire caché] = vbDirectory OR vbHidden
29 juin 2006 à 10:31
En fait j'utilisais ta classe pour effectuer une liste de fichiers mails à partir du dossier des comptes (Chaque compte est un dossier qui a des sous-dossiers spams, files) et ainsi je peux les lister avec info genre nom compte, sous-dossier, emetteur, destinataire, sujet, ...
A partir d'une fonction récursive je voudrais utiliser ta méthode DIR2 pour avoir soit un fichier mail soit un dossier, si dossier je rappelle la procédure et ainsi de suite. C'est la raison pour laquelle je veux additionner les attributs. Bon en éliminant ta fonction TestTypeDossier et en contrôlant les résultats avec GetAttr j'y arrive mais seulement je pense que ce doit être possible directement avec les APIS alors as tu une mise à jour?.
A+
28 juin 2006 à 20:29
Tu mets ce que tu veux (n'importe quelle valeurs) dans cet Enum du moment que tu le traites correctement dans la classe.
Par contre, quand tu feras des essais, tu verras que ces types ne peuvent pas s'additionner. Certains types découlant automatiquement d'un autre et les APIs ne répondent pas comme on le souhaite.
28 juin 2006 à 14:43
28 juin 2006 à 14:37
De ce fait tu devrais réécrire ta définition de TypeRecherche de la façon suivante:
Public Enum typeRecherche
[Fichier standard] = 0 ' Option par défaut
[Fichier caché] = 1
[Fichier système] = 2
[Fichier lecture seule] = 4
[Fichier compressé (sur disque)] = 8
[Répertoire standard] = 16
[Répertoire caché] = 32
[Répertoire système] = 64
[Répertoire lecture seule] = 128
[Répertoire compressé (sur disque)] = 256
End Enum
ils doivent être de la forme 2^n
Mais je pense que tu aurais gardé le même type de VB VBfileAttribute.
Au lieu d'avoir Select Case mRechercheQuoi dans ta fonction TestTypeFichier,tu serais obligé de faire une serie test pour se rassurer qu'un bit d'attribut est activé ou pas.
Bonne prog
31 mai 2006 à 12:07
J'avais pensé à faire la même chose sans jamais trouver le temps pour.
Cela dit j'essayerais de poster une version personnalisée si j'ai le temps. Je ne vous dit que ca :)
31 mai 2006 à 08:08
Utile et très bien commenté.
Et de plus, enfin quelqu'un qui sait écrire sans faire 10 fautes d'orthographe à chaque phrase...
9/10
Stéph