2 pièce(s) jointe(s)
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
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:
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:
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; |
ca marche à la compilation mais ca se plante à l'éxécution
avec le message : 'System.Reflection.TargetInvocationException' s'est produite dans mscorlib.dll