000
17.11.2004, 11:13 Uhr
~chullain
Gast
|
Hallo,
ich hab ein Problem, wo ich überhaupt nicht durchblicke, warum es nicht geht...darum wende ich mich an Euch als letzte Hoffnung...
...Also, ich hab eine Hauptklasse CAPIApp, diese bindet zwei Header meiner zwei CRecordset-Klassen ein.
C++: |
n// API.cpp : Legt das Klassenverhalten für die Anwendung fest. //
#include "stdafx.h" #include "API.h" #include "AppsUser.h" #include "DBAnbindung.h" #include "Menue.h" #include "NewUser.h" #include "Disabled.h" #include "Anmeldung1.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////// // CAPIApp
|
Beim Aufruf des Programms wird ein Objekt einer Dialogklasse erstellt, nämlich das Objekt der CKlasse CMenue... Der Header dieser Klasse sieht wie folgt aus: #if !defined(AFX_MENUE_H__DDE39864_8706_4624_8E27_B263FC151DB3__INCLUDED_) #define AFX_MENUE_H__DDE39864_8706_4624_8E27_B263FC151DB3__INCLUDED_
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // Menue.h : Header-Datei //
///////////////////////////////////////////////////////////////////////////// // Dialogfeld CMenue #include "AppsUser.h"
C++: |
nclass CMenue : public CDialog { // Konstruktion public: CMenue(CWnd* pParent = NULL); // Standardkonstruktor CMenue(CDBAnbindung dBConnection, CAppsUser AppsUserTab, ISaGsaRpConnection rPConnection, CWnd* pParent=NULL); // Konstruktor mit Connect-Objekt CMenue(CDBAnbindung dBConnection, ISaGsaRpConnection rPConnection, CWnd* pParent=NULL); // Konstruktor mit Connect-Objekt
ISaGsaRpConnection GetRpConnectionObject(); void SetRpConnectionObject(ISaGsaRpConnection rPObject); CDBAnbindung GetDBConnectionObject(); void SetDBConnectionObject(CDBAnbindung dBObject); CAppsUser GetAppUserConnectionObject(); void SetAppUserConnectionObject(CAppsUser AppUserObject);
|
Diese Klasse ruft wiederum ein neues Objekt der Klasse CAnmledung auf... Hier ist der Aufruf:
C++: |
nvoid CMenue::OnApi() { if (rPConnection.IsConnected()){ rPConnection.Disconnect(); } //Anmeldung api; CDialog::OnOK(); Anmeldung api(CMenue::GetDBConnectionObject(), CMenue::GetAppUserConnectionObject(), CMenue::GetRpConnectionObject(), this); api.DoModal(); delete rPConnection; }
|
Der Header sieht so aus:
C++: |
n#if !defined(AFX_ANMELDUNG1_H__F0F45E00_CD6F_4371_8C5E_C5A1FF2C7495__INCLUDED_) #define AFX_ANMELDUNG1_H__F0F45E00_CD6F_4371_8C5E_C5A1FF2C7495__INCLUDED_
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // Anmeldung1.h : Header-Datei // ///////////////////////////////////////////////////////////////////////////// // Dialogfeld Anmeldung
#include "AppsUser.h"
class Anmeldung : public CDialog { // Konstruktion public: Anmeldung(CWnd* pParent = NULL); // Standardkonstruktor Anmeldung(CDBAnbindung dBAnbindung, CAppsUser AppUserAnbindung, ISaGsaRpConnection rPConnection, CWnd* pParent = NULL); // Standardkonstruktor mit RpConnection-Object Anmeldung(CDBAnbindung dBAnbindung, ISaGsaRpConnection rPConnection, CWnd* pParent = NULL); // Standardkonstruktor mit RpConnection-Object
ISaGsaRpConnection GetRpConnectionObject(); void SetRpConnectionObject(ISaGsaRpConnection rPObject); CDBAnbindung GetDBConnectionObject(); void SetDBConnectionObject(CDBAnbindung dBObject); CAppsUser GetAppUserConnectionObject(); void SetAppUserConnectionObject(CAppsUser AppUserObject);
|
Diese Klasse ruft irgendwann mal die Klasse CMenue wieder auf...
C++: |
nvoid Anmeldung::OnNaechsteSeite() { if (rPConnection.IsConnected()) {
CDialog::OnOK(); CMenue dUI(Anmeldung::GetDBConnectionObject(), Anmeldung::GetAppUserConnectionObject(), Anmeldung::GetRpConnectionObject(), this); dUI.DoModal; delete rPConnection; }else{ CDialog::OnOK(); CMenue dUI(this); dUI.DoModal(); } UpdateData(false); }
|
Mein Sorge ist jetzt erstmal, warum muss ich schon in dem Header der Klassen CMenue und Anmeldung den Header meiner CRecordSet-Klasse "AppsUser" implementieren, obwohl ich es für die CRecordSet-Klasse "CDBAnbindung" das nicht gebraucht habe...
...und, er bricht jedes Mal das Programm ab, sobald ich von der zweiten Dialogklasse "Anmeldung" wieder zurück in die Dialogklasse "CMenue" möchte und gibt mir ein
Zitat von Verfasser: |
nHEAP[API.exe]: Invalid Address specified to RtlValidateHeap
|
zurück
...kann mir jemand helfen?
gruss |