begin process at 2008 07 04 08:51:06
1 204 518 membres
60 nouveaux aujourd'hui
14 116 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INSTANCIER UN FILELISTBOX ET UN DIRLISTBOX SANS PLACER UN OBJET SUR UNE FORM


Information sur la source

Description

comment utiliser un dirlistbox sans le creer sur une form?
lorsque je lance le code ci dessous (qui devrai me donner la taille d'un repertoire)

j'obtient le message d'erraur suivant
object variable or with bloc variable not set

sur
dire.path = path

et la je suis bloque car je ne sais pas quoi faire... des idee? des solution ?
merci bcp de votre aide

Source

  • Private Function taillepath(ByVal path As String) As Double
  • Dim dire As DirListBox
  • dire.path = path
  • Dim file As FileListBox
  • file.path = path
  • Dim liste As ListBox
  • liste.Clear
  • taillepath = 0
  • Dim i As Integer
  • 'dossier
  • i = 0
  • Do While i < dire.ListCount
  • liste.AddItem dire.List(i)
  • i = i + 1
  • Loop
  • Do While liste.ListCount
  • 'fichier
  • i = 0
  • Do While i < File1.ListCount
  • taillepath = taillepath + FileLen(File1.path & "\" & File1.List(i))
  • i = i + 1
  • Loop
  • dire.path = liste.List(0)
  • file.path = liste.List(0)
  • liste.RemoveItem (0)
  • i = 0
  • Do While i < dire.ListCount
  • liste.AddItem dire.List(i)
  • i = i + 1
  • Loop
  • Loop
  • End Function
Private Function taillepath(ByVal path As String) As Double
Dim dire As DirListBox
dire.path = path
Dim file As FileListBox
file.path = path
Dim liste As ListBox
liste.Clear
taillepath = 0
Dim i As Integer
'dossier
i = 0
Do While i < dire.ListCount
    liste.AddItem dire.List(i)
    i = i + 1
    Loop
Do While liste.ListCount
    'fichier
    i = 0
    Do While i < File1.ListCount
        taillepath = taillepath + FileLen(File1.path & "\" & File1.List(i))
        i = i + 1
        Loop
    dire.path = liste.List(0)
    file.path = liste.List(0)
    liste.RemoveItem (0)
    i = 0
    Do While i < dire.ListCount
        liste.AddItem dire.List(i)
        i = i + 1
        Loop
    Loop
End Function

Conclusion

ben heu... ca marche pas... je demande de l'aide qui pourra servir a d'autre personne...
  • signaler à un administrateur
    Commentaire de Stephane le 01/05/2005 23:36:54

    slut

    il y a un forum pour ca !
    j'ai cru que tu donné la solution que je ne connais pas !

    ++

  • signaler à un administrateur
    Commentaire de crenaud76 le 02/05/2005 12:33:11

    Cela devrait effectivement être posé dans le forum... mais voici la réponse :
    Il manque un Set Dire = New Dirlistbox
    et un Set File = New FileListBox
    Mais a quoi cela sert-il d'instancié un controle si tu ne l'affiche aps sur une form .... Je me pose encore la question.

  • signaler à un administrateur
    Commentaire de Stephane le 02/05/2005 19:16:19

    si tu veux l'utiliser dans un module, une application sans form

    ++

  • signaler à un administrateur
    Commentaire de crenaud76 le 02/05/2005 19:32:00

    Sans aucune form, je ne vois pas ce que cela te donnerai !!!! Faudra me dire à quoi cela servirai, franchement, je ne vois pas !!

  • signaler à un administrateur
    Commentaire de Stephane le 02/05/2005 19:44:40

    et bien, quand t sous windows, si tu a 5 prog ouvert, tu aura peut etre 5 fenetre ou plus ou moins, mais tu auras peut etre 15 ou 20 programmes qui tournent. Un programme n'est pas forcement composé de fenetres, exemple tu peux faire un prog qui intercepte les touche du joystick, et en simule du clavier (une sorte de driver), et si par malheur tu a besoin de parcourir des dossiers, pour faire simple, instancier un DirList est la facon la plus simple (Sans API)

    ps ta solution ne marche pas : erreur sur     Set Dire = New DirListBox

    ++

  • signaler à un administrateur
    Commentaire de misterzinzin le 02/05/2005 21:03:33

    Set dire = New DirListBox

    invalid use of new keyword ....

    une autre solution ?

    pour le coup du forum je ne savais pas qu'on pouvais le faire come ca desole...

  • signaler à un administrateur
    Commentaire de crenaud76 le 03/05/2005 08:56:15

    Je suis d'accord sur l'idée d'avoir une application sans fenêtre, mais je ne comprend pas en quoi un Dirlistbox ou un filelistbox est utile dans ce cas !!! Le but d'un filelistbox est d'afficher la liste des fichiers contenu dans un répertoire à l'utilisateur. Si tu l'utilises comme cela uniquement pour lister les fichiers d'un répertoire, autant utiliser la fonction Dir() dans une boucle While ... Wend. Cela sera aussi rapide et bien moins lourd en mémoire ....
    Je suis peut-être bouché, mais je ne vois toujours pas l'utilité !!!

  • signaler à un administrateur
    Commentaire de Stephane le 03/05/2005 18:50:05

    :D

    c vrai dir serait bien mieux adapte, mais c'est une alternative :)

    +

  • signaler à un administrateur
    Commentaire de crenaud76 le 03/05/2005 22:20:46

    Une alternative sans en être vraiment une !!! Pourquoi utiliser un bazooka pour tuer un moustique, alors que la paume de la main suffit !!

  • signaler à un administrateur
    Commentaire de misterzinzin le 03/05/2005 22:57:50

    ben c que je c pas comment se servir de la fonction dir... etc...
    pour la solution au probleme, voici le code qui fonctionne...

    Private Function taillepath(ByVal path As String) As Double
    On Error Resume Next 'il y a des fichier foireux qui tourne sur le pc
    Dim dire As DirListBox
    Set dire = Controls.Add("VB.DirListBox", "Dir10")
    dire.path = path
    Dim file As FileListBox
    Set file = Controls.Add("VB.FileListBox", "File10")
    file.path = path
    Dim liste As ListBox
    Set liste = Controls.Add("VB.ListBox", "List10")
    liste.Clear
    taillepath = 0
    Dim i As Integer
    i = 0

        liste.AddItem path
        
    Do While liste.ListCount
        'fichier
        dire.path = liste.List(0)
        dire.Refresh
        file.path = liste.List(0)
        file.Refresh
        'z
        
        liste.RemoveItem (0)
        i = 0
        Do While i < dire.ListCount
            liste.AddItem dire.List(i)
            i = i + 1
            Loop
        i = 0
        Do While i < file.ListCount
            taillepath = taillepath + FileLen(file.path & "\" & file.List(i))
            i = i + 1
            Loop
        Loop
        
        Controls.Remove dire
        Controls.Remove file
        Controls.Remove liste
    End Function


    si vous savez la modifier en remplacant  avec des autre fonction (dir et compagnie) je suis preneur

    en passant, ma fonction est limitee par la taille des fichier (3go ca passe en negatif) qq connaitrait pas un type de donne plus "etendu" du genre qui compte de 0 a 2 tera (ca laisse de la marge pour les fichier lol)

  • signaler à un administrateur
    Commentaire de Stephane le 04/05/2005 12:13:27

    salut

    en ce qui concerne la taille du fichier, c'est du au fait que le long VB est signé, or celui de la fonction ne l'est pas. voici le remede :

    Taille=Filelen(fichier)
    If Taille < 0 Then Taille = 2 ^ 32 + Taille

    ++

  • signaler à un administrateur
    Commentaire de misterzinzin le 09/05/2005 20:55:35

    mecri bcp :-)...

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS