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 :

Comment tester le fait d'avoir ou non Excel ?


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut Comment tester le fait d'avoir ou non Excel ?
    Je voudrais cacher un bouton si je n'ai pas sur ma machine le programme Excel.
    Pour ce faire, je teste dans un try except, la ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateOleObject('Excel.Application')
    Mon problème est que sur ma machine, cela fonctionne bien mais chez un de mes clients, cela lance l'application Excel.

    Le but en fait est d'être capable de savoir si j'ai l'application Excel sur mon poste ou non.
    Comment puis-je faire ?

    Mon code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
     CreateOleObject('Excel.Application');
    except
     begin
      Bar1_Btn_Excel.Visible := False;
      MonAppli.Bar1_Btn_Excel.Visible := False;
     end;
    end;

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Normalement vous devriez récupérer l'instance de Excel dans une variable de type OleVariant. Dans ce cas tester la validité de la variable (et ne pas oublier le try except au cas où )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
     voExcel: OleVariant;
    begin
      voExcel = CreateOleObject('Excel.Application');
      if VarIsNull( voExcel ) or VarIsEmpry( voExcel ) then
      begin
        // impossible de récupérer une instance d'Excel !!
     
      end;
     
    end;
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Je propose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Var
        ClassID: TCLSID;
    begin 
      if (CLSIDFromProgID(PWideChar(WideString('Excel.Application')), ClassID) <> S_OK)  //  Excel n'est pas installé

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut
    A quoi fait référence TCLSID (uses)?
    Mon delphi me donne "Identificateur non déclaré".

  5. #5
    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 Maglight Voir le message
    A quoi fait référence TCLSID (uses)?
    Mon delphi me donne "Identificateur non déclaré".
    TGUID (uses ActiveX)

    au passage, je trouve ça très bien comme approche
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup pour cette aide.

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Et merci à Paul pour sa louange

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/12/2012, 12h16
  2. Comment tester "vite fait, bien fait" ?
    Par =JBO= dans le forum WinDev
    Réponses: 7
    Dernier message: 06/11/2009, 17h24
  3. Réponses: 3
    Dernier message: 07/10/2005, 09h34
  4. Réponses: 9
    Dernier message: 29/07/2005, 17h03
  5. comment tester si une fonction fait bien son travail
    Par access dans le forum Requêtes
    Réponses: 1
    Dernier message: 24/11/2003, 15h46

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