IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Générer du code par code, quelqu'un a déjà réussi ?


Sujet :

WinDev

  1. #1
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut Générer du code par code, quelqu'un a déjà réussi ?
    Bonjour,

    Une des plus grosses limites de Windev, pour moi, est le fait que les tout les fichiers de code sont en format propriétaire et qu'il est donc impossible soit d'y accéder soit d'en créer automatiquement. Les 2 problèmes principaux sont impossibilité d'utiliser un gestionnaire de source tiers qui soient capable de réconcilier à la ligne de code et impossibilité de générer du code automatiquement.

    Quelqu'un a t'il réussi, par un accès direct au dll de Windev, à lire ou d'écrire un fichier de classe par exemple ? (.wdc)

    Je cherche une piste pour pouvoir actuellement créer des classes par code.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  2. #2
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 723
    Points : 627
    Points
    627
    Par défaut
    Je ne sais pas si c est que tu cherches, mais il y a la fonction Compile pour créer du code à la volée.

    Olivier

  3. #3
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Il y a aussi la fonction ExécuteCode() qui permet d'exécuter du code placé dans une chaîne de caractères.
    A voir suivant ce que tu veux faire...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je connais la fonction Compile et n'avais pas vu la fonction ExecuteCode qui est apparu en 17. J'utilise principalement la 16. Je viens de re-tester les 2 et cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    code est une chaîne
    code = [
    	cTest est une classe
     
    	FIN
     
    	PROCEDURE Constructeur()
     
    	PROCEDURE Destructeur()
     
    	PROCEDURE GLOBAL _hello()
    		renvoyer "hello"
    ]
     
    res est une chaîne = Compile("_test", code)
    SI res <> "" ALORS
    	Erreur(ErreurInfo() + ": " + res)
    FIN
     
    ExécuteCode(code)
    Ci dessus, exemple de ce que j'aimerais pouvoir faire: déclarer une classe par code.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    Bonsoir,

    Peut être en utilisant Externe plus fichier texte, mais je ne sais pas si l'on peut déclarer de nouveaux objets dans le fichier.

  6. #6
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Malheureusement cela ne fonctionne pas.

    En mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cTest est une classe
    	str est une chaine
    FIN
    dans un fichier classe.wl, en déclarant l'utilisation par j'ai ce message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	Erreur :Fichier externe 'classe.wl', ligne 1 :*Une classe ne peut pas être déclarée en dehors d'un code de déclaration de classe.
    	TestDivers, Initialisation, ligne 1, colonne 9
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  7. #7
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Bonjour,

    une des plus gros problèmes en windev est de travailler avec les limites imposées par Windev... donc d'adapter se pensée aux possibilités existantes.

    En attendant de trouver une façon de créer une classe avec une compilation dynamique (ce qui ne doit pas exister non plus dans pas mal de langages compilés) peut être arriverons nous à te trouver une solution alternative.

    Pour quelle raison veux tu faire cette classe ?

  8. #8
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Le but étant de réaliser un mini ORM qui me génère les classes et le code correspondant à la structure de mes tables.

    Ceci avec des propriétés et chaque propriété en fonction du type de la valeur qu'elle gère doit appeler des méthodes différentes.

    Ex : un relation 1-N, je créer dans la classe coté 1, une variable qui me gère la collection correspondante au coté N
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  9. #9
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Ok compris.
    mais même en java on ne fait pas de classes dynamiques.
    Pour ton ORM tu définis une classe abstraite par exemple "ormFichier" dont un membre est une collection d'une autre classe abstraite per exemple "ormRubrique" Ensuite tu peux créer une interface pour tes opérations basiques de CRUD.
    La seconde étate est de créer des classes en fonction du type de tes rubriques
    qui héritent de "ormRubrique".
    La troisième étape est de créer des classes qui correspondent à tes objets et qui s'appuient sur une ou plusieurs tables de ta base.
    C'est là que l'architecture de tes classes va légèrement différer du schéma de ta base pour donner l'illusion d'une gestion "objet" de tes données.

    Mais globalement tu ne dois pas écrire de classes dynamiques.

  10. #10
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Merci pour cette réponse mais je sais que je peux écrire toutes les classes à la main !!

    Le but étant de générer les classes à partir du schéma de la base de données pas de saisir manuellement tout les champs de toutes les classes (ou de les générer partiellement quand Windev y arrive) et de plus faire autant de clic pour générer toutes les propriétés servant d’assesseur à mes membres que je désire privé.

    Le but étant que l'outil me génère les classes correspondantes à mes tables et que moi, l'utilisateur de ces classes, héritent de ces classes générés automatiquement.

    Il n'est pas question de faire un mapping complexe, je cherche juste à avoir un mini orm qui me mappe mes tables vers mes classes.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 552
    Points : 1 193
    Points
    1 193
    Par défaut
    Bonjour,

    Hélas, ce n'est pas dans la politique de PCSOFT d'ouvrir son code
    De même qu'instancier des fenêtres, boutons ou n'importe quel objets graphique...

    Les seules portent qui nous sont possible c'est les champclone() (et pas de fenêtreclone()) et compilation dynamique.

    Tous les fichiers restent propriétaire et la génération de code n'est pas possible sans passer par eux.
    En effet moyennant finance, PCSOFT m'a fourni des collections de procédure et classe en partant de fichier texte que j'ai généré...

    Donc si vous voulez vraiment mettre au point votre ORM, à la rigueur, faire un projet qui génère les classes et méthodes comme il le faut dans un fichier .txt et payer PCSOFT pour qu'ils transforment le tout... à chaque utilisation...

    PS : le mode dégradé que j'imagine, c'est de faire un projet à part qui attend en paramètre un .wdd et qui génère le tout dans un fichier texte... et en avant le copier/coller dans le projet final....

  12. #12
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    La description UML automatique permet de générer des classes automatiquement avec votre ananlyse.
    1 fichier de l'analyse => une classe avec les membres correspondant à vos rubriques.

  13. #13
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Les membres sont publics et les propriétés ne sont pas déclarées.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  14. #14
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Citation Envoyé par Ry_Yo Voir le message
    ..PS : le mode dégradé que j'imagine, c'est de faire un projet à part qui attend en paramètre un .wdd et qui génère le tout dans un fichier texte... et en avant le copier/coller dans le projet final....
    Le copier/coller j'y avais pensé, mais malheureusement on ne peut pas coller de définition de procédure, propriété, il faut d'abord créer la procédure et/ou propriété et ensuite coller le code.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  15. #15
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Pour être tout à fait complet :
    l'utilisation du module UML de Windev est un peu... bancale.
    Donc pour réaliser cette manip le mieux est d'ouvrir un nouveau projet.
    de copier ton analyse dans ce projet
    de générer ton diagramme de classe à partir de ton analyse
    de générer automatiquement tes classes
    et de ré-importer les classes créées dans ton projet de départ
    ceci afin d'éviter les modifications automatiques et abusives entre
    analyse<=>UML<=>classes.

    Mais effectivement ça marche et cela évite quelques heures d'écriture fastidieuse de classes quand on a déjà une grosse analyse.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2009, 09h36
  2. [AWT]Générer un ActionEvent par code
    Par willowII dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 02/04/2006, 20h31
  3. Retirer une clé primaire par code
    Par Arrown dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2004, 15h15
  4. [VCL] Scroller un contrôle par code
    Par sbeu dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/03/2004, 10h39
  5. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo