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

Langage Delphi Discussion :

Lancement Office 2010 64 bits avec Delphi


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 243
    Points
    243
    Par défaut Lancement Office 2010 64 bits avec Delphi
    Bonjour,

    Avec DXE, je lance Excel en utilisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateOleObject('Excel.Application')
    Cela fonctionne avec toutes les versions d'office, y compris la 2010 32bits, sauf avec la version Office 2010 64 bits.

    Invalid class string, prodId:Excel.Application
    J'ai remarqué que la clé 'Excel.Application' ne se trouve pas dans la base de registre de Windows avec cette version, tandis qu'elle y est avec Office 2007 64 bits par exemple.

    Qqn a-t-il déjà rencontré ce problème ? Je n'ai pas trouvé beaucoup d'infos sur Internet à ce sujet.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 710
    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 710
    Points : 25 596
    Points
    25 596
    Par défaut
    Normalement un processus 32Bits ne doit pas utiliser une DLL 64Bits, je pense que la règle s'applique aussi à un objet COM !
    Si ce n'était pas le cas, ça pourrait être intéressant !

    En plus, n'oublie pas que la BDR est doublé, il me semble qu'il la BDR 64 Bits et la BDR 32 Bits !
    Possible que Office 2007 64 bits fournissait un objet 32Bits (pour l'interop) que ne fournit plus Office 2010

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 243
    Points
    243
    Par défaut
    Salut Shai,
    Je ne savais pas qu'il y avait un BDR 32 et une 64 bits. Tu as peut-être raison sur le fait qu'Office 2007 64 bits fournissait un objet compatible, je vais essayer de chercher dans cette voie.

    Je laisse le sujet ouvert pour l'instant et continue mes recherches.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 710
    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 710
    Points : 25 596
    Points
    25 596
    Par défaut
    Citation Envoyé par MiJack Voir le message
    Je ne savais pas qu'il y avait un BDR 32 et une 64 bits. .
    C'est ce que j'ai cru lire, je n'ai encore jamais fait de 64bits, mais il semble qu'il y a comme pour les dossiers système un doublon 32 Bits fourni par WOW64 !

  5. #5
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    J'ai voulu faire quelques essais avec Delphi XE2, vu que j'ai Office 2010/64 bits.

    La clause uses est System.Win.ComObj.

    J'ai tapé le code classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
        vMSExcel : variant;
     
    begin
        vMSExcel := CreateOleObject('Excel.Application');
        vMSExcel.Visible := true;
    end;
    Excel s'ouvre un court instant, puis se referme instantanément, et ce, aussi bien en 32 bits qu'en 64 bits.



    Edit : Par contre, Word marche parfaitement, quel que soit le type de compilation. Tiens, tiens...

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 831
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 831
    Points : 13 579
    Points
    13 579
    Par défaut
    Citation Envoyé par CapJack Voir le message
    Excel s'ouvre un court instant, puis se referme instantanément, et ce, aussi bien en 32 bits qu'en 64 bits.
    C'est le principe des interfaces. Lorsque qu'il n'est plus utilisé, l'objet est libéré. Mets ta variable vMSExcel en global et Excel restera ouvert.

  7. #7
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Ah ben oui, suis-je bête.

    Ça marche si je sors la variable de la fonction.

    Mais pourquoi ça marchait quand même avec Word (variable locale ?) ?

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 831
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 831
    Points : 13 579
    Points
    13 579
    Par défaut
    Il y a sans doute 2 applications impliquées dont une qui fait office de serveur automation (qui lance winword et dialogue avec sur un autre principe d'ipc)

  9. #9
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Je vois.

    Bon, sinon, j'ai essayé sous Delphi 2009 et Delphi 2005, et ça marche aussi.

    Donc, à priori, ce n'est pas un problème pour Dephi d'instancier une application 64 bits.

    Erreur non reproductible chez moi.

  10. #10
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Citation Envoyé par MiJack Voir le message
    J'ai remarqué que la clé 'Excel.Application' ne se trouve pas dans la base de registre de Windows avec cette version, tandis qu'elle y est avec Office 2007 64 bits par exemple.
    Tu es sur de ce que tu dis ?
    Pour autant que je sache, Office 2010 est la première version d'Office à exister en 64 bits. Il n'y a pas de version Office 2007 64Bits. Seulement une installation de Office 2007 32 bits sur un environnement 64 bits...

    Normalement un processus 32Bits ne doit pas utiliser une DLL 64Bits, je pense que la règle s'applique aussi à un objet COM !
    Oui, sauf que là c'est de l'Automation !
    En fait, ça dépend comment tu fais appel à ton serveur COM :
    - Si de l'inproc, le code de l'objet COM est exécuté par le processus qui y fait appel. On rencontre donc la limitation : Un processus 32 bits ne peut exécuter que du code 32 bits.
    - Par contre, en Automation, c'est de l'Out-of-process. Le code appelant pilote l'exécution d'un autre processus. L'application utilisatrice n'exécute pas directement le code de l'application pilotée, elle passe par des classes proxy et Windows assure la synchronisation entre les deux processus. Dans ce cas, on peut avoir un client 32 bits et un serveur 64 bits.
    Et pour peut que tu ajoutes un coup de DCOM, l'application pilotée peut même être sur une autre machine...

Discussions similaires

  1. Rotation de bits avec Delphi.
    Par fred61 dans le forum Débuter
    Réponses: 7
    Dernier message: 25/05/2011, 13h57
  2. Lancement d'un programme java avec delphi
    Par isaac1986 dans le forum Langage
    Réponses: 1
    Dernier message: 31/03/2011, 11h50
  3. [2010] Problèmes Microsoft Office 2010 64 bits
    Par francis64 dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 15/04/2010, 09h54
  4. Générer une dll 16 bits avec delphi 7
    Par chtiot dans le forum EDI
    Réponses: 4
    Dernier message: 21/02/2006, 19h50

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