Problem mit _com_error



  • Hallo Zusammen,

    ich habe ein Problem mit einem _com_error. Compilieren funktioniert, beim Ausführen stürzt es ab.

    Ich nutze wxWidgets und mein Quelltext befindet sich in der Funktion des Knopfes:

    Folgender Quelltext:

    HRESULT hr = DcApp.GetActiveObject(_uuidof(Dcad17::Application));
    	DcApp->BringToTop();
    	DcApp->Visible = true;
    	DcDocs = DcApp->Documents();
    	DcDoc = DcApp->GetActiveDocument();
    	DcPts = DcDoc->CmdPoints();
    	double x_start; double y_start; double z_start;
    	wxMessageBox(wxT("Bitte den Startpunkt setzen"));
    	DcPts->GetUserPoint(&x_start,&y_start,&z_start);
            double x[]={0.0,1.5};double y[]={0.0,2.5}; //double z=0.0;
    	SAFEARRAY *PktArray;
    	SAFEARRAYBOUND sab;
    	sab.cElements = 6;
    	sab.lLbound = 0;
    	PktArray = SafeArrayCreate(VT_R8,1,&sab);
    	for (int i=0; i<3; i++)
    		{
    			long j=3*i;
    			SafeArrayPutElement(PktArray,&j,&x[j]);
    			j = j+1;
    			SafeArrayPutElement(PktArray,&j,&y[j]);
    			j = j+1;
    			double z=0.0;
    			SafeArrayPutElement(PktArray,&j,&z);
    		}
    	DcPts->SetCommandPoints(2,&PktArray);
    	DcCurve->Draw();
    	SafeArrayDestroy(PktArray);
    

    Ich vermute einen Überlauf im SAFEARRAY.

    Das sind die Meldungen im Ausgabefenster:

    Eine Ausnahme (erste Chance) bei 0x7c812afb in TestSafeArray.exe: Microsoft C++-Ausnahme: _com_error an Speicherposition 0x0013e80c..
    Der Thread 'RPC-Rückrufthread' (0xf20) hat mit Code 0 (0x0) geendet.
    Eine Ausnahme (erste Chance) bei 0x7c812afb in TestSafeArray.exe: Microsoft C++-Ausnahme: [rethrow] an Speicherposition 0x00000000..
    Eine Ausnahme (erste Chance) bei 0x7c812afb in TestSafeArray.exe: Microsoft C++-Ausnahme: [rethrow] an Speicherposition 0x00000000..
    Eine Ausnahme (erste Chance) bei 0x774dc8ed in TestSafeArray.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00175048.
    Unbehandelte Ausnahme bei 0x774dc8ed in TestSafeArray.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00175048.

    Das ganze dient der Fernsteuerung eines Zeichenprogrammes. Mit Delphi und VB funktioniert es prima.
    Die Beispiele im Developer Handbuch von DesignCAD sind allerdings für C++ Builder 4 und 5, MSVC++ 6 und natürlich VB6 und Delphi usw.
    Ich vermute für die COM-Automation bin ich auf Header aus dem MFC angewiesen. Die habe ich in der Express Edition 2008 nicht gefunden.

    Bin ich einfach nur zu blöd das SAFEARRAY richtig zusammen zu bauen oder fehlt mir eine Header-Datei?

    Bin ich mit meiner Frage hier überhaupt im richtigen Forum?

    Gruß

    zarathus


Log in to reply