Bonjour,
Je suis nouveau dans l'environnement Windev, et je suis actuellement en train de tester l'utilisation d'assemblage .NET de la gamme de logiciel ESRI dans Windev.
J'ai ajouté les assemblages dont j'ai besoin dans mon projet Windev via le menu "Atelier->.NET->Utiliser un assemblage .NET dans ce projet". Je peux voir dans la section "Assemblage .NET" de la fenêtre flottante "Projet" les classes ESRI que je compte manipuler.
J'ai écrit une procédure derrière un bouton qui doit me permettre d'utiliser l'assemblage .NET pour me connecter à une source de données.
Voici le code Windev :
La méthode OpenFromFile doit me renvoyer un objet de type WorkspaceClass, mais je reçois un message d'erreur sur la ligne "Info(MyWorkspaceEXPRESS:pathName)" qui doit simplement me donner le répertoire auquel l'objet est connecté qui est une chaîne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 MyFactoryEXPRESS est un WorkspaceFactoryClass dynamique MyFactoryEXPRESS = allouer un ShapefileWorkspaceFactoryClass MyWorkspaceEXPRESS est un WorkspaceClass dynamique MyWorkspaceEXPRESS = MyFactoryEXPRESS:OpenFromFile("D:\Esri BeLux\1516 SIGA 2006\PYL\Internet 2007\arbor2002\",0) IF MyWorkspaceEXPRESS=Null THEN Info("workspace null") ELSE Info(MyWorkspaceEXPRESS:pathName) END
Voici l'erreur : Echec lors de la lecture du champ <PathName> du type <__ComObject>
Je sais que mon objet MyFactoryEXPRESS est bien alloué, car je peux utiliser une méthode de cet objet qui teste si le répertoire que je vais utiliser dans la méthode OpenFromFile est correct. Mais on dirait que lorsque j'utilise la méthode OpenFromFile, l'objet renvoyé dans la variable MyWorkspaceEXPRESS n'est pas du bon type.
Voici une version du code en VB.NET qui fonctionne très bien :
Y a-t-il une manière particulière d'initialiser un objet dans windev à partir de l'appel d'une méthode d'un autre objet (comme c'est le cas ici) ? Je ne peux pas utiliser l'instruction "allouer un" pour mon objet MyWorkspaceEXPRESS parce que le constructeur de la classe WorkspaceClass est protégé. L'objet doit être dérivé d'une autre classe, en appelant une méthode de celle-ci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Dim pWSFClass As WorkspaceFactory pWSFClass = New ShapefileWorkspaceFactory Dim pWSClass As Workspace pWSClass = pWSFClass.OpenFromFile("D:\Esri BeLux\1516 SIGA 2006\PYL\Internet 2007\arbor2002\", 0) If pWSClass Is Nothing Then MessageBox.Show("workspace null") Else MessageBox.Show(pWSClass.PathName) End If
Merci pour toute l'aide que vous pourrez m'apporter.
Partager