OVH Cloud OVH Cloud

Module de classe est filesystemobject

6 réponses
Avatar
Stef
Bonjour,

J'écris un module de classe dans lequel je fais référence à un filesystem
object
Imports Scripting

Public Class Cl_Version

Private Function ListeDesVersions()

Dim dctDict As Scripting.Dictionary

' Appelle de façon récurrente et renvoie les fichiers dans ' l'objet
Dictionary.

ListeSousRepertoire(mCheminSource, dctDict, True)

End Function

Private Function ListeSousRepertoire(ByVal strPath As String, ByVal
dctDict As Scripting.Dictionary, Optional ByVal blnRecursive As Boolean =
False) As Boolean

Dim fsoSysObjet As FileSystemObject

Dim fdrFolder As Folder

Dim fdrSubFolder As Folder

'----Return new FileSystemObject.----

fsoSysObjet = New FileSystemObject

........

End Function

End Class

Losque je fais " fsoSysObjet = New FileSystemObject" j'obtiens une erreur
"System.BadImageFormatException (classe)"

Quelqu'un a t-il une explication??


D'avance merci

6 réponses

Avatar
Zoury
Salut Stef ! :O)

Le FileSystemObject (FSO) n'est pas une dll .NET. Il s'agit d'une dll COM
que tu devras créer un Callable COM Wrapper (CCW) afin de pouvoir l'utiliser
en .NET.
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcomwrappers.asp

Toutefois, tu n'a définitivement pas besoin de cette dll sous .NET. Les
raisons pour laquelles elle n'était pas conseillé en VB 6.0 son encore
applicable sous .NET :
http://faq.vb.free.fr/index.php?question6


Je te recommande donc fortement de convertir le code afin d'employer les
classes et fonctionnalités offertes par le namespace System.IO.

Par exemple, la fonction suivante :
ListeSousRepertoire(mCheminSource, dctDict, True)



Existe déjà sous .NET :
System.IO.Directory.GetDirectories()
System.IO.Directory.GetFiles()


--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Stef
Merci beaucoup,

Travaillant d'habitude en VB6, je ne connaissais pas l'existence de ces
fonctions, que je vais essayer de ce pas!!!


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut Stef ! :O)

Le FileSystemObject (FSO) n'est pas une dll .NET. Il s'agit d'une dll COM
que tu devras créer un Callable COM Wrapper (CCW) afin de pouvoir
l'utiliser en .NET.
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcomwrappers.asp

Toutefois, tu n'a définitivement pas besoin de cette dll sous .NET. Les
raisons pour laquelles elle n'était pas conseillé en VB 6.0 son encore
applicable sous .NET :
http://faq.vb.free.fr/index.php?question6


Je te recommande donc fortement de convertir le code afin d'employer les
classes et fonctionnalités offertes par le namespace System.IO.

Par exemple, la fonction suivante :
ListeSousRepertoire(mCheminSource, dctDict, True)



Existe déjà sous .NET :
System.IO.Directory.GetDirectories()
System.IO.Directory.GetFiles()


--
Cordialement
Yanick
MVP pour Visual Basic



Avatar
Stef
Autre petite question,

J'utilise Scripting.Dictionary pour stocker la recherche des répertoires,
est-ce encore valable, ou y'a mieux??


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut Stef ! :O)

Le FileSystemObject (FSO) n'est pas une dll .NET. Il s'agit d'une dll COM
que tu devras créer un Callable COM Wrapper (CCW) afin de pouvoir
l'utiliser en .NET.
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcomwrappers.asp

Toutefois, tu n'a définitivement pas besoin de cette dll sous .NET. Les
raisons pour laquelles elle n'était pas conseillé en VB 6.0 son encore
applicable sous .NET :
http://faq.vb.free.fr/index.php?question6


Je te recommande donc fortement de convertir le code afin d'employer les
classes et fonctionnalités offertes par le namespace System.IO.

Par exemple, la fonction suivante :
ListeSousRepertoire(mCheminSource, dctDict, True)



Existe déjà sous .NET :
System.IO.Directory.GetDirectories()
System.IO.Directory.GetFiles()


--
Cordialement
Yanick
MVP pour Visual Basic



Avatar
Zoury
Que veux-tu dire par "stocker la recherche" ?

Les fonctions nommés dans mon message précédent te retourne déjà un tableau
de String... Qu'as-tu besoin de plus ?

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Zoury
J'ai oublié de mentionné que Scripting.Dictionary n'a plus sa place en
.NET..

Regarde du côté des namespaces System.Collections et
System.Collections.Specialized pour les classes équivalentes et beaucoup
plus.

--
Cordialement
Yanick
MVP pour Visual Basic

"Stef" a écrit dans le message de news:

Autre petite question,

J'utilise Scripting.Dictionary pour stocker la recherche des répertoires,
est-ce encore valable, ou y'a mieux??


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut Stef ! :O)

Le FileSystemObject (FSO) n'est pas une dll .NET. Il s'agit d'une dll COM
que tu devras créer un Callable COM Wrapper (CCW) afin de pouvoir
l'utiliser en .NET.
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcomwrappers.asp

Toutefois, tu n'a définitivement pas besoin de cette dll sous .NET. Les
raisons pour laquelles elle n'était pas conseillé en VB 6.0 son encore
applicable sous .NET :
http://faq.vb.free.fr/index.php?question6


Je te recommande donc fortement de convertir le code afin d'employer les
classes et fonctionnalités offertes par le namespace System.IO.

Par exemple, la fonction suivante :
ListeSousRepertoire(mCheminSource, dctDict, True)



Existe déjà sous .NET :
System.IO.Directory.GetDirectories()
System.IO.Directory.GetFiles()


--
Cordialement
Yanick
MVP pour Visual Basic







Avatar
Stef
Merci beaucoup pour ton aide.

A+

Et bonne fêtes à tous...


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
J'ai oublié de mentionné que Scripting.Dictionary n'a plus sa place en
.NET..

Regarde du côté des namespaces System.Collections et
System.Collections.Specialized pour les classes équivalentes et beaucoup
plus.

--
Cordialement
Yanick
MVP pour Visual Basic

"Stef" a écrit dans le message de news:

Autre petite question,

J'utilise Scripting.Dictionary pour stocker la recherche des répertoires,
est-ce encore valable, ou y'a mieux??


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut Stef ! :O)

Le FileSystemObject (FSO) n'est pas une dll .NET. Il s'agit d'une dll
COM que tu devras créer un Callable COM Wrapper (CCW) afin de pouvoir
l'utiliser en .NET.
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcomwrappers.asp

Toutefois, tu n'a définitivement pas besoin de cette dll sous .NET. Les
raisons pour laquelles elle n'était pas conseillé en VB 6.0 son encore
applicable sous .NET :
http://faq.vb.free.fr/index.php?question6


Je te recommande donc fortement de convertir le code afin d'employer les
classes et fonctionnalités offertes par le namespace System.IO.

Par exemple, la fonction suivante :
ListeSousRepertoire(mCheminSource, dctDict, True)



Existe déjà sous .NET :
System.IO.Directory.GetDirectories()
System.IO.Directory.GetFiles()


--
Cordialement
Yanick
MVP pour Visual Basic