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

Lazarus Pascal Discussion :

Problème d'affichage d'une fiche à partir d'une DLL


Sujet :

Lazarus Pascal

  1. #21
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Ben oui car ma dll propose une "simple" procédure pour demander l'affichage de la TForm qu'elle a créée. Ma dll gère tout (de la création à l'affichage), ne propose pas une variable de type TForm à mon exe qui lui appellerait la procédure ShowModal... C'est ce cas qui est dangeureux.

    Tout à fait et cela vient de Lazarus qui ne sait pas créer correctement une dll qui intègre des éléments graphiques qui vont être affichés...
    Il n'y a pas de solutions de contournement tant que l'équipe de développement de Lazarus ne l'aura pas pleinement appréhendé (car ce n'est pas simple) et corrigé.


    Créer la TForm dans la dll et retourner la variable TForm à l'exe qui lui en appellera ses différentes méthodes (ShowModal par exemple).

    Tant que ta dll ne transmet pas à ton exe des objets pour lesquels il appellera directement les méthodes, cela fonctionnera...
    --
    Philippe.
    Philippe : je ne fais que ce que tu dis .

    Cordialement.

    Pierre

  2. #22
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Attention : ce code est celui que j'avais mis en oeuvre pour répondre à une question de Tourlourou dans le message #6. Je conçois que cela ne marche pas.

    Ce n'est pas ce que je fais normalement. Je n'appelle pas depuis mon exe des fonctions du TForm de ma DLL. Depuis mon exej j'appelle une fonction de la Dll qui elle, appelle les fonctions de son propre TForm. Voir le zip du rapport de bug 20320

    Donc, soyons clair : je ne partage pas de fonctions de composants appartenant à la dll et/ou à l'exe. Chacun appelle ses "propres" fonctions.

    Dans ces conditions, je ne vois pas l'utilité de l'interface. Ou alors je n'ai strictement rien compris (ce qui est largement possible ).

    Cordialement.

    Pierre
    Au temps pour moi, j'ai pris la conversion en cours de route

    par contre je n'ai pas pu tester ton code...ce doit être une erreur à la con, mais je n'ai pas suffisamment l'habitude de Lazarus pour savoir ce que c'est

    Hint: Start of reading config file D:\lazarus\fpc\2.2.4\bin\x86_64-win64\fpc.cfg
    Hint: End of reading config file D:\lazarus\fpc\2.2.4\bin\x86_64-win64\fpc.cfg
    Free Pascal Compiler version 2.2.4 [2009/10/26] for x86_64
    Copyright (c) 1993-2008 by Florian Klaempfl
    Target OS: Win64 for x64
    Compiling MyDLL.lpr
    Compiling Fntr.pas
    Compiling resource C:\Users\Execute\Downloads\TestDLL\Fntr.lfm
    Error!
    Wrong extension given for source file - must be RC or RES
    RES file not made
    Fntr.pas(35,1) Error: Error while linking
    Fntr.pas(35,1) Fatal: There were 1 errors compiling module, stopping
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #23
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Au temps pour moi, j'ai pris la conversion en cours de route

    par contre je n'ai pas pu tester ton code...ce doit être une erreur à la con, mais je n'ai pas suffisamment l'habitude de Lazarus pour savoir ce que c'est
    Je viens de télécharger mon zip placé dans le rapport de bug 20320, puis j'ai compilé les deux parties (l'exe et la dll) : pas de problème de compilation.

    Je travaille avec lazarus 0.9.30 et fpc 2.4.2. est-ce peut-être ta version 2.2.4 qui pose problème ???

    Cordialement.

    Pierre

  4. #24
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    c'était peut-être un pb 64bits, je viens de passer avec la dernier version 32bits et ça fonctionne..

    quand à ton code il suffit d'ajouter un Application.Initialize avant la création de TForm1 (dans la DLL donc) pour que ça fonctionne
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #25
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ... quand à ton code il suffit d'ajouter un Application.Initialize avant la création de TForm1 (dans la DLL donc) pour que ça fonctionne
    Grâce à cette petite instruction "Application.Initialize", mon projet qui prenait l'eau, revit. Je t'en remercie pleinement .

    Pour autant, ce n'est pas au hasard que tu as ajouté cette instruction. Je viens de lire la doc de DELPHI 6 où il est dit :

    "Elle appelle le pointeur de procédure InitProc. Par défaut, l'appel de la méthode Initialize d'une application ne fait rien, car le pointeur InitProc par défaut vaut nil."

    Elle ne fait rien, mais elle a tout fait. As-tu une explication.

    NOTA : je n'ai fait le test que sous Windows car, pas plus tard qu'hier, un plantage de Lazarus (sur ces problèmes) m'a provoqué un plantage de Ubuntu et un redémarrage à chaud à provoqué le plantage du lanceur dualboot. Je te tiendrai au courant quand j'aurai réparé tout cela.

    Cordialement.

    Pierre

  6. #26
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    et bien sous Delphi 6 en effet elle en fait pas grand chose...c'est très différent sous Lazarus ou elle fait un tas de choses, et sans doutes des choses indispensables à TForm1

    je ne me suis pas réellement posé la question en fait, j'ai juste constaté que cette méthode est invoquée dans un DPR classique et là non, j'ai testé, ça a marché
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #27
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Paul TOTH Voir le message
    quand à ton code il suffit d'ajouter un Application.Initialize avant la création de TForm1 (dans la DLL donc) pour que ça fonctionne
    Alors là, je dis : Chapeau bas, Paul !
    Et oui sous Delphi, ce n'est pas utile d'autant plus que la procédure Initialise ne fait qu'appeler la procédure InitProc si elle est implémentée, ce que je n'ai que très rarement vu et utilisé aussi... Mais nous sommes sous Lazarus.
    Et contrairement à toi, je n'ai pas poussé le raisonnement plus loin !
    Alors, je me permets de rajouter :

    --
    Philippe.
    Philippe.

Discussions similaires

  1. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  2. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  3. [Lazarus] Créer des fiches à partir d'une fiche modèle
    Par Louis Griffont dans le forum Lazarus
    Réponses: 4
    Dernier message: 19/03/2009, 13h10
  4. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  5. Réponses: 5
    Dernier message: 22/05/2008, 14h42

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