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 :
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
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.
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 :
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
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.
Existe-t-il une méthode de casting d'objet en Windev ?
Merci pour toute l'aide que vous pourrez m'apporter.
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=19&topic_id=6318&post_id=25031