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

Delphi Discussion :

Utiliser une DLL Delphi sous PHP/Apache


Sujet :

Delphi

  1. #1
    Futur Membre du Club Avatar de JauneLoke
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Utiliser une DLL Delphi sous PHP/Apache
    Bonjour à tous,

    Je travail pour une société développant un logiciel sous Delphi 7.
    Mon but est de reproduire le logiciel Delphi en Web(php7, Apache) dans un environnement windows.

    Une partie du logiciel est intégralement développée en language web, mais une autre partie requiert un travail effectuée par Delphi.

    Ma première hypothèse serait d'utiliser cette bibliothèque : https://edn.embarcadero.com/article/39531

    1. Est-il possible de charger une DLL(graphique) et de l'afficher dans le navigateur? Si oui, par quel moyen?
    2. Est-il possible d'envoyer des données à une DLL en php et de récupérer la ou les valeurs retournées? Si oui, quel est la méthode, le composant Delphi le plus efficace pour parvenir a mes fins?


    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    le but serait de faire quelque chose comme ça https://www.cybelesoft.com/blog/runn...n-web-browser/ ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 456
    Points : 24 868
    Points
    24 868
    Par défaut
    il y a 10 ans
    Un programme Delphi lançait PHP.EXE pour lancer des scripts d'import mais le PHP ne pouvait pas reprendre toute la complexité de manipulations des tables, il ne faisait qu'un travail préliminaire de transformation de différents format vers une structure unifiée.
    Le PHP via GetActiveOLEObject récupérait un objet contenu dans l'EXE, cela lui octroyait donc un point d'entrée pour appeler des bouts de code (en fait la partie complexe de l'import) pour insérer dans les tables les données à partir de sa structure unifiée.

    Derrière, il y avait un mécanisme d'échange asynchrone de données via un FileMapping\Mutex\Event mais chaque programme créait leur propre instance de l'objet via un CreateOLEObject, c'était nettement mieux pour la gestion des threads, surtout que c'est Delphi qui lançait PHP.exe en ligne de commande et chopait ses Pipes, avec GetActiveOLEObject c'était très lent car le PHP dépendait du Thread Delphi qui passait son temps à attendre des données des pipes, dans un cas plus simple, le GetActiveOLEObject serait tout à fait utilisable pour partager le même EXE entre plusieurs thread PHP



    Il y a tellement d'approche possible
    Si c'est juste des données, un Server DataSnap REST serait l'approche la plus propre
    Si c'est graphique, cela se corse,
    Si c'est graphique mais juste une image, on peut revenir à un Server DS REST avec un échange d'image en Base64
    Si c'est graphique mais de l'IHM avec interaction utilisateur, voir ce que propose SergioMaster ... il y a 15 ans, Internet Explorer règnait et l'on avait la possibilité d'utiliser un ActiveX pour enrichir sa page, c'est devenu tout ça un gros mot comme le FlashPlayer

    Delphi 7, il est peut-être temps de l'oublier de repenser votre logiciel si vous vous tournez vers du Web avec une architecture N-Tiers : SGBD + Serveur Métier + Server Présentation + Client JS
    Par exemple
    FireBird + DataSnap + PHP + ReactJS
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    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
    la question n'est pas très claire, c'est du web ou ça n'en est pas ?! ... de quoi est responsable la partie Delphi ?

    en PHP il est possible de lancer un programme et de retourner son résultat (façon CGI)

    en PHP on peut facilement interroger un WebService Delphi

    dans mes derniers développements Web, j'ai toute l'application en Javascript avec un accès à Delphi uniquement pour interroger une base de données, l'application me retournant du JSON....l'application est totalement indépendant du serveur du coup, et en fait je pourrais reproduire le WebService avec n'importe quel autre langage si besoin était.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Futur Membre du Club Avatar de JauneLoke
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses,

    Pour être plus précis, le logiciel en question est intégralement développé en Delphi 7. Le site web est une "copie conforme" du logiciel et n'a en aucun cas pour objectif de le remplacer.

    Le SGBD est soit sous Firebird 2.5 ou SQL Server selon les clients.

    J'ai déjà développé une partie du logiciel en PHP/Apache... Avec lequel je peux me connecter soit à Firebird soit à SQL Server.
    Le logiciel Delphi génère un fichier de paramètre au format XML qui est ensuite récupérer par mon site en intranet pour les options des deux systèmes.

    Le logiciel Delphi est installé chez les clients sur chaque poste ou en TS, chez chaque client il y a un des deux formats de SGBD leur serveur.
    Mon site sera en intranet chez les clients et le serveur Apache sera installé sur le même serveur hébergeant déjà le SGBD respectif.

    Reproduire l'intégralité du logiciel en Web serait possible bien que demandant un temps considérable.

    Mon patron souhaite donc soit :
    1. Charger des DLL(graphique) hébergées sur le serveur au travers d'une page web sur le poste du client (je suis sceptique sur cette hypothèse)
    2. Télécharger un micro programme contenant les DLL sur le poste du client lors de sa première connexion (viable et déjà testé bien que contraignant sur certains aspects)
    3. Une solution viable selon moi serait d'interagir avec le logiciel installé sur le serveur afin de récupérer/envoyer du texte, tableau pour ensuite les afficher dans le web...

    Quel est la meilleure hypothèse selon vous et surtout le meilleur moyen d'y parvenir?

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    L'option 3 n'est ni plus ni moins que la solution REST/Datasnap
    L'option 2 plus ou moins le Multi-tiers (un programme serveur , un programme client, une communication REST, pas de php)
    mais avec D7, REST c'est loin d'être du gâteau.

    Marrant personne n'a songé à une solution Intraweb, d'un autre temps mais complètement D7 "compatible"
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Futur Membre du Club Avatar de JauneLoke
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Pour la solution 2, l'idée serait d'utiliser le minimum de DLL Delphi afin que le client n'ai pas à télécharger 20Go de DLL bien qu'il soit en IntraWeb, d'ou l'intérêt de conserver PHP.

    Et selon toi, existe-t-il une solution réaliste pour charger des bouts de programme(graphique) stockée sur le serveur en Delphi directement sur le navigateur du client?

  8. #8
    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 JauneLoke Voir le message
    Pour la solution 2, l'idée serait d'utiliser le minimum de DLL Delphi afin que le client n'ai pas à télécharger 20Go de DLL bien qu'il soit en IntraWeb, d'ou l'intérêt de conserver PHP.

    Et selon toi, existe-t-il une solution réaliste pour charger des bouts de programme(graphique) stockée sur le serveur en Delphi directement sur le navigateur du client?
    je ne comprend pas cette histoire de DLL graphique, ça ne veux rien dire...et non une page web ne peux pas pas charger de DLL. Il fut un temps ou il était possible de créer un ActiveX qui n'est rien d'autre qu'une application Windows (Delphi par exemple) qui se charge dans une page web, mais cette technologie est obsolète et n'est plus supporté par Edge.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    une solution réaliste pour charger des bouts de programme(graphique) stockée sur le serveur en Delphi directement sur le navigateur du client?
    déjà je ne suis pas un spécialiste mais si on parle de "navigateur client", de programme Delphi 7 je pense en premier à
    Citation Envoyé par SergioMaster Voir le message
    à une solution Intraweb
    Je voulais dire "Indy Intraweb"
    1 - le graphisme dans ce cas c'est du HTML
    2 - le programme c'est un programme delphi et uniquement sur le serveur
    seul inconvénient : un port à ouvrir

    Bien sûr maintenant il y a de meilleurs outils (i.e TMS WEBCore)

    Moi quand on me parle de DLL Graphique Delphi ça me gratte
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Futur Membre du Club Avatar de JauneLoke
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Quand on parle de charger du Delphi en web ça me gratte..

    Vous avez confirmer mes différentes hypothèse, merci à vous.

  11. #11
    Futur Membre du Club Avatar de JauneLoke
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Je reviens sur ce sujet pour conclure si d'autres personne sont également concerné par ce problème.

    La meilleure solution est une communication via une API/REST avec un transfert de données au format JSON/XML.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une dll delphi en C#
    Par sgign dans le forum C#
    Réponses: 1
    Dernier message: 13/04/2012, 14h08
  2. Utiliser une DLL Matlab sous Delphi
    Par airefrais dans le forum Langage
    Réponses: 4
    Dernier message: 24/07/2009, 10h16
  3. [.NET] utiliser une dll c++ sous excel
    Par ooxoo dans le forum VC++ .NET
    Réponses: 7
    Dernier message: 04/04/2008, 09h43
  4. Utiliser une DLL Delphi avec C#
    Par h8ciz dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/09/2007, 16h46
  5. Réponses: 1
    Dernier message: 18/07/2006, 16h44

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