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

C++Builder Discussion :

Problème avec la création d'un fichier d'aide


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut Problème avec la création d'un fichier d'aide
    Salut à tous,

    Je me suis basée sur le lien suivant pour créer un fichier d'aide pour mon application.

    http://glouise.developpez.com/cbcons...seils2.php#L31

    Quand je compile le fichier Test.RTF dans WinHelp, il est mentionné que j'ai zéro Jumps alors que j'ai deux. J'applique exactement les étapes décrites et ça ne marche pas.

    Je vous envoie le fichier Test.DOC en pièce jointe au lieu de Test.RTF.

    Je porte à votre attention que j'utilise Microsoft Office 2007.



    A bientôt
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Salut, il y a eu un post dernièrement sur ce sujet: http://www.developpez.net/forums/sho...d.php?t=344177

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut,

    Merci Crayon pour le post .

    Je suis en train de faire quelques exemples afin de mieux maitriser HTML Help. Pour l'instant, je ne rencontre pas de difficultés majeures. Dès que j'aurais avancé, je vous contacterai.

    Merci encore.

    A bientôt

  4. #4
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Bonjour à tous,

    pourquoi essayer de s'enfermer dans des systèmes pré-établit qui ne fonctionnent pas toujours, ou qui au bout de plusieurs évolutions informatiques, ne fonctionnent plus. ( Je pense notamment à la migration d'un ancien projet vers une nouvelle version de BCB, à la lecture de la base de registre qui fonctionnait sous Win XP mais qui ne fonctionne plus sous Win Vista ).

    Quoi de plus facile de charger un fichier format TXT par exemple, dans lequel est inséré un système de balises personnel, et de traiter tout cela soit même à l'intérieur de son propre programme ?

    Excusez-moi de ne pas répondre précisément à la question, mais bien souvent je résouds mes problèmes en sortant des sentiers battus, avec mes propres solutions.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut à tous,

    C'est bon, j'ai crée mon fichier d'aide, ça marche impeccablement (merci encore Crayon).

    Le hic, c'est que je n'ai pas su comment le lancer de C++ Builder. J'aimerais, en cliquant sur un bouton Aide lancer le fichier.

    Pour répondre franchement à rtg57: je pense que la meilleure manière de créer un fichier d'aide c'est justement de le construire comme on a l'habitude de le voir, c'est un plus pour le logiciel.

    A bientôt

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Hoopsy:
    Si c'est a partir du programme que tu veu appeler l'aide il faut voir du cote de HelpContext
    Cet exemple utilise une fiche contenant un bouton bitmap. Lorsque l'utilisateur clique sur le bouton, l'écran contenant le numéro de contexte 714 dans le fichier d'aide data.hlp apparaît. Remarquez que l'utilisation de constantes rend le code plus facile à lire :
    const DATANOTFOUND (714)
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
    {
    Application->HelpFile = "data.hlp";
    Application->HelpContext(DATANOTFOUND);
    }
    Remarque : HelpContext suppose l'utilisation de HyperHelp lors de l'écriture d'applications Linux.
    Si c'est pour l'integrer dans Builder 6 il faut faire Help -> Customize dans la boite de dialogue qui s'est ouverte il y a la possibilite d'inserer ou d'oter un fichier d'aide

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut blondelle,

    J'ai essayé votre proposition mais malheureseument ça n'a pas marché .

    Je porte à votre connaissance que je programme en C++ Builder5.

    Voici ce que j'ai fait :
    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
     
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include <htmlhelp.h>
    //-------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //-------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //-------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Application->HelpFile = "C:\Aide\Aide.chm";
    Application->HelpContext(DATANOTFOUND);
    }
    L'extention du fichier d'aide que j'obtiens avec HTML Help Workshop est .chm alors qu'il faut .hlp pour que ça fonctionne avec votre proposition.

    Je ne sais vraiment pas comment faire.

    A bientôt

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    J'ai trouve ca sur le Web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShellExecute(Handle,"open","C:\\Documents and Settings\\blondelle\\Mes documents\\FichierChm\\chmsample\\chmSample\\chmSample.chm",NULL,NULL,SW_SHOWNORMAL);

  9. #9
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Tu as vue ce que j'ai écris ici:
    http://www.developpez.net/forums/sho...3&postcount=21

    J'espère que c'est ce que tu cherchais

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut à tous,

    J'ai essayé les deux propositions.

    Celle de blondelle, marche super bien. Comme je veux lancer l'aide que dans le cas ou je clique sur le bouton Aide, celà me va.

    Par contre pour celle de Crayon, j'ai quelques soucis, notamment dans la déclaration de m_asHelpFile. J'ai essayé de la déclarer comme char, string mais ça n'a pas marché.

    Rien que pour apprendre, j'aimerais bien Crayon que vous m'éclaircissiez ce point.

    Merci blondelle et Crayon de votre aide.

    A bientôt

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Par défaut
    Bonjour

    Pour gérer un fichier d'aide HtmlHelp dans ton progr. il faut inclure au début du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <htmlhelp.h>
    #include "Id_Help.h"    // fichier perso de tes identificateurs des pages  d'aide
    et pour appeler l'aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HtmlHelp (GetDesktopWindow(), "FichierAide.chm", HH_HELP_CONTEXT, IDH_ECRANPRINCIPAL);   // IDH_ECRANPRINCIPAL un des identificateurs

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut orangina,

    J'ai essayé votre proposition mais j'ai une erreur lorsque j'inclus mes pages .

    D'après ce que j'ai compris, je dois inclure toutes les pages qui forment mon aide. L'extension des pages que j'obtiens avec HTML Help Workshop est .htm.

    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <htmlhelp.h>
    #include "Nouveau.htm"
    #include "Ouvrir.htm"
    Si vous avez une idée, j'aimerais bien la connaitre même si j'ai résolu mon problème.

    Bien cordialement.

    A bientôt

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Par défaut
    Bonjour

    Non, il ne faut pas inclure les fichiers html dans ton code !
    Pour chaque page d'aide tu crées un identificateur et tu mets tous ces identificateurs dans un fichier header (Id_Help.h dans cet exemple mais tu lui donnes le nom que tu veux)
    Il contient par exemple :
    #define IDH_PRESENTATION_GENERALE 1000
    #define IDH_INFOS 1001
    #define IDH_CONSEILS 1002
    #define IDH_ECRANPRINCIPAL 1005
    #define IDH_ECRANSECONDAIRE 1006
    etc...

    Ce fichier tu l'inclus dans ton programme ainsi que dans ton fichier d'aide (avec HtmlHelp Workshop tu l'inclus par l'icone HtmlHelp API Information, onglet MAP).
    Avec HtmlHelp Workshop, après compilation de l'aide tu dois avoir un fichier d'extension .chm.

  14. #14
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut orangina,

    Je vous remercie pour vos explications .

    J'ai suivie les étapes que vous m'avez décrites mais je rencontre l'erreur suivante :

    E2188 Expression syntax
    Voici ce que j'ai fait :

    Au départ, je crée un HeaderFile (File1.h) et j'inclue mes pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #define Nouveau
    #define Ouvrir
    #define Logo
    #define Aide
    #define Mettre en veille
    #define Eteindre
    #define Quitter
    #define Se connecter
    #define Envoyer un E-mail
    #define A propos
    Dans mon programme, je fait comme suit :

    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
    22
     
    //-------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include <htmlhelp.h>
    #include "File1.h"
    //-------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //-------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //-------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    HtmlHelp (GetDesktopWindow(), "C:\\Aide\\Aide.chm", HH_HELP_CONTEXT, Logo);
    }
    Dans HTML Help Workshop, je rajoute le File1.h en cliquant sur HtmlHelp API information.

    Est-ce que j'ai bien suivi les étapes ???

    Bien cordialement.

    A bientôt

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Par défaut
    Bonjour
    Problème avec #define. Tes identificateurs n'ont pas de valeur, donc ça ne peut pas marcher.
    #define Nouveau 1000
    etc...
    Pour s'en sortir, il faut aussi connaître la syntaxe de base du langage C ou C++.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Par défaut
    ... Suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define Mettre en veille
    Comme identificateur "Mettre en veille" ça va pas marcher non plus.

  17. #17
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Bonsoir orangina,

    Merci pour votre patience.

    J'ai rajouté les identificateurs comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #define Nouveau 1000
    #define Ouvrir 1001
    #define Logo 1002
    #define Aide 1003
    #define Mettre en veille 1004
    #define Eteindre 1005
    #define Quitter 1006
    #define Se connecter 1007
    #define Envoyer un E-mail 1008
    #define A propos 1009
    Cette fois-ci, j'obtiens une autre erreur qui est la suivante :

    [Linker Error] Unresolved external 'HtmlLelpA' referenced from C:\DOCUMENTS AND SETTINGS\FFFF\BUREAU\EXEMPLE AIDE\UNIT1.OBJ
    Si vous jugez que c'est un peu long à expliquer, n'hésitez pas à me le dire.

    Merci encore.

    A bientôt

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Par défaut
    Bonjour

    HtmlHelpA doit pourtant être reconnue, elle est déclarée dans htmlhelp.h. Attention aux majuscules. Recherche dans ce fichier tu vas la trouver et tu devrais comprendre ce que vient faire ce A à la fin du nom : chercher dans les fichiers .h est parfois très instructif.
    Peut-être faut-il simplement reconstruire (recompiler) tout le projet.

    Le problème c'est que comme beaucoup, j'ai l'impression que tu mets la charrue avant les boeufs. Tu te lances dans un projet sans connaître suffisamment les bases du langage que tu utilises et les bases de la programmation Windows.
    Moi ça ne me gène pas mais je crois qu'une telle façon de procéder est vouée à l'échec : tu vas avoir erreur sur erreur, des erreurs de débutant que tu ne sais pas résoudre sans poser la question ici ou là sur le net, assez rapidement tu risques d'être découragé.

    Une façon plus logique d'apprendre, plus efficace mais beaucoup plus longue est d'apprendre d'abord le langage C++ : tu prends un cours ou un bon bouquin et tu tapes tous les exemples, tu les bidouilles tu fais des essais pour bien comprendre.
    Tu prends ensuite un bouquin sur la programmation Windows, le Petzold et tu fais la même chose.
    Même si ça prend 6 mois ou 1 an (cela dépend du temps que tu as) je pense qu'il faut commencer par ça.
    Ensuite tu reviens à ton projet.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Par défaut
    Suite...

    Tes identificateurs ça ne va toujours pas : il ne peut pas y avoir d'espaces en C++ dans un identificateur donc "Mettre en veille" n'est pas un identificateur.
    Prend Mettre_en_veille. Idem pour les autres où il y a des espaces.
    Regarde dans l'aide de Builder C++, rubrique Guide du langage C++ Builder, Elements lexicaux, Identificateurs.

  20. #20
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut orangine,

    Malgé que j'ai remplacé les espaces de mes identificateurs par "_", ça me donne toujours la même erreur .

    Je reconnais que je ne maitrise pas suffisamment le C++ mais jusqu'à présent ça ne m'a pas créé de difficultés.

    Je vous remercie beaucoup pour votre aide.

    Dès que j'aurai un peu de temps, je dévorerai les livres que vous m'avez indiqués.

    Merci encore.

    Bien cordialement.

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2014, 20h04
  2. Problème avec la création d'un fichier binaire
    Par paclick dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/08/2011, 12h21
  3. Réponses: 1
    Dernier message: 21/01/2009, 17h22
  4. Problème avec la création d'un fichier de controle
    Par bestsuan dans le forum Administration
    Réponses: 10
    Dernier message: 08/09/2008, 03h22
  5. Réponses: 2
    Dernier message: 29/03/2004, 18h29

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