Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Fehlermeldung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.09.2004, 15:23 Uhr
~Peter
Gast


Kann mir jemand sagen, wieso ich immer eine Fehlermeldung beim Schließen meines Programmes bekomme, wenn ich zwei Kombinationsfelder mit meheren Auswahl -Möglichkeiten erstelle. Zu den Feldern habe ich, wie im Buch erklärt, zwei Variablen erstellt.
Alles funktioniert ansich prima, nur dass beim schliessen immer der Fehler "Debug Assertion Failed". Er verweist auf diese Stelle im Programm:
ASSERT(m_dwRef <= 1);
Was mache ich falsch?
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2004, 15:25 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hast du vielleicht noch ein wenig code dazu so ist das eher lustiges rätselraten...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.09.2004, 10:50 Uhr
~Peter
Gast


Beide Knöpfe, die sich die Variable m_strBandauswahl und m_strKanalauswahl aus dem Kombinationsfeld nehmen sehen so aus:

C++:
void CCMD55GoDlg::OnBandknopf()
{
    UpdateData(TRUE);
    CString strPgmName;
    strPgmName = m_strBandauswahl;
    strPgmName.MakeUpper();
    int handle;
    handle=ibdev(0,1,0,T10s,1,0);

    if (strPgmName == "1800")
    ibwrt(handle,"CONFigure:NETWork:TYPE gsm1800",30);

    if (strPgmName == "900")
    ibwrt(handle,"CONFigure:NETWork:TYPE gsm900",30);
}
void CCMD55GoDlg::OnKanalknopf()
{
    UpdateData(TRUE);
    CString strPgmNam;
    strPgmNam = m_strKanalauswahl;
    strPgmNam.MakeUpper();
    int handl;
    handl=ibdev(0,1,0,T10s,1,0);

    if (strPgmNam == "TCH")
    ibwrt(handl,"CONFigure:NETWork:TYPE TCH",30);

    if (strPgmNam == "PCH")
    ibwrt(handl,"CONFigure:NETWork:TYPE PCH",30);
}


wie gesagt, das Programm läuft einwandfrei, nur das beim Beenden ein Fehler auftritt. Mache ich irgendwo eine Überschneidung? VC++ kann doch mehrere Kombinationsfelder verwalten! Oder gibt es bei zu vielen Variablen und externen Bibliotheken Probleme??
Danke

Dieser Post wurde am 17.09.2004 um 14:32 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.09.2004, 13:05 Uhr
Spacelord
Hoffnungsloser Fall


Wirklich interessant ist die Frage was m_dwRef für eine Variable ist,und wo diese inkrementiert und dekrementiert wird!
Die Assert-Annahme wird ja dadurch verletzt dass m_dwRef grösser als 1 ist.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.09.2004, 13:36 Uhr
~Peter
Gast


Diese Variable habe ich nie ersellt. Ich kann mir denken, dass es eine Variable ist, die VC++ automatisch für sich generiert. Vieleicht kennt ja jemand auch dieses Problem, und kann mir erklären, wie ich es umgehen kann.

C++:
CCmdTarget::~CCmdTarget()
{
#ifndef _AFX_NO_OLE_SUPPORT
    if (m_xDispatch.m_vtbl != 0)
        ((COleDispatchImpl*)&m_xDispatch)->Disconnect();
    ASSERT(m_dwRef <= 1);      
#endif
#ifdef _AFXDLL
    m_pModuleState = NULL;    
#endif
}


An dieser Stelle verweist mich der Debugger zum Fehler in der Zeile wo Assert steht.
Weiss gar nicht was diese Zeilen zu bedeuten haben für mein Programm!

Dieser Post wurde am 17.09.2004 um 14:33 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.09.2004, 14:12 Uhr
Tommix




Zitat von ~Peter:
Diese Variable habe ich nie ersellt.

Nun red Dich mal nicht raus
Von CCmdTarget sind CWnd und damit sämtliche Controls, Knöpfe, Editfelder usw. abgeleitet. Drück mal, wenn Du an der Fehlerstelle bist, Alt-7. Dann siehst Du evtl., wie das Programm da hingelangt ist.

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.09.2004, 14:34 Uhr
~Peter
Gast


Das kommt, wenn ich an der Fehlerstelle Alt7 drücke,sagt mir aber gar nichts.

C++:
CCmdTarget::~CCmdTarget() line 52 + 25 bytes
CWnd::~CWnd() line 766 + 15 bytes
CDialog::~CDialog() line 159 + 15 bytes
CPeterDlg::~CPeterDlg() + 37 bytes
CCMD55GoDlg::~CCMD55GoDlg() + 68 bytes
CCMD55GoApp::InitInstance() line 73 + 28 bytes
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f37, int 1) line 39 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f37, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 77e614c7()


Der Fehler tritt aber direkt auf, wenn ich eine zweite Vaiable für das Kombinationsfld generiere. Sie muß noch nicht mal benutzt werden.
Ich bin Anfänger mit VC++.Aber es kann nicht sein, dass es so viele Probleme bereits bei zwei Variablen gibt. Gibt es denn ne Möglichkeit, das Problem zu umgehen?


Bearbeitung von Windalf:

bitte cpp-tags verwenden


Dieser Post wurde am 17.09.2004 um 15:29 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.09.2004, 15:46 Uhr
Tommix




Zitat:

CPeterDlg::~CPeterDlg() + 37 bytes
CCMD55GoDlg::~CCMD55GoDlg() + 68 bytes


Offenbar in einem der Dialoge etwas nicht richtig freigegeben (daher der Fehler in dtor). Das ist (für mich) aus dem geposteten Code nicht ersichtlich (OLE Vebindung nicht geschlossen?). Wenn Du auf die o.a. Zeilen doppelklickst, springst Du auf die entsprechenden Teile in Deinem Quelltext (das Fenster mit der Aufrufliste mußt Du dann evtl zumachen).
Wenn ich recht verstehe, machst Du was mit OLE. Das ist eventuell für den Anfang ein bißchen viel auf einmal. Mach Dich lieber erst mal mit der Entwicklungsumgebung, insbesondere dem Debugger, vertraut. Ein IMHO für den Einstieg gutes Tut, wenn man C++ in den Grundzügen halbwegs kennt, ist "Visual C++ 6 in 21 Tagen", online hier zu lesen.
Ansonsten müßtest Du ein wenig mehr posten. Speziell was sich hinter "ibdev", "ibwrt" usw. verbirgt. "ibclose" gibt es nicht zufällig?

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: