IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

findfiles : dépassement de capacité


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut findfiles : dépassement de capacité
    Bonjour,
    Cela fait 2 heures que j'essaie de comprendre pourquoi j'ai ce problème : quand j'appelle la fonction de recherche de fichiers sur un répertoire de mon DD, tout se passe bien sauf si je veux rechercher des fichiers mpg : erreur 6, dépassement de capacité...
    Les autres recherches se passent bien : avi, flv, mp3, etc... (la recherche de fichiers mpeg ne trouve rien... mais ne plante pas !!!)
    Pouvez-vous m'expliquer pourquoi ???

    Merci d'avance de votre aide.

    Le plantage se fait sur la 3e ligne de mon code d'appel de la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FindStr = "*.mpg"
            SearchPath = Dir_Video$: flg$ = FindStr: lenpath = 4
            FileSize = FindFiles(SearchPath, FindStr, NumFiles, NumDirs)
    La fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Function FindFiles(path As String, SearchStr As String, _
          FileCount As Integer, DirCount As Integer)
          Dim filename As String   ' Walking filename variable.
          Dim dirname As String    ' SubDirectory Name.
          Dim dirNames() As String ' Buffer for directory name entries.
          Dim nDir As Integer      ' Number of directories in this path.
          Dim i As Integer         ' For-loop counter.
     
          path = checkPath(path)
          ' Search for subdirectories.
          nDir = 0
     
          ReDim dirNames(nDir)
          dirname = Dir(path, vbDirectory Or vbHidden Or vbArchive Or vbReadOnly Or vbSystem)
          Do While Len(dirname) > 0
             ' Ignore the current and encompassing directories.
             If (dirname <> ".") And (dirname <> "..") Then
                ' Check for directory with bitwise comparison.
                If GetAttr(path & dirname) And vbDirectory Then
                   dirNames(nDir) = dirname
                   DirCount = DirCount + 1
                   nDir = nDir + 1
                   ReDim Preserve dirNames(nDir)
                   'List2.AddItem path & DirName ' Uncomment to list
                End If                           ' directories.
    sysFileERRCont:
             End If
             dirname = Dir()  ' Get next subdirectory.
          Loop
     
                ' Search through this directory and sum file sizes.
                filename = Dir(path & SearchStr, vbNormal Or vbHidden Or vbSystem _
                Or vbReadOnly Or vbArchive)
                Debug.Print filename
                While Len(filename) <> 0
                   FindFiles = FindFiles + FileLen(path & filename)
                   FileCount = FileCount + 1
     
                    l$ = path & filename
                    n1% = InStr(filename, " - ")
                    If n1% > 1 Then
                        aRech$ = Mid$(filename, n1% + 3)
                        aRech$ = Left$(aRech$, Len(aRech$) - 4) 'enlève extension
                        cht1$ = Left$(filename, n1% - 1)
                        r% = -1
                        Select Case flg$
                            Case "*.kar", "*.mp3", "*.avi"
                                Call FindFilesKar
                            Case "*.wav"
                                Call FindFilesWav
                        End Select
                    End If
     
            filename = Dir()  ' Get next file.
     
        Wend
     
     
          ' If there are sub-directories..
          If nDir > 0 Then
             ' Recursively walk into them
             For i = 0 To nDir - 1
               FindFiles = FindFiles + FindFiles(path & dirNames(i) & "\", _
                SearchStr, FileCount, DirCount)
             Next i
          End If
     
    Exit Function

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    voir aide en ligne VB6:

    FileLen, fonction


    Renvoie une valeur de type Long indiquant la longueur en octets d'un fichier.

    Syntaxe



    de quel type est ta variable FileSize ?

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut Merci
    Merci de ta réponse rapide.

    Voici les déclarations de variables :
    Dim SearchPath As String, FindStr As String
    Dim FileSize As Long
    Dim NumFiles As Integer, NumDirs As Integer

    Je suppose qu'il faut définir en currency ! Ca a l'air de bien fonctionner (il ne faut plus que j'essaie de travailler après minuit ).
    Merci beaucoup
    Le code findfiles n'est pas de moi, mais je l'aime bien car il ne demande pas fso et tient sur une seule page.
    Par contre, il n'accepte pas les filtres multiples, si quelqu'un a une idée ?
    Merci encore et bonne journée

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/10/2014, 16h08
  2. Transaction, Dépassement de capacité
    Par SkYsO dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 23/12/2008, 14h56
  3. Dépassement de capacité
    Par jean-pierre96 dans le forum Access
    Réponses: 2
    Dernier message: 10/05/2006, 16h04
  4. Réponses: 8
    Dernier message: 06/02/2006, 14h34
  5. détection de dépassement de capacité
    Par tut dans le forum C++
    Réponses: 10
    Dernier message: 01/12/2004, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo