Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WD8 / POO: au secours !!!!

16 réponses
Avatar
I.G.LOG
Je viens de télécharger la dernière version de WD 8 (814i) et j'ai ntoujours
warnings et plantages sur le code suivant:

// Déclaration
Objet1 est une classe
Designation est une chaine
Fin
Objet2 est une classe
Hérite de objet1
Designation est une chaine // WARNING: membre masque le membre
Designation de Objet1
Fin

// Go
Objet2:Objet1::Designation // j'ai une erreur grave à l'exécution

Sous Windev 5.5, ce code fonctionnait parfaitement. Et je migre le projet
depuis quatre mois !!!
Avez-vous une solution à ce problème sans que je sois obligé de modifier
toutes mes classes ?

PS: quand même pas normal de ne pas pouvoir faire ça. Je vous donne un
exemple "éloquent" d'utilisation:
Articles et Catégories d'articles

// Classe catégorie d'article
Categorie est une classe
Ident est une chaine
Designation est une chaine
fin

// Classe article
Article est une classe
Hérite de Categorie
Ident est une chaine
Reference est une chaine
Designation est une chaine // Warning du compilo
et plante à l'exé
fin

6 réponses

1 2
Avatar
Firetox
Bonjour,

pas la peine il y a une solution .....
je pense que tous cela est du a un petit bug du compilateur windev
mais voic ce qui fonctionne et qui ne met pas de warning

categorie est une classe
Ident est une chaîne
Designation est une chaîne
FIN

Article est une classe
Ident est une chaîne
Reference est une chaîne
Designation est une chaîne

// ICI SI ON MET LE MOT HERITE LE COMPILATEUR FAIT LA VERIF DANS LE BON SENS
// ET NE MET PAS DE WARNING
hérite de categorie
FIN

Voici le test que j'ai fait avec un bouton :

lObj est un Article
lObj:categorie::Designation = "Titi"
lObj:Designation = "Toto"
essai(lObj)


PROCEDURE essai(pObj)

lDesign est une chaîne

Info(pObj:categorie::Designation) // OK on a Titi
Info(pObj:Designation) // OK ! on Toto
lDesign = pObj:categorie::Designation // PAs d'erreur


voila t'as juste a mettre herite a la fin au lieu du debut
plus de probleme de Warning et visiblement l'exe se passe bien
(chez moi)


Bon dev
@+

Firetox
"I.G.LOG" a écrit dans le message de news:
c5j0lh$6qt$
Je vais essayer ça (beaucoup de boulot). Mais je me repete: si ce n'est


pour
accéder aux membres de classe ancetre, a quoi sert donc le double-point


(::)
?
Mon problème n'est pas réglé (du moins simplement).
Merci à tous

"Alain Derome" a écrit dans le message de
news:c5iv1q$t2o$
> Bonjour,
>
> > > > Mais comment modéliser ce concept. (en s'appuyant sur l'expemple
> > Article -
> > > > Catégorie d'article)
> > >
> > > Pourquoi ne pas définir un membre spécifique de la classe héritée ?
> > > (évidemment tu vas devoir remplacer du code...)
> > >
> > > // Classe catégorie d'article
> > > Categorie est une classe
> > > Ident est une chaine
> > > Designation est une chaine
> > > fin
> > >
> > > // Classe article
> > > Article est une classe
> > > Hérite de Categorie
> > > IdentArticle est une chaine
> > > ReferenceArticle est une chaine
> > > DesignationArticle est une chaine
> > > fin
>
> > J'avais bien pensé à ça pour régler le problème. Mais il faut que je
> > modifie toutes les classes !!!
>
> Pour cet exercice de da haute voltige, je vous conseille de renommer les
> 2 membres Designation: DesignationCategorie et DesignationArticle.
> WinDev vous signalera alors les erreurs à la compilation.
>
> Si l'un de ces membres continue à s'appeler Designation, vous risquez de
> détecter vos erreurs seulement à l'exécution ...
>
>
> Amicalement,
>
> Alain Derôme
>
>
>




Avatar
I.G.LOG
Malheureusement après essais, mon problème n'est pas résolu. Le déplacement
des "Hérite" en fin de déclaration résout effectivement le problème sur
l'exemple qui est "simple"; dans mon programme (beaucoup plus "compliqué")
ca plante toujours (mais je n'ai plus les warnings !).
Le comportement est d'ailleurs surprenant. Dans un Info():
Info("toto",pDossier:Ensemble:ArtCat::Designation) // ne plante pas et
affiche la catégorie
Info(pDossier:Ensemble:ArtCat::Designation) // Plantage à
l'exécution
Merci en tous cas

"Firetox" a écrit dans le message de
news:c5j379$81r$
Bonjour,

pas la peine il y a une solution .....
je pense que tous cela est du a un petit bug du compilateur windev
mais voic ce qui fonctionne et qui ne met pas de warning

categorie est une classe
Ident est une chaîne
Designation est une chaîne
FIN

Article est une classe
Ident est une chaîne
Reference est une chaîne
Designation est une chaîne

// ICI SI ON MET LE MOT HERITE LE COMPILATEUR FAIT LA VERIF DANS LE BON


SENS
// ET NE MET PAS DE WARNING
hérite de categorie
FIN

Voici le test que j'ai fait avec un bouton :

lObj est un Article
lObj:categorie::Designation = "Titi"
lObj:Designation = "Toto"
essai(lObj)


PROCEDURE essai(pObj)

lDesign est une chaîne

Info(pObj:categorie::Designation) // OK on a Titi
Info(pObj:Designation) // OK ! on Toto
lDesign = pObj:categorie::Designation // PAs d'erreur


voila t'as juste a mettre herite a la fin au lieu du debut
plus de probleme de Warning et visiblement l'exe se passe bien
(chez moi)


Bon dev
@+

Firetox
"I.G.LOG" a écrit dans le message de news:
c5j0lh$6qt$
> Je vais essayer ça (beaucoup de boulot). Mais je me repete: si ce n'est
pour
> accéder aux membres de classe ancetre, a quoi sert donc le double-point
(::)
> ?
> Mon problème n'est pas réglé (du moins simplement).
> Merci à tous
>
> "Alain Derome" a écrit dans le message de
> news:c5iv1q$t2o$
> > Bonjour,
> >
> > > > > Mais comment modéliser ce concept. (en s'appuyant sur l'expemple
> > > Article -
> > > > > Catégorie d'article)
> > > >
> > > > Pourquoi ne pas définir un membre spécifique de la classe héritée


?
> > > > (évidemment tu vas devoir remplacer du code...)
> > > >
> > > > // Classe catégorie d'article
> > > > Categorie est une classe
> > > > Ident est une chaine
> > > > Designation est une chaine
> > > > fin
> > > >
> > > > // Classe article
> > > > Article est une classe
> > > > Hérite de Categorie
> > > > IdentArticle est une chaine
> > > > ReferenceArticle est une chaine
> > > > DesignationArticle est une chaine
> > > > fin
> >
> > > J'avais bien pensé à ça pour régler le problème. Mais il faut que je
> > > modifie toutes les classes !!!
> >
> > Pour cet exercice de da haute voltige, je vous conseille de renommer


les
> > 2 membres Designation: DesignationCategorie et DesignationArticle.
> > WinDev vous signalera alors les erreurs à la compilation.
> >
> > Si l'un de ces membres continue à s'appeler Designation, vous risquez


de
> > détecter vos erreurs seulement à l'exécution ...
> >
> >
> > Amicalement,
> >
> > Alain Derôme
> >
> >
> >
>
>




Avatar
Romain PETIT
I.G.LOG a exprimé avec précision :
Je vais essayer ça (beaucoup de boulot). Mais je me repete: si ce n'est pour
accéder aux membres de classe ancetre, a quoi sert donc le double-point (::)
?



Pour accéder aux *méthodes* de la classe ancètre...

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Firetox a présenté l'énoncé suivant :

pas la peine il y a une solution .....
je pense que tous cela est du a un petit bug du compilateur windev
mais voic ce qui fonctionne et qui ne met pas de warning



En tout cas ça ne fonctionne pas en WD7.5...

Info(pObj:categorie::Designation) // opérateur :: interdit

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
I.G.LOG
Acces aux méthodes en effet !
Finalement, est-ce un bug de la 8 (et de la 5.5) qui permet d'accéder aux
*membres* de la classe ancetre par :: ?
Je touvais cette fonctionalité interressante dans mon cas

Categorie est une classe
Ident est un entier
Designation est une chaine
fin
Article est une classe
Herite de Categorie
Ident est un entier
Designation est une chaine
fin

info(Art:Categorie::Designation+" "+Art:Designation) -> "Hélice
HZ-87452"

Mais je me trompe peut-etre sur certains concepts de la POO ?

En tous cas merci pour toutes vos suggestions

"Romain PETIT" a écrit dans le message de
news:
I.G.LOG a exprimé avec précision :
> Je vais essayer ça (beaucoup de boulot). Mais je me repete: si ce n'est


pour
> accéder aux membres de classe ancetre, a quoi sert donc le double-point


(::)
> ?

Pour accéder aux *méthodes* de la classe ancètre...

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Frédéric LAMBOUR
Les différences en POO entre WD5.5 et WD7 (entre autre) font que nous ne
pouvons pas migrer.
Nous avons utilisés massivement les (trés bonnes) classes de D. DAUSSY
permettant de gerer des collections d'objet qui ne fonctionne plus sous WD7.



"I.G.LOG" a écrit dans le message de
news:c5h5pj$qnk$
Je viens de télécharger la dernière version de WD 8 (814i) et j'ai


ntoujours
warnings et plantages sur le code suivant:

// Déclaration
Objet1 est une classe
Designation est une chaine
Fin
Objet2 est une classe
Hérite de objet1
Designation est une chaine // WARNING: membre masque le membre
Designation de Objet1
Fin

// Go
Objet2:Objet1::Designation // j'ai une erreur grave à l'exécution

Sous Windev 5.5, ce code fonctionnait parfaitement. Et je migre le projet
depuis quatre mois !!!
Avez-vous une solution à ce problème sans que je sois obligé de modifier
toutes mes classes ?

PS: quand même pas normal de ne pas pouvoir faire ça. Je vous donne un
exemple "éloquent" d'utilisation:
Articles et Catégories d'articles

// Classe catégorie d'article
Categorie est une classe
Ident est une chaine
Designation est une chaine
fin

// Classe article
Article est une classe
Hérite de Categorie
Ident est une chaine
Reference est une chaine
Designation est une chaine // Warning du


compilo
et plante à l'exé
fin




1 2