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++ Discussion :

backgroudWorker a faire marcher et Format des paragraphes et des mots sur Word avec Visual Studio


Sujet :

C++

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut backgroudWorker a faire marcher et Format des paragraphes et des mots sur Word avec Visual Studio
    bonjour

    J'ai une solution minimal qui a besoin d'être compilé, mais le code compilait avant sur un autre projet
    J'ai besoin d'éclaircissement sur le backgroundWorker et sur le fomat des paragraphes lus dans le document word.
    le code est dans le Zip joint
    Fichiers attachés Fichiers attachés

  2. #2
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut bonjour
    Ce thread est toujours d'actualité

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Je pense que tu devrais tenter ta chance sur forum spécialisé pour l'api C ou C++ de MS Word.
    Parce qu'ici, c'est loin d'être le cas…

    Bon courage?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut oui mais...
    Sur ces forum on ne peux pas joindre de pièce

  5. #5
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    C'est pour quelle version d'office l'interop World ?

    J'ai compilé le programme avec Visual Studio 2010 et l'interop office 2010. Visiblement c'est pas la bonne version d'office, il ne reconnaît pas certaines valeurs de l'interop (je n'ai pas office mais ça n'empêche pas de compiler).

    Pour le BackgroungWorker, il faut utiliser StartDocAnalysis à l'intérieur du DoWork. S'il y a des paramètres à passer, il faut utiliser RunWorkerAsync(Object^).

    Il y des exemples ici :

    http://msdn.microsoft.com/en-us/libr...undworker.aspx

  6. #6
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut J'ai bien avancé
    bonjour
    Je vous remercie de vos information qui m'ont aidé à avancer
    Je suis parti de l'exemple fibonacci
    et j'ai introduit dans le bon endroit la requète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MainMenue::backgroundWorker1->RunWorkerAsync( ProgressPercentage);
    avec le handler qui est déclarée dans MainMenue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public ref class MainMenue : public System::Windows::Forms::Form
    	{
    	public:
    		MainMenue::MainMenue(void);
    		System::ComponentModel::BackgroundWorker^  backgroundWorker1;
    		SpecificationLoader::CWManager^ objWordManager;
    Mais le compilateur continue a m'insulter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1>..\..\..\..\Linguistic\WordReader\src\WordManager.cpp(272): error C2227: la partie gauche de '->RunWorkerAsync' doit pointer vers un type class/struct/union/générique
    1>
    J'ai pourtant déclaré le handler en public.
    Que dois je faire pour arrêter les insultes.
    pour les verisonde word je vous renvoie au thread http://social.msdn.microsoft.com/For...5-0cf47f053692

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    backgroundWorker1 n'est pas un objet static ou la syntaxe managé est particulière à ce niveau ??

    Si c'est ça, je suis quasiment sûr de te l'avoir déjà fait remarqué sur le forum C++/CLI.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Ah bon
    Et la réponse?

  9. #9
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Normalement ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    backgroundWorker1->RunWorkerAsync( ProgressPercentage);
     
    ou
     
    this->backgroundWorker1->RunWorkerAsync( ProgressPercentage);

  10. #10
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut ca ne marche pas
    J'ai essayé les syntaxes que vous proposez:
    La première n'est pas accepté par le compilateur qui dit ne pas connaitre backgroudWorder1 bien que la déclaration soit dans les includes.
    la deuxième est réservée au cas ou vous êtes dans la classe.
    Dans mon cas le backgroundWorker est dans la classe MainMenue et est appelée par la classe WordManager

  11. #11
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    On n'a pas le code de la ligne qui ne compile pas, ni de son contexte proche, donc, on ne peut pas t'aider.

    Ca sent le private mal venu, ou autre
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  12. #12
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut le code de la methode de word et la déclaration du backgrounder
    je donne le code de la méthode: erc est un type qui signifie unsigned long long

    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
    23
    24
    25
    26
    27
    28
    29
     
                    erc CWManager::StartDocAnalysis( long ulNbWord)
    		{				
    			CBloc* pBloc;
    			erc ulTotalNbWords = 0;
    			Word::Paragraphs^ objParagraphs = objDocument->Paragraphs;
    			for each( Word::Paragraph^ objParagraph in objParagraphs)
    			{
    				System::String^ wsText = objParagraph->default->default;
    				// Récupérer les informations de Layout
    				// Word::Paragraph::Format::ParagraphFormat^ Format = objParagraph->Format->ParagraphFormat;
    				Object^ Style = objParagraph->Style;
    				const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni( wsText)).ToPointer();
    				pBloc = new CBloc;
    				pBloc->wsBlocText.append( chars);
    				Marshal::FreeHGlobal(IntPtr((void*)chars));
    // CSchedulerGlobal::AnalyseBlocText(CBloc* pBloc)
    				// appeler SchedulerGlobal pour traiter le paragraph.
    				ulTotalNbWords = objSchedulerGlobal.AnalyseBlocText( pBloc, ulTotalNbWords);
    				// il faut appeler le backgroundWorker1_ProgressChanged( System::Object^ sender, ProgressChangedEventArgs^ e)
    				erc ProgressPercentage = 100 * ulTotalNbWords / ulNbWord;
    				// e->ProgressPercentage = ProgressPercentage;
    				// void MainMenue::backgroundWorker1_ProgressChanged( System::Object^ sender, ProgressChangedEventArgs^ e)
    				// backgroundWorker1->RunWorkerAsync( numberToCompute );
    				MainMenue::backgroundWorker1->RunWorkerAsync( ProgressPercentage);
    			}
    			CloseDocument();
    			return( 0);
    		}
    quant à l'appel il est dans l'autre classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public ref class MainMenue : public System::Windows::Forms::Form
    	{
    	public:
    		MainMenue::MainMenue(void);
    		System::ComponentModel::BackgroundWorker^  backgroundWorker1;
    		SpecificationLoader::CWManager^ objWordManager;

  13. #13
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Il n'est pas possible d'utiliser une variable non statique d'une classe vers une autre, du moins dans votre situation.
    Il faut passer cette variable en paramètre par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    erc CWManager::StartDocAnalysis(System::ComponentModel::BackgroundWorker^  backgroundWorker1, long ulNbWord)
    		{
    Du coup backgroundWorker1 peut être déclaté private avec d'autres, c'est plus c++ compliant (voire encapsulation/boîte noire).

  14. #14
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut ca marche à la compilation mais ca se plante à l'éxécution
    avec le message : 'System.Reflection.TargetInvocationException' s'est produite dans mscorlib.dll

  15. #15
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Serait-il possible de fournir le projet.

    C'est trop vague comme description.

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Quel est ton niveau en C++ ? CLI ? En développement de manière générale ?
    Je trouve qu'il te manque des notions de conception, et la lecture d'un cours à ce sujet semble nécessaire.
    Clairement ton code fait penser à des essais et "par chance ça compile". Mais forcément ça crash.
    Tu veux accéder à une variable membre non static sans instancier d'objet.
    D'où vient maintenant le paramètre apparu par magie ?

    Ton exception d'après Google est http://support.microsoft.com/kb/828991

    Ton problème est avant tout un problème d'architecture, conception et logique amha.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/11/2011, 11h38
  2. Faire des liens vers des fichiers EPS et JPEG sur un CD-Rom
    Par arimedia dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 18/07/2009, 21h05
  3. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  4. Comment faire des camemberts/histogrames avec visual studio 2005
    Par uriel0105 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 18/06/2007, 09h39

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