PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Suite MAJ vers 2025 Warnings sur classes anciens RAD CWDTabe par exemple
Suite MAJ vers 2025 Warnings sur classes anciens RAD CWDTabe par exemple
Débuté par KC76, 13 mai 2025 11:25 - 4 réponses
Membre enregistré
132 messages
Posté le 13 mai 2025 - 11:25
Bonjour,

Suite passage 27 vers 2025 j'ai le message suivant sur CWDTable - Constructeur
Warning : L'utilisation d'une méthode ou d'une propriété virtuelle depuis un constructeur est une opération déconseillée.
Le constructeur de la classe dérivée n'a pas encore été exécuté.
CWDTable.Constructeur, Méthode, ligne 17, colonne 2


Ligne Code:
// Exécution d'une requête locale nécessaire ?
:ExecutionRequeteLocal()



J'ai fait une demande au support technique qui m'a dit que c'est lié à une ancienne RAD qui ne doit plus être utilisé depuis la version 10 (oui certainement on a Windev depuis des longues années et ces codes sont présents dans tous mes logiciels, des classes datés de 2001 ou 2002, avant que je sois dans l'entreprise) mais ce qui m'embête qu'ils me disent qu'il faut payer une support. Toute la publicité a toujours dit il suffisait de recompiler dans la nouvelle version.

Est-ce que quelqu'un sait comment on récupère cela aujourd'hui sans refaire toutes les fenêtres de tous mes logiciels? Je suis seule à maintenir 10 logiciels qui font tourner l'entreprise complète (en plus de toute mes tâches admin/server/réseau...)

J'ai pas le warning dans d'autres logiciels, même si le code de de CWDConstructeur est aussi présent et semble identique (peut-être je les ai désactivés ou mon prédécesseur?)

Est-ce que je peux continuer avec mes logiciels ou est-ce que j'ai une grave problème?

De ce que je sache, on a commencé avec Windev 5.5, on est passé à 7; et j'ai terminé de migrer tout en 10 à mon arrivée en 2007 ne connaissant pas Windev avant avec mon prédécesseur qui n'a pas voulu me former. Puis j'ai fait les migrations 14,15,19,22,24,27 avant de passer en 2025. J'ai raté une option de migration importante pour MAJ ces classes? Comment faire maintenant? Il y a des centaines de fenêtres concernées.
Membre enregistré
57 messages
Posté le 13 mai 2025 - 11:42
Bonjour,

Je suppose que vos classes de bases ont un constructeur sans paramètre. Aussi, dans les constructeur de vos classes dérivées, vous avez (rarement) appelé le constructeur de la classe ancètre.

Il me semble que dans les versions précédentes de Windev, nous n'avions pas de Warning à la compilation si nous n'appelions pas explicitement le constructeur de la classe ancètre (ou de la classe de Base). Non nécessaire si la classe hérité a un constructeur sans paramètre.

Mais cette pratique est à éviter. En effet si dans le constructeur de la classe hérité, vous initialisez des variables utiles avant l'appel à la méthode :ExecutionRequeteLocal(), vous aurez un comportement non désiré.
Toutes les méthodes des classes sont virtuelles. Voir dans votre projet, dans "compilation": Classes : les méthodes de même nom sont automatiquement virtuelles".

Comme il s'agit d'un Warning, pas de blocage de la compilation mais a vous de faire l'étude de cette situation qui dans le cadre de bonnes pratiques en POO ne devrait pas exister.

J'espère avoir été clair sur ce sujet un peu "compliqué".
Nous partager un bout de code si vous avez un doute...

Cordialement,
Membre enregistré
132 messages
Posté le 13 mai 2025 - 12:22
Merci,

J'avoue ne jamais avoir trop compris ces choses avec les classes (j'ai du me former sur Windev en arrivant dans l'entreprise sans aide et le peu de formation Windev j'ai fait n'a pas vraiment aidé sur ce point...), mais on a utilisé le Rad pour faire des fiches et tables, et personnellement j'ai bcp utilisé le RAD 11 que j'ai à peu près compris. Depuis c'est vraiment une boite noire pour moi!

Je sais que j'ai des fenêtres effectivement de type cwdtable, cwdfiche dans beaucoup de mes logiciels (difficile à faire l'étude en ce moment, Windev 2025 plantent quand j'essaie de faire des recherches depuis que j'ai touché à ma base de données il y a deux semaines, PCSoft semble avoir du mal à trouver le problème).


gCObjetTable est un objet CWDTable >> par exemple dans les déclarations globales de fenêtre

le code de CWDTable Constructeur semble bien prendre des paramètres
// Entrée: sNomFichier=nom du fichier associé à la table
// sNomCle=nom de la clé de parcours
// sNomTable=nom de la table
PROCÉDURE Constructeur(sNomTable="Table",sCleParcours="")
Constructeur m_clFic({sNomTable,indChamp}..FichierParcouru, {sNomTable,indChamp}..RubriqueParcourue)

J'imagine une fois que je puisse faire des recherches de nouveau je peux faire une recherche sur "constructeur" pour voir si et ou c'est utilisé? et si pas utilisé je peux juste le supprimer?
Membre enregistré
57 messages
Posté le 13 mai 2025 - 16:44
Globalement, réaliser des tests en debug pour vérifier que fonctionnellement vous n'avez pas de régression (fonctions de création, maj et suppression opérationnelles).
Si votre code fonctionne dans une version de Windev < 2025, pas de raison qu'elle ne fonctionne plus une fois recompiler avec Windev >= 2025.

A tester.
Membre enregistré
132 messages
Posté le 19 mai 2025 - 11:34
Bonjour,

Le code fonctionne parfaitement bien effectivement, mais j'ai peur qu'un jour ca ne marchera plus vu l'avertissement.