.Format( ... ) ???



  • Hallo Leute ;),

    zur Übung setze ich die Aufgaben eines C++ Buches in die MFC um, dabei ist folgendes Problem aufgetaucht.
    Bei dem Projekt handelt es sich um ein SDI RTFView !

    Ich habe eine kleine Klasse geschrieben die das kleine 1X1 ausrechnet und in ein Ergebnisarray (itsResult) in dieser Klasse konvertiere ich dann das Ergebnis Array itsResult das als integer Array initialisiert wurde in ein CString Array um und gebe es zurück !

    Hier der Code :

    class CCalculate
    {
    	private:
    
    	public:
    		CCalculate	(){};
    		~CCalculate	(){};
    
    		int itsResult[101];
    
    		CString *berechne();
    };
    
    CString *CCalculate::berechne()
    {
    	for (int i = 0; i<=10; i++)
    	{
    		for (int j = 0; j <=10; j++)
    		{
    			itsResult[i * j] = i * j;
    		}
    	}
    	CString itsResult[101];	
    	return  itsResult;
    }
    

    Nun deklariere ich in ...Doc.h einen Pointer vom typ CString :

    #if !defined(AFX_SDI_1MAL1DOC_H__3962474E_66C6_4445_A44D_BF384D019A4F__INCLUDED_)
    #define AFX_SDI_1MAL1DOC_H__3962474E_66C6_4445_A44D_BF384D019A4F__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    class CSDI_1Mal1Doc : public CRichEditDoc
    {
    protected: // Nur aus Serialisierung erzeugen
    	CSDI_1Mal1Doc();
    	DECLARE_DYNCREATE(CSDI_1Mal1Doc)
    
    // Attribute
    public:
    
    	CString	*Result; <----------------------------- Deklaration von Result
    

    In ... Doc.cpp binde ich meine Klasse ein erzeuge ein Obkekt und initialisiere den Zeiger Result :

    // SDI_1Mal1Doc.cpp : Implementierung der Klasse CSDI_1Mal1Doc
    //
    
    #include "stdafx.h"
    #include "SDI_1Mal1.h"
    
    #include "Calculate.h" <-------------------- Einbindung der Klasse
    
    #include "SDI_1Mal1Doc.h"
    #include "CntrItem.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // CSDI_1Mal1Doc
    
    IMPLEMENT_DYNCREATE(CSDI_1Mal1Doc, CRichEditDoc)
    
    BEGIN_MESSAGE_MAP(CSDI_1Mal1Doc, CRichEditDoc)
    	//{{AFX_MSG_MAP(CSDI_1Mal1Doc)
    		// HINWEIS - Hier werden Mapping-Makros vom Klassen-Assistenten eingefügt und entfernt.
    		//    Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN!
    	//}}AFX_MSG_MAP
    	// Zulassen der Standardimplementierung für OLE-Container
    	ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_LINKS, CRichEditDoc::OnUpdateEditLinksMenu)
    	ON_COMMAND(ID_OLE_EDIT_LINKS, CRichEditDoc::OnEditLinks)
    	ON_UPDATE_COMMAND_UI_RANGE(ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, CRichEditDoc::OnUpdateObjectVerbMenu)
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CSDI_1Mal1Doc Konstruktion/Destruktion
    
    	CCalculate	Calc; <--------------- Objekt erzeugen
    
    CSDI_1Mal1Doc::CSDI_1Mal1Doc()
    {
    	// ZU ERLEDIGEN: Hier Code für One-Time-Konstruktion einfügen
    
    }
    
    CSDI_1Mal1Doc::~CSDI_1Mal1Doc()
    {
    }
    
    BOOL CSDI_1Mal1Doc::OnNewDocument()
    {
    	if (!CRichEditDoc::OnNewDocument())
    		return FALSE;
    
    	// ZU ERLEDIGEN: Hier Code zur Reinitialisierung einfügen
    	// (SDI-Dokumente verwenden dieses Dokument)
    
    	Result	= Calc.berechne (); <--------- initialisieren
    
    	return TRUE;
    }
    

    In ...View.cpp versuche ich die Ausgabe zu machen :

    void CSDI_1Mal1View::OnInitialUpdate()
    {
    	CRichEditView::OnInitialUpdate();
    
    	CSDI_1Mal1Doc *pDoc =  GetDocument ();
    
    	SetWindowText(pDoc->Result[97]); <------------ Ausgabe der Stelle 97
    
    	// Druckränder festlegen (720 Twips = 1/2 Zoll).
    	SetMargins(CRect(720, 720, 720, 720));
    }
    

    Es passiert jedoch überhaupt nichts 😞 bis einschl. Stelle 97 ab Stelle 98 werden nur sonderbare Zeichen ausgegeben 😞 .
    Ich versuche jetzt schon seit Sunden das Programm ordentlich zum Laufen zu kriegen aber entweder seh ich den Wald vor lauter Bäumen nicht mehr oder irgendwas läuft grundsätzlich schief 😕 😕 🙄 .

    Wäre dankbar wenn ihr mir sagen könntet wie mans richtig macht!

    Vielen Dank für eure Mühe und Hilfe schon mal Vorab 🙂
    ShadowEater 😉


  • Mod

    Versuch noch ein wenig mehr zu lernen.

    1. Du hast
    CCalculate Calc; <--------------- Objekt erzeugen
    nicht im Dokument angelegt. Sondern auf globalen Skope.
    Wenn müsstest Du es innerhalb der class Definition für Dein Document deklarieren.

    2. Wie denkst Du denn das
    CString *Result; <----------------------------- Deklaration von Result
    etwas mit dem Result aus Calc zu tun hat?
    Zudem ist das ein Zeiger, der vermutlich nicht initialisiert ist.


Anmelden zum Antworten